【初心者向け】知ってた?Laravelの「ミドルウェア」はこんなに便利だった

はじめに:なぜミドルウェアを知る必要があるの?

「ログインしているかチェックするたびに、Controllerの先頭に毎回コードを書いている…」
こんな非効率な作業に心当たりはありませんか?エンジニア初心者が陥りやすいこの悩みを解決するのが「ミドルウェア」です。
ミドルウェアは「交通整理係」のように、リクエストがアプリケーションに届く前にチェックや調整をしてくれる仕組みです。本記事ではその役割と使い方をわかりやすく解説します。

ミドルウェアって何?「交通整理係」の仕事

ミドルウェアとは、リクエスト(ユーザーからの要求)がControllerに届く前に実行される「中間処理」のことです。 例えば、認証や権限チェック、データ整形などを共通して行うのに使います。

具体的な役割

  • 認証: ユーザーがログインしているかを確認する
  • 権限チェック: 管理者のみがアクセスできるページを制御する
  • リクエスト整形: データのサニタイズなどを一括で行う

処理の流れ

リクエスト → ミドルウェア → Controller → ミドルウェア(レスポンス処理) → ユーザー

このように、ミドルウェアはまるで高速道路の料金所や交通整理係のように、
「誰が通れるか」「どんな状態で通るべきか」を管理する役割を担っています。

簡単!Laravelでミドルウェアを使ってみよう

Laravelではコマンド一発でミドルウェアを作成できます。

php artisan make:middleware CheckUserAuthenticated

生成されたクラスには handle メソッドがあります。ここでリクエストをチェックし、
問題なければ return $next($request); を実行することで次の処理(別のミドルウェアやController)へ進めます。

コード例: ログインしていないユーザーをリダイレクト


public function handle($request, Closure $next)
{
    if (!auth()->check()) {
        return redirect('/login');
    }
    return $next($request);
}
      

このコードによって、未ログインのユーザーはログインページへ誘導されます。
逆にログイン済みであれば $next($request) によって処理が進行します。

ミドルウェアの登録と適用

  • Kernel.phpに登録: app/Http/Kernel.php に書き込む
  • ルートで適用: web.php でグループに適用可能
  • Controllerで適用: コンストラクター内で $this->middleware('auth');

こんなに便利!実用的なミドルウェアの活用例

1. ユーザー権限チェック


public function handle($request, Closure $next)
{
    if (!auth()->user() || !auth()->user()->isAdmin()) {
        abort(403, 'このページにアクセスできません');
    }
    return $next($request);
}
      

2. メンテナンスモード


public function handle($request, Closure $next)
{
    if (config('app.maintenance')) {
        return response('現在メンテナンス中です', 503);
    }
    return $next($request);
}
      

3. IPアドレス制限


public function handle($request, Closure $next)
{
    $allowedIps = ['123.45.67.89'];
    if (!in_array($request->ip(), $allowedIps)) {
        abort(403, 'アクセスが許可されていません');
    }
    return $next($request);
}
      

まとめ:ミドルウェアがあなたのコードを救う

ミドルウェアは全リクエストに共通する横断的処理を担い、コードの重複を防ぎます。
一方でService層は特定のビジネスロジックをまとめる場所です。
これを理解することで、よりシンプルでメンテナンス性の高いコードが書けるようになります。
「交通整理係」としてのミドルウェアをうまく活用し、開発を効率化しましょう!