ミドルウェアに置くのが適切な処理はどれですか。
権限チェック、リクエストのログ記録、多言語切り替えなど、複数のコントローラに共通する前後処理です。適用範囲はグローバル、web や api のグループ、特定ルートの3段階で選べます。
面接官が見ているのは横断的関心事の置き場所を理解しているか。
よくある答えと、面談でどう見られるか
- 認証・権限チェック・リクエストのログ記録など、複数のコントローラに共通する処理
その通りです。適用範囲はグローバル・グループ・ルート個別の3段階から選びます。 - 特定の1画面だけで必要な計算処理
それはコントローラかサービスクラスに書きます。 - DB のトランザクション管理
全リクエストを囲む構成にすると範囲が広すぎます。必要な処理単位で張ります。 - ビューのレンダリング
レンダリングはコントローラとビューの仕事です。
面接官は何を見ているか
- 具体的な用途を挙げた
- リクエスト前後に挟まる仕組みだと説明できた
- 適用範囲(グローバル / グループ / ルート個別)に触れた
模範解答
権限チェック、リクエストのログ記録、多言語切り替えなどで書きました。各コントローラに同じ処理を書く代わりに、リクエストの前後に挟み込む仕組みです。適用範囲は、全リクエストに効かせるグローバル、web/api などのグループ、特定ルートだけ、の3段階から選べます。認可のように「全部に効いていないと危険」なものはグループ単位で当てます。
ここからどう深掘りされるか
この問いに答えられた場合、面談は次の質問に進みます。
観点をすべて押さえられた場合
ミドルウェアとモデルのオブザーバは、どう使い分けますか。一部しか触れられなかった場合
ミドルウェアはどのタイミングで実行されますか。