TOP メディア一覧 技術投稿│Laravel11新機能を見てみる

2024.09.26

  • 技術情報
  • テックブログ

技術投稿│Laravel11新機能を見てみる

自己紹介


ニックネーム:メッシュ
経験年数:5年
高等専門学校を卒業後、東京のシステム開発会社に2年半勤務。その後、2022年3月に株式会社アクロクレインに中途入社。現在は主に開発メンバーとしてPHPを使用したWeb系の開発を行っている。前職ではWeb系の開発以外にもServiceNowやQlikView、SplunkといったBIツールを扱っていた経験がある。


Webアプリケーション開発でよく使用されるフレームワーク「Laravel」のバージョン11が2024年3月にリリースされました。
今回はそんなLaravel11の新機能について遅ればせながら一部紹介していきたいと思います!


新機能の紹介


下記、公式リファレンスからの引用です。
引用元:Laravel 11.x リリースノート

アプリケーションの初期起動処理ファイル
bootstrap/app.phpファイルは、コード・ファーストのアプリケーション設定ファイルとして復活しました。このファイルから、アプリケーションのルーティング、ミドルウェア、サービスプロバイダ、例外処理などをカスタマイズできます。このファイルは、以前はアプリケーションのファイル構造全体に散らばっていたさまざまな高レベルのアプリケーション動作設定を統一しています。

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        //
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })->create();

設定ファイルを一箇所にまとめて使いやすくしましたよーとのことです。以前のものに慣れている人も多いと思うので要チェックですね。



プロンプトバリデーション
Laravel Promptsは、美しくユーザーフレンドリーなフォームをコマンドラインアプリケーションへ追加するためのPHPパッケージで、プレースホルダテキストやバリデーションなどのブラウザライクな機能を備えています。
Laravel Promptsはクロージャによる入力バリデーションをサポートしています。

$name = text(
    label: 'What is your name?',
    validate: fn (string $value) => match (true) {
        strlen($value) < 3 => 'The name must be at least 3 characters.',
        strlen($value) > 255 => 'The name must not exceed 255 characters.',
    default => null
    }
);

しかし、多くの入力や複雑なバリデーションシナリオを扱う場合、これは面倒です。そこでLaravel11では、プロンプト入力のバリデーションを行う際に、Laravelのバリデータをフルに活用できるようになりました。

$name = text('What is your name?', validate: [
    'name' => 'required|min:3|max:255',
]);

クロージャによるバリデーションしかできなかったところを、Laravelのバリデータを活用できることによって簡単に実装できるようになったようです。プロンプトは実務で使用したことはなかったですが、これはかなりありがたいのではないでしょうか。


実際に使ってみよう


環境構築

dockerを使用して構築します。

こちらがLaravel10

こちらがLaravel11です。
welcomeページのデザインが少し変わりましたね。

アプリケーションの初期起動処理ファイル

よく使うミドルウェアの追加を試してみましょう。

Laravel10

Laravel10では、app/Http/Kernel.phpに追加していました。

Laravel11

Laravel11では、bootstrap/app.phpのwithMiddlewareに追加していくように変更になりました。

Laravel11では、routes/api.phpがデフォルトで作成されなくなったようです。

使用するためには、個別にインストールが必要になりました。

php artisan install:api

コマンドを実行すると、bootstrap/app.phpのwithRoutingにapiが追加されました。

お馴染みのapi.phpもroutesフォルダに追加され、これまで通り使用できるようになりました。

Laravel10
他のルートファイルを追加したい場合、Laravel10ではRouteServiceProvider.phpから追加していました。
Laravel11
Laravel11では、bootstrap/app.phpのwithRoutingにusingを使用して追加することができます。

アプリケーションの初期起動処理ファイルについては、他にもまだまだ変更点があるようですが、今回はここまでにします。

プロンプトバリデーション

Laravelプロンプトはテキストボックス、ラジオボタン、チェックボックス等を使って、CLI上で対話入力を可能にするパッケージです。
まずLaravel10でプロンプトバリデーションを使用してみます。

Laravel10
クロージャを使用して条件、エラーメッセージを設定します。

3文字未満の場合

255文字より大きい場合

Laravel11

Laravel11では、Laravelのバリデータを使用できるようになりました。

3文字未満の場合

255より大きい場合

lang/en/validation.php

エラーメッセージを変更したい場合は通常のバリデータと同様、php artisan lang:publishコマンドでlangフォルダを作成した後にvalidation.phpのメッセージを変更することで対応できるようです。

Laravelのバリデータを使用できるようになったことで、Laravelユーザにとっては馴染み深く、簡単で簡潔な実装が可能になりました。

まとめ


いかがだったでしょうか?
今回はLaravel11アップデート内容の一部紹介させていただきました。Laravelはアップデート頻度が高く、約1年ごとにメジャーバージョンのアップデートが行われています。
そんな私も最後に実務で使用したLaravelのバージョンはLaravel9と記憶しており、しばらく触れていない間にいつの間にかLaravel11になっていました。
Laravelに関わらず日々向上していく技術に置いていかれないよう、今回のようにリリースノートを見て実際に触ってみるというのは技術者にとって大切なことなのではないでしょうか!

ここまで読んでいただき、ありがとうございました。また次の技術投稿にご期待ください!

この記事をシェアする

  • X
  • facebook