2025年 新入社員ブログ 篠原06 [あれから8か月]

2025年4月入社の篠原です。

6回に分けて、今までの業務で学んだことや自分のことについて紹介します。今回はその6回目になります。見ていただけると嬉しいです。

今回は入社から8か月経って思ったことについてご紹介します!

社会人になって

私はこれまで学生として過ごしていたので、そんな私が社会人としてこれから過ごしていけるか不安で、特に業務をこなせるかどうかや、これからお世話になる方々に迷惑がかからないかなど様々な不安がありました。

実際に入社した当初も、入社初日は入社式、1週間後には外部研修が始まり、慣れないことばかりだったのでずっと不安な状態でした。
でも今は不安な要素はなくなりました。現在携わっている業務も、難しいことはたくさんありますが、なんとかやっていけていると思っています。私がそう思えたのも、周りの方々が支えてくださったおかげです。

これからも恩返しの意味も込めてしっかりと貢献できるように頑張りたいです!

変わったこと

私が入社したときと現在で比べて、一番変わったのはLaravelを使ったコードの書き方がかなり理解できたことや、JavaScriptなど、技術的な部分に関する知識が多く身に付いたことです。

研修でLaravelを学んでいた時に比べるとすごく成長しているのを実感していて、例えばとある処理を実装したいとなった時に、当時は調べたものの中にある関数やその中に出てきた言葉の意味も調べる必要がありました。
それに対して現在は、関数や言葉の意味も少しずつ分かってきて、悩む時間が減ったのをとても実感しています。

まとめ

これまで6回に分けてブログを書かせていただきましたが、改めて今までの自分を振り返ることができたのでよかったです!
特に専門学校でプログラミングを学び始めてから今に至るまで、すごく成長したことが分かりました!
これからもこの若きプログラマーを見守っていただけると嬉しいです!

今回のお話はここまでです!
最後までご覧いただきありがとうございました!

新入社員ブログ 斎藤04[PHPUnitについて]

25年度入社の斎藤です。

 クラスやメソッド単位での動作を保証するために行う、単体テストというものがあります。今回は、テストコードを記述することで単体テストを自動化する機能をもつPHPUnitについて、Laravelのwebアプリケーションへの導入方法と使い方を簡単に説明しようと思います。

PHPUnitの導入方法

 Laravelを導入している場合、phpunitは標準でインストールされているため、特にインストール操作は必要ありません。

テストコードの作成

 PHPUnitでの単体テストは、テスト対象となるクラスとテストコードを1対1の関係で作成していきます。

Laravelプロジェクトフォルダ内で以下のコマンドを打つことで tests/units 配下に単体テストファイル(Sample_Test)を作成できます。

作成できたテストファイル tests/unit/Sample_Test.php にて以下のコード変更を行います。

※テストフォルダには、単体テストファイル用フォルダのtests/unit、結合テスト用のフォルダのtests/featureが存在します。unitフォルダ内に作成されるテストファイルは、厳密な単体テスト用のファイルとして作成されるため、デフォルトではLaravelが提供する外部依存機能機能(トランザクション、ファクトリー、シーダー、ファサード認証など)が使えません。しかし実用的には単体テストにおいても、これらのLaravelの機能を含めた単体テストを行うことがあるので、上記のコードの変更を行いました。

結果、以下のようなテストコード(Sample_Test.php)のひな型が作成できます。

Sample_Test.php

次にテスト対象として、足し算、引き算の機能を持つクラス(SampleClass.php)を作成します。

SampleClass.php

これで、テスト対象となるクラス(SampleClass.php)とテストコード(Sample_Test.php)のひな型を1対1で用意できました。最後に、テストコードを編集して、テスト対象のクラスをテストできるようにします。

テストコードファイル内で追記する主な内容は

1.テストクラス内に、テスト対象のクラスのオブジェクトを定義する
 テストクラスの中で使用するテスト対象のオブジェクトを、プロパティ(変数)として宣言します。


2.setUp関数を定義する
各テストメソッドが実行される前に毎回自動で呼ばれる特別なメソッドです。
ここでテスト対象のオブジェクトを作成します。
こうすることで、テストメソッドごとに毎回新しい状態のオブジェクトを使えるようになり、テスト同士が影響し合うのを防げます。
parent::setUp()は初期化処理を継承するために必須の記述です。


3.テスト対象のメソッドごとにテストメソッドを作成する(テストメソッド名は test….)
基本的に、テスト対象のメソッド1つに対して、テストメソッドも1つ作成します。
テストメソッドごとに、テスト対象の各メソッドをテストしていくイメージです。
実際のテスト内容をここに記述します。
テストメソッド名はテスト対象のメソッド名と対応させると分かりやすいです。


4.テストメソッド内で、テスト対象クラスのオブジェクトからメソッドを呼び出し実行する

setUpメソッドで作成したテスト対象のオブジェクトを使って、実際にテストしたいメソッドを呼び出します。


5.メソッドを呼び出した後、期待する結果を検証していく(assertion)

期待する結果と実際の結果が一致しているかを検証する手段として、assertion(アサーション)が用意されています。
具体例として
・予測値と実際の結果を比較するメソッド : assertEquals()
・trueかどうかを検証するメソッド : assertTrue()
・配列の数を検証するメソッド : assertCount()
などがあります。
これをテストメソッド内で利用していきます。

これら1~5の内容をテストコード(Sample_Test.php)に追加すると以下のようになります。

あとはテストコードを実行するだけでテストを行えます。
テスト実行コマンドは以下の通りです。

作成した全てのテストファイルを実行する場合

特定のテストファイルを実行する場合

テストコードを実行すると以下のような結果が得られます。
今回の二つのメソッド(add、sub)は想定通りに機能していることが確認できました。

最後に

 PHPUnitを学んで率直に感じたことは、テストコードを記述していくことはかなり労力がかかる作業であるということです。テスト対象のコードとテストコードを対にして記述していく必要があるため、単純計算で2倍程度のコードを記述することになります。小規模なシステムや修正があまり発生しないコードでは、この労力は割に合わないかもしれません。しかし、システムが大規模になり、複数人での開発や頻繁な変更が発生する環境では、自動テストによって迅速に品質を保証し続けられるメリットは大きいものなのだろうと思いました。

以上で今回の話をおわります。
ありがとうございました。

新入社員ブログ 佐藤[一年を振り返って]

2025年4月入社の佐藤です。

入社してから気づけば一年が経ちました。プログラミング初心者としてスタートした私にとって、この一年は学びと挑戦の連続であったと改めて感じています。

プログラミング研修のスタート

入社後すぐの二カ月間は、外部でのプログラミング研修に参加しました。右も左もわからない状態からのスタートでしたが、基礎文法や簡単なサイト開発まで一通り経験することで、「エンジニアとして働くイメージ」を持つことができました。

特に苦労したのは、コードが思った通りに動かない時の原因追及です。初めはどこを見ればいいのかすらわからず、ひとつのエラーに長く悩んでしまうこともありました。それでも、講師の方々や他社の生徒の方々の助けを借りながら、徐々に理解が深まり、”できない”が”できる”に変わる喜びをたくさん感じられた期間でした。

実務を通して感じたこと

配属後は、実務の業務にかかわる中で、研修とは違う難しさに直面しました。

自分で調べて判断する場面が増えたこと

研修では丁寧にステップを教えてもらいましたが、実務ではまず自分で調べ、考え、整理することが求められます。わからない点を言語化することの難しさを何度も実感しました。

作業にかかる時間の予想が難しいこと

実際にやってみると想定外のところで時間がかかることも多く、最初は見積もりがうまくできませんでした。最近は作業前にポイントを整理することで、少しずつ予想が立てられるようになってきました。

説明や相談の仕方

状況を要点をまとめて簡潔に伝えることが難しく、説明に時間がかかってしまうこともありました。自分の中で情報を整理してから話す大切さを痛感した場面が多かったです。

こうした難しさに向き合う中で、少しずつではありますが仕事の進め方がつかめてきたと感じています。

フォローアップ研修

一年間の中で、タイムマネジメント、ロジカルシンキング、ホウレンソウ、ビジネス基礎などを学ぶフォローアップ研修にも参加しました。これらの研修は、日々の業務で感じていた自分の課題を整理し、改善のヒントを見つける貴重な機会となりました。研修での学びが、実務でのつまずきを消してくれた実感があります。

この一年を振り返って

改めて振り返ると、プログラミング初心者として入社した私にとって、周りの支えがなければ乗り越えられなかった場面が多くありました。困ったときに相談に乗ってくださる先輩方や、気兼ねなく話し合える同期の存在に助けられた一年でした。

まだまだ学ぶことは多いですが、来年は教えてもらうだけでなく、自分から動き、会社に貢献できる存在になることを目標に、さらに成長していきたいと思います。

新入社員ブログ 斎藤03[Form Requestについて]

25年度入社の斎藤です。

 今回は、Laravelのバリデーション機能であるForm Requestについて、概要を簡単にまとめ、webアプリケーションへの具体的な導入方法について説明しようと思います。

Form Requestとは

 FormRequestとはLaravelの機能の一つで、フォームから送られてくるデータのバリデーション(検証)を専用のクラスで管理することができます。Form Requestには以下のメソッドが標準機能として存在します。

authrizeメソッド
バリデーションを行う前に、リクエストが認可(オーソライゼイション)されるかどうかを決定します。
return true : バリデーションに処理が進む
return false : バリデーションを行わず、403 Forbiddenを返しリクエストが拒否される

rulesメソッド
フォームデータに対する検証(バリデーション)ルールを定義します。
バリデーションが通らなければ、デフォルトでは直前の画面にリダイレクトされます。
バリデーションルール記述方法 : [ ‘form要素名’=>’ルール1|ルール2…’ ]
※ルール同士は | 記号で繋げる。また、初めのルールと最後のルールを記号で囲む

FormRequestクラスの作成

 Larvelプロジェクトフォルダにて、以下のコマンドでFormRequestクラスを継承した子クラス(今回の例ではSampleRequest)を作成します。
※○○Requestという名称にする
※ディレクトリで区切りたい場合は、クラス名指定を”ディレクトリ名/SampleRequest”とすればよい

以下のような、app/Http/Requests/SampleRequest.phpが作成されます。

今回の例では、SampleRequest内のauthrizeメソッド、rulesメソッドに対して以下のように設定します。

1.authrizeメソッドのリターンを常にtrueに変更
→リクエストが常に認可される

2.rulesメソッドにバリデーションルールを追加
フォームデータに対して以下の内容を検証する
$name : 入力必須、最大20文字
$tel : 入力任意、ハイフン区切りの電話番号形式
$email : 入力必須、メールアドレス形式
$body : 入力必須、最大1000文字

FormRequestバリデーションの実行

 以下では、フォームデータを受け取るコントローラのメソッドを用意し、FormRequestの子クラスであるSampleRequestを依存性注入することで、バリデーションを機能させます。

例として、以下のようなコントローラ(SampleController.php)を用意する
indexメソッド : Sample.indexビュー を表示
postメソッド : formリクエストを受け取る処理

このコントローラに以下の内容を設定することで、postメソッドにバリデーションを適応させる
1.use を用いて app/Http/Requests/SampleRequest を参照する
2.postメソッドの引数部分にSampleRequest $reruest を記述する(依存性注入)

この設定によってpostメソッドでは、SampleRequestで設定したバリデーションを通過したフォームデータのみを受け取ることができるようになります。

最後に

 今回、LaravelのFormRequestについて学んだことで、バリデーション処理を簡単に実装できることを知りました。
 特に便利だと感じた点は、多様なバリデーションルールが初めから用意されている点です。自分で複雑な検証ロジックを書く必要がなく、フォームデータの種類ごとにルールを定義するだけで適切なバリデーションが実行される点は、開発効率を大きく向上させると感じました。

今回の話は以上です。
ありがとうございました。

新入社員ブログ 斎藤02[CSRFについて]

25年度入社の斎藤です。

 今回は、Webアプリケーションに対する代表的な攻撃手法であるCSRF(クロスサイトリクエストフォージェリ)について、概要を簡単にまとめ、CSRF攻撃に対する一般的な対策とLaravelでどのように対策が行われているのかについて説明しようと思います。

CSRFとは

 CSRF(クロスサイトリクエストフォージェリー)は、Webアプリでログイン状態を保持している利用者に、ユーザーの意図しない不正なリクエストを送信させる攻撃手法です。
 正規のリクエスト方法とは異なるリクエストが受け入れられてしまうようなwebアプリの脆弱性が存在する場合に被害にあう可能性があります。
以下に具体的なCSRF攻撃手法の被害までの基本的な流れを銀行webアプリを例に説明します。

【前提条件】
・正規の銀行webサイト(例:https://bank.com)が存在し、送金機能をもつ
・CSRF対策(CSRFトークン)が実装されておらず脆弱性が存在する
※CSRFトークンについては後述

ステップ1:ユーザーが正規サイトにログイン
ユーザーが銀行サイト(bank.com)に正しい方法でログインします。
この際、Cookieが保存され、bank.comへのリクエスト時にはユーザーを識別するために自動的に送信されます。

ステップ2:攻撃者が作成した不正なサイトにユーザーがアクセスする
以下のような方法で不正なサイトにアクセスさせます。
・メールに記載されたリンク
・SNSの広告クリック
・掲示板に貼られたリンク
・他のサイトに埋め込まれた広告
など

ステップ3:不正なサイトのスクリプトが自動実行される

以下のフォームでは、正規の銀行webサイトに対して、攻撃者の口座(to_account)と送金金額(amount)を指定しています。

CSRF対策

 主なCSRF対策方法として、CSRFトークンを使用することが挙げられます。CSRFトークンは正規のページを表示したときにだけ発行される予測不可能なランダムな値です。
 このランダムな値をサーバーが生成してHTMLのFormに埋め込むことで、Form送信時にFormデータに合わせてCSRFトークンをserverへ送信し、フォームの正当性を担保することができます。
※CSRF攻撃では攻撃者はトークンを読み取れません

Laravel(Blade)でのCSRF対策
フォームタグ内に @CSRF を記述することで、Laravelが自動的にフォームに対してCSRFトークンを埋め込んでくれます。

※web.php(ルーティングファイル)では、@CSRFの付与されていないPOST/PUT/PATCH/DELETEリクエスト はエラーで弾かれるようになっています

jQueryのAjax通信でのCSRF対策
Ajax通信でのリクエストにもCSRFトークンを埋め込むことができます。
まず以下のようにBladeのheadタグ内にmataタグを用いてCSRFトークンを埋め込みます。

次にJavaScriptのjQuery.ajaxSetupメソッドに以下の記述を追加することで、metaタグからCSRFトークンを取得して、Ajaxリクエストに含めることができます。
※$.ajaxSetupはajax通信に関連するデフォルト値を変更するメソッド

最後に

 これまで、セキュリティ攻撃といえば不正なサイトに誘導する、webサイト自体に対して悪意ある改変を行うといったイメージを持っていました。
 CSRF攻撃はそれとは全く異なるアプローチで、攻撃者が自分のサイトから正規サイトへリクエストを送信し、ブラウザが自動的にCookieを付与してしまうことで、ユーザーの意図しない操作が実行されてしまうという「正規のフォーム外から攻撃する」という発想は、自分にとって全く考えたことのない視点であったので、非常に興味深く感じました。

今回の話は以上です。
ありがとうございました。

参考

安全なウェブサイトの作り方 – 1.6 CSRF(クロスサイト・リクエスト・フォージェリ)https://www.ipa.go.jp/security/vuln/websecurity/csrf.html

Readouble Laravel 9.x CSRF保護
https://readouble.com/laravel/9.x/ja/csrf.html

「CSRFって美味しいの?」←ハンズオンで実装して理解してみたhttps://qiita.com/Naughty1029/items/c606d4f12e994b46ba58

新入社員ブログ 斎藤01[XSSについて]

25年度入社の斎藤です。

 今回は、Webアプリケーションに対する代表的な攻撃手法であるXSS(クロスサイトスクリプティング)について、概要を簡単にまとめ、XSS攻撃に対する一般的な対策とLaravelでどのように対策が行われているのかについて説明しようと思います。

XSS(クロスサイトスクリプティング)とは

 XSSとは、脆弱性のあるwebサイト上で悪意のあるスクリプトを紛れ込ませることで、Webサイトを閲覧したユーザの環境において、紛れ込ませたスクリプトを実行させる攻撃手法です。具体的なXSSの流れを以下の簡単な例で説明します。

前提条件
・脆弱な掲示板サイトが存在
・投稿内容をそのままHTMLとして表示する仕様(エスケープ処理がない)

※エスケープ処理については後述

ステップ1:攻撃者が悪意のあるスクリプトを投稿
攻撃者が掲示板の投稿フォームに、以下のようなスクリプトを投稿する。

document.cookie:閲覧者のCookie情報を取得
fetch():攻撃者のサーバーにCookie情報を送信

このスクリプトが実行されると、閲覧者のCookie情報が攻撃者のサーバーに送信される仕組みになっている。

ステップ2:被害者が掲示板を閲覧
攻撃者の投稿内容が、閲覧者のブラウザに送信されます。

ステップ3:被害者のブラウザでスクリプトが実行される
被害者のブラウザは、<script>タグの中身を正規のJavaScriptコードとして実行してしまう。

ステップ4:攻撃者に閲覧者のCookie情報が抜き取られる

このようにして攻撃者は、盗んだCookie情報を使って被害者になりすまし、不正に被害者のアカウントでログインすることが可能になります。

今回の例は、XSSの中でも特に格納型XSSと呼ばれる攻撃手法です。ほかに、反射型XSSDOM Based XSSといった攻撃手法も存在します。

XSS対策

 有効な対策としてエスケープ処理を行うことが重要です。
エスケープ処理とは、 <script>のようなウェブページの表示に影響する特別な記号文字を無害な文字(HTMLエンティティ)に置き換えることです。
具体的には以下のような置き換えを行います。

 “<script>”であれば、 &lt;script&gt; に変換される。

Laravelでのエスケープ処理
Laravelでは {{ $変数 }} という記述方法で、変数の中身を自動的にエスケープしてくれる機能があります。


※{{}}内の変数に対して自動でhtmlspecialchars(エスケープ処理のメソッド)を施してくれます

エスケープ処理を行わずに表示させたい場合は、{{!! $変数 !!}}という記述方法を用います。

最後に

 今回、XSS(クロスサイトスクリプティング)ついて学ぶ機会を得たことで、Webアプリケーションのセキュリティに対する理解が深まりました。
特に、攻撃者がどのように悪意のあるスクリプトを実行させるのか、ブラウザのCookie送信の仕組みをどう悪用するのかといった、攻撃の手順と仕組みを理解することで、知らないことに対する不安から、知識に基づいた適切な警戒心へと意識が変化したことが、今回の学びの最も大きな収穫だと考えています。

今回の話は以上です。
ありがとうございました。

2025年 新入社員ブログ 遠藤06 [リーダブルコード]

2025年4月入社の遠藤です。

今回は「リーダブルコード」という本についてお話いたします。
より良いコードを書くためのシンプルで実践的なテクニックが書かれています。
先輩方も読んでおり、実務にも役立つ内容であったので、紹介したいと思います。

リーダブルコード

読みやすいコードとは、決して面白いという意味ではなく、意味の分かりやすい名前がつけられている、コメントが適切である、きれいに成形されているという基本的なことの積み重ねであり、そのコードの組み立て方を、この本はわかりやすく丁寧に説明してくれています。
実際のコードを用いた説明や、絵での説明が入っているので、普段活字の本を読まない方や、まだコードに対しての理解が浅い自分でも読み進めるのに苦では無いように感じました。

感想

書いたコードがただ動けば良いだけでなく、きれいに並べられており、わかりやすく書かれているか。誰もが読んで理解できるものか。複雑な条件にしてしまっていないかなど、自分自身読んでいて反省すべき点がいくつか思い浮かびました。
実務に入ると自分だけでなくチームで一つの機能を作成することもあるため、自分が理解できれば良いのではなく、チームの作業者が理解できるかが大切になると理解しました。

また、人によって読みやすいコードが違うという点も考慮しなくてはいけません。例えば条件式の場合でも、if文で書いてあるほうがわかりやすいと感じる人もいれば、三項演算子で一行にまとめられているほうが読みやすいと感じる人もいます。
そういった場合には、その時の内容次第で臨機応変に読みやすくなるように考えていかなければなりません。これは経験していく中で自分なりの最適を見つけていきます。

一度作成したものに満足するのではなく、より読みやすくならないかコードを見返し、考えていきたいと思います。

今回のお話は以上となります。
ありがとうございました。

2025年 新入社員ブログ 遠藤05 [休日]

2025年4月入社の遠藤です。

今回は先日参加したイベント、「稲妻フェスティバル」を紹介したいと思います。

稲妻フェスティバル

稲妻フェスティバルはライフスタイル全般にこだわり、アメリカンカジュアルを中心としたファッションアイテムや雑貨、古着の販売を行っているイベントです。
お台場の特設会場で開催され、近くではハンバーガーフェスも同時開催しているため、一日満喫できるイベントです。
毎年開催されており、今年は11月30日に行われました。

おすすめ

私は今年初めて参加したのですが、服や雑貨がたくさんあり、見て回るだけでとても楽しいイベントでした。
出店しているお店のほとんどがセール価格で出しているため、ついお財布のひもが緩んでしまいます。
服だけでなく、コップやステッカー、ワッペン、ラグなどの雑貨もたくさん出ているのでお気に入りのものが見つかると思います。

また、バイクで来ている方も多いため、駐車場にはバイクが何台も止まっており、バイク好きの方は駐車場から楽しめます。
開催会場がお台場なので、イベントをみてお買い物をするのにもとても良い場所です。

会場でお買い物をし、ハンバーガーを食べてお台場でゆっくりする。とても気持ちの良い休日でした。

今年の開催は終了してしまいましたが、きっと来年も開催されると思うので、来年もあればぜひ参加してみてください。

今回のお話は以上となります。
ありがとうございました。

2025年 新入社員ブログ 遠藤04 [おすすめ小説2]

2025年4月入社の遠藤です。

今回は前回に引き続き、最近読んだ小説についてお話いたします。
紹介するのは、降田天さんの「女王はかえらない」という小説です。
前回紹介した本と同様に、「このミステリーがすごい!」大賞の大賞受賞作品です。

あらすじ

舞台は田舎の小学校です。
学校内でどのような問題が起き、その問題に主人公がどのように立ち向かうのか、小学生視点の一部、教師視点の二部、真相編の三部構成で物語は進んでいきます。

第一部では、スクールカーストが確立されているクラスに、東京からやってきた美しい転校生、エリカの出現でクラスの女子が二分され、日々クラス内で言い争いなどが起きるようになり、その結果事件に発展してしまいます。

第二部、第三部では教師の立場からクラスはどう見えているのか、事件の真相が徐々に明らかになっていきます。

感想

一部では事件に発展するまでの経緯や、子どもたちの心情が描かれ、二部三部と明らかになる真相に、ドキドキして読み進める手が止められませんでした。
読み切るまでは想像もできなかった結末に誰もが驚かされると思います。
戦慄の学園ミステリー、二度読み必至の紹介通り、あの時の話はこういうことだったのかと読み直してしまいました。
ミステリーが好きな方にはぜひ読んでいただきたいです。

今回のお話は以上となります。
ありがとうございました。

2025年 新入社員ブログ 遠藤03 [おすすめ小説]

2025年4月入社の遠藤です。

今回は最近読んだ小説についてお話いたします。
紹介するのは、小西マサテルさんの「名探偵のままでいて」という小説です。
この本は、宝島社が主催する、「このミステリーがすごい!」大賞の大賞受賞作品なのですが、タイトルの響きに惹かれ、読んでみました。

あらすじ

物語は、主人公の小学校教師である楓が、日常で起こった謎を認知症を患い、介護を受けながら暮らしている祖父と解決していくというものです。
認知症と聞くと、そのような状態で謎を解決することは難しいのではないかと思ってしまいますが、この祖父の認知症はレビー小体型というめずらしいタイプのもので、幻視や記憶障害などは起こるものの、体調によっては日常生活を送ることも困難ではありません。
また、祖父はもともとミステリー小説が大好きなかなりの切れ者で、そんな祖父の影響もあり、楓もミステリー小説が好きになります。そして、日常で発生する様々な謎を祖父に相談し、ともにその謎についての物語を紡いでいきます。

おすすめ

楓の身の回りでは、密室殺人や人間が消失してしまう事件、幽霊事件など、様々な事件や謎な事態が起きます。
その一つ一つのトリックと、犯人や事件にかかわった人間たちの背景まで読み解き、解決していきます。

この登場人物も非常に魅力的な人たちで、まず、楓の同僚の男性はお菓子作りが得意で、生徒にも人気があり、楓に好意を抱いています。

また、この同僚の学生時代の後輩は劇団員で、ミステリー好きです。

後輩くんのミステリー知識からの考察と、楓とのやり取り、ミステリーに興味はないが、楓のことが好きだから会話には入りたい同僚との三人の掛け合いがとても心地よく感じました。

感想

私は普段あまり本は読まないのですが、テンポよく進んでいくので、そんな人でも読みやすい一冊でした。
一話ごとに事件がちゃんと解決していくので、飽きずに読み進められると思います。

今回のお話は以上となります。
ありがとうございました。