IT-Q

ミドルウェアはどのタイミングで実行されますか。

$next($request) を呼ぶ前に書けば前処理、呼んだ後に書けば後処理になります。登録順に入れ子で積まれますが、認証や認可など標準のものは優先順位で並べ替えられます。

面接官が見ているのは実行順の補強。

これは「ミドルウェアに置くのが適切な処理はどれですか。」への追撃質問です。

よくある答えと、面談でどう見られるか

  • コントローラに到達する前。$next() の後に書けばレスポンス生成後の処理になる
    その通りです。複数ある場合は登録順に入れ子で積まれます。ただし認証や認可など標準のものは、優先順位に従って並べ替えられます。
  • レスポンスを返した後だけ
    後処理も書けますが、主な役割は到達前の処理です。
  • アプリケーションの起動時に一度だけ
    リクエストごとに実行されます。
  • ビューがレンダリングされる直前
    レンダリングとは無関係の層で動きます。

面接官は何を見ているか

  • ルートに到達する前に実行されると言えた
  • レスポンス後に処理を書くこともできると知っていた
  • 複数ある場合は登録順に積まれると言えた

模範解答

コントローラに到達する前に実行されます。$next($request) を呼ぶ前に書けば前処理、呼んだ後に書けば後処理(レスポンス生成後)になります。複数のミドルウェアは基本的に登録順に入れ子で積まれます。ただし認証(auth)や認可(can)など標準のミドルウェアには優先順位が決められていて、ルートに付けた順序に関係なく、認証が先になるよう並べ替えられます。自作のミドルウェア同士は書いた順のままなので、順序に依存するなら priority で明示します。順序が意味を持つ点は意識が必要です。

対象: Laravel 12.x(13.x の変更点も確認) 照合した一次資料: 公式ドキュメント 照合: 2026-08-11 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。