Laravel 11が2024年3月12日にリリースされ、Middlewareの扱い方が大きく変更されました。
この記事では、Laravel 11におけるMiddlewareの新機能と使い方を解説します。

Middlewareとは?

Middlewareは、HTTPリクエストがアプリケーションに到達する前に実行される一連の処理です。

利用例

  • 認証(管理者権限、IP制限など)
  • ログの導入
  • 入力のサニタイズ
  • CSRFトークンの検証など

Laravel 11でのMiddlewareの主な変更点

デフォルトMiddlewareの内部化

Laravel 11では、以前のバージョンで含まれていたデフォルトMiddlewareがフレームワーク自体(vendor)に移動されました。これにより、アプリケーションの初期構造がよりシンプルになり、不要なコードが削減されました。開発者は必要なMiddlewareのみを追加できるようになり、コードの本質的な部分に集中しやすくなりました。

Kernel.phpの廃止

Laravel 11では、app/Http/Kernel.phpファイルが完全に廃止されました。

bootstrap/app.phpでの設定

Middlewareの設定は、bootstrap/app.phpファイルで行うようになりました。
このファイルを使用して、グローバルMiddlewareの登録やMiddlewareグループの定義を行います。

Middlewareの新しい使い方

1. グローバルMiddlewareの登録

bootstrap/app.phpファイルを編集して、グローバルMiddlewareを登録します。

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Middleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withMiddleware(function (Middleware $middleware) {
        $middleware->append(\App\Http\Middleware\YourGlobalMiddleware::class);
    })
    ->create();

2. ルート固有のMiddlewareの適用

routes/web.phpなどで、特定のルートにMiddlewareを適用する場合は、直接クラスを指定します。

use App\Http\Middleware\YourMiddleware;

Route::get('/welcome', function () {
    return view('welcome');
})->middleware(YourMiddleware::class);

3. Middlewareグループの作成

bootstrap/app.phpで複数のMiddlewareをグループ化して適用することができます。

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Middleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withMiddleware(function (Middleware $middleware) {
        $middleware->group('web', [
            \App\Http\Middleware\EncryptCookies::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
        ]);
    })
    ->create();

4. デフォルトMiddlewareのカスタマイズ

Laravel 11では、デフォルトのMiddlewareをカスタマイズする新しい方法が導入されました。

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Middleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withMiddleware(function (Middleware $middleware) {
        $middleware->validateCsrfTokens(
            except: ['stripe/*']
        );
    })
    ->create();

まとめ

Laravel 11でのMiddlewareの扱いは、より直感的でシンプルになりました。
bootstrap/app.phpファイルを中心とした設定により、アプリケーション構造がすっきりし、Middlewareの管理が容易になりました。
これらの変更により、開発者はより本質的なコード作成に集中できるようになります。
Laravel 11の新しいMiddleware機能を活用して、より効率的で堅牢なWebアプリケーションを構築しましょう。

この記事をシェアする

2025年エンジニアの必読書

エンジニアなら読んでおきたい必読書を紹介します。

AI関連
コード×AI―ソフトウェア開発者のための生成AI実践入門

コード×AI―ソフトウェア開発者のための生成AI実践入門

もうプログラムを書く時代は終わりました。これを読めば「AIでここまでできるのか!」やばいな!と実感する一冊です。これを読まずにただ自力でプログラムを書いている人はもう手遅れになるかもしれません。

Amazonで購入する
エディタ関連
AIエディタCursor完全ガイド

AIエディタCursor完全ガイド ―やりたいことを伝えるだけでできる新世代プログラミング

まだCursor使っていないの?こちらはAI機能が搭載されたエディタです。直近、AIの進化が著しく精度がかなり上がっています。もはや人を超えたと言っても過言ではないでしょう。Cursorを使えばもうプログラミングをすることはほぼなくなります。まだ使っていない方はこちらで使い方を学びましょう。

Amazonで購入する
コード設計関連
良いコード/悪いコードで学ぶ設計入門

良いコード/悪いコードで学ぶ設計入門

初心者にもおすすめ!全エンジニアの良いコードの書き方のバイブルです。2024年12月25日に発売されたばかりの最新版が登場。AI時代でも良い設計は必須スキル。あなたのコーディングスキルが飛躍的に向上することでしょう。

Amazonで購入する