【Laravel】ミドルウェア(Middleware)の役割を直感的に理解する その1

Laravel

Laravel開発で避けては通れない「ミドルウェア」。
「なんとなく認証で使っているけれど、具体的にどういう仕組みだっけ?」となりがちな機能について、役割やメリットをシンプルにまとめました。

1. ミドルウェアを一言で言うと?

ミドルウェアの役割を一言で表すと、「リクエストがアプリケーション(コントローラー)に届く前、またはレスポンスが返される前に挟む『フィルター(関所)』」です。

ユーザーからのリクエストがWebサイトの心臓部(コントローラー)に到達するまでに、様々なチェックや加工をバックグラウンドで行ってくれる頼れる存在です。

2. 身近な例え:テーマパークの入場ゲート

ミドルウェアの動きは、テーマパークの入場ゲートによく似ています。

  • ユーザー(リクエスト): アトラクション(コントローラー)に乗りたい!
  • 第1のゲート(ミドルウェアA): チケットを持っているかチェック(認証)
  • 第2のゲート(ミドルウェアB): 年齢や身長の制限をチェック(認可・アクセス制限)
  • アトラクション(コントローラー): ゲートを通った人だけが楽しめる!

もしチケットを持っていなければ、アトラクションにたどり着く前に「入り口(ログイン画面)」へ送り返されます。コントローラー側に「チケットを持っているか?」という確認処理をわざわざ書かなくて済むのが大きなメリットです。

3. ミドルウェアの2つの実行タイミング

ミドルウェアには、処理を実行するタイミングによって2つの種類があります。

① Beforeミドルウェア(前処理)

リクエストがコントローラーに届く前に処理を行います。処理の大半(9割以上)はこちらです。

  • 主な用途: ログインチェック、権限確認、メンテナンスモードの判定など。

② Afterミドルウェア(後処理)

コントローラーの処理が終わった後、ブラウザにレスポンスを返す直前に処理を行います。

  • 主な用途: ログの記録、デバッグ情報の埋め込み、レスポンスデータの加工など。

4. ミドルウェアを使う3つのメリット

  1. コントローラーがスッキリする 「ログインしているか?」「管理者か?」といったチェックをすべてミドルウェアに丸投げできるため、コントローラーは「本来やりたいメインの処理」だけに集中できます。
  2. コードの再利用性が高い 一度作ったミドルウェアは、複数のルート(URL)に簡単に使い回せます。
  3. セキュリティの共通化 全リクエストに対して一括でセキュリティ対策(CSRF保護など)を適用できるため、対策漏れを防げます。

5. Laravelでよく使う標準ミドルウェア

Laravelには、最初から便利なミドルウェアが用意されています。

  • auth: ログインしているユーザーだけを通す(未ログインならログイン画面へ)
  • guest: ログインしていない人だけを通す(ログイン済みの人がログイン画面を開いたらマイページへリダイレクト)
  • verified: メールの本登録が完了しているユーザーだけを通す

💡 まとめ(振り返り用)

  • ミドルウェアは「コントローラーの手前にあるフィルター」
  • 認証や制限など、複数のページで共通してやりたい処理をまとめる場所
  • これを使うことで、安全で綺麗なコードが保てる!

「あれ、この処理コントローラーに書くとごちゃごちゃするな…」と思ったら、ミドルウェアへの切り出しを検討するサインです。

コメント