Laravel 9のリリース
Laravel 9が2022年2月8日、正式リリースされました。Laravel 8以降の修正内容を継続し、改善を続けています。Laravel 8以降の見直しによりリリース周期は6か月から1年に延長され、開発チームの負担を抑えながら新機能搭載に取り組んでいます。 【参考】:Laravel 9.0 Now Available!
Laravel概要
Laravelは、PHPで記述されたウェブアプリケーションフレームワークです。フルスタックのウェブアプリケーションフレームワークで、バックエンドフレームワークとして人気があります。3大バックエンドフレームワークとして、PHP用Laravel・Python用Django・Ruby用Ruby on Railsを指す場合もあります。
Laravelは、Symfonyのコンポーネントを利用してフレームワークの最適化を進めています。 【参考】:Symfony 【参考】:Laravel A framework project using Symfony components
Laravel 9のサポートポリシー
Laravelのサポートポリシーは、製品リリース後の不具合修正を18カ月、セキュリティ修正を2年間提供します。Laravel 9は、2022年2月8日にリリースされましたので、不具合修正は2023年8月8日まで実施されます。セキュリティ修正は2024年2月8日まで対応します。 【参考】:Support Policy
LTS(長期サポート)版は、現在リリースされているLaravel 6の不具合修正は2022年1月25日で終了しました。セキュリティ修正は2022年9月6日で終了予定です。2022年3月現在、今後のLTS版についてはまだ発表されていません。
Laravel 9のリリース情報
Laravel 9では、Release Notesにリリース情報が公開されています。ここでは、Release Notes掲載情報からポイントをピックアップし解説していきます。 【参考】:Release Notes
まず最初に概要をお話しします。Laravel 9では、Symfony 6.0コンポーネント・Symfony Mailer・Flysystem 3.x・route:list出力の改善・Laravel Scoutデータベースエンジン、新しいEloquentアクセッサ/ミュータ構文・Enumによる、暗黙のルートバインド等が実装されます。詳細は以降でお話しします。
Laravel 9の主な新機能と変更点
Laravel 9の主な新機能と変更点は以下の通りです。
・PHP Laravel 8ではPHP 7.3~8.1がサポートされていました。Laravel 9ではSymfony 6.0を用いるためPHP 8以降が必要で、8.0~8.1がサポートされます。
・Symfony Mailer メール送信ライブラリが、以前のリリースで使用していたSwift MailerからSymfony Mailerに置き換わります。Swift Mailerのメンテナンス終了に伴う処置で、別途アプリケーションの互換性確認が必要です。
・Flysystem 3.x Storageファサードが提供するファイルシステムのすべてのインタラクションが、Flysystem 3.xにアップグレードされます。アップグレードガイドに確認方法が記載されています。
・route:list CLI Outputの改善 route:listのCLI出力が大幅に見直され、ルート定義探索の際の表示が改善されます。
・Laravel Scoutデータベースエンジン AlgoliaやMeiliSearchのような専用の検索サービスではなく、Scoutのデータベースエンジンを使用できます。「where like」句と全文インデックスを使用して、クエリに該当する検索結果をフィルタリングできます。
・Eloquentアクセッサ/ミュータ構文 従来では、モデルにプレフィックス付きのメソッドを定義する方法のみでしたが、単一の非プレフィックスのメソッドを使用して、アクセッサとミューテーターを定義することができます。
・Enumによる暗黙のルートバインド PHP 8.1以降でEnumがサポートされることにLaravelが追従します。ルート定義で設定したURIに有効なEnum値の場合ルートを呼び出し、そうでない場合はHTTP 404を返します。
その他のアップデート
その他のアップデートには以下の項目が挙げられています。詳細につきましては、Release Notesをご確認ください。
・EnumのEloquent属性Casting Enum castingは、PHP 8.1以降で利用可能です。モデルの$castsプロパティ配列に、キャストしたい属性とenumを指定することで、Enumにキャストすることが可能になります。
・Forced scoped binding カスタムキー付きの暗黙のバインディングを、ネストされたルートパラメータとして使用する場合のサポートが追加されます。以前は子ルートバインディングにカスタムキーが使用された場合のみのサポートでした。今回、子ルートバインディングにカスタムキーの使用有無を問わずサポートされるよう改良されました。
・Route groupの改善 コントローラメソッドを使用するだけで、グループ内のすべてのルートに対して共通のコントローラを定義することが可能です。
・フルテキストインデックスとWhere句 fullTextメソッドをカラム定義に追加することで、フルテキストインデックスを生成できます。MySQLやPostgreSQLで利用可能です。whereFullTextやWhereFullTextメソッドを使用すれば、 フルテキストインデックスを持つカラムのWhere句をクエリに追加することができます。
・Rendering Inline Blade Templates Bladeファサードが提供するレンダリングメソッドを使用し、Bladeテンプレート文字列を有効なHTMLに変換します。
・スロット名のショートカット スロット名は、従来の<x-slot name="title">から<x-slot:title>に短縮することができます。
・Checked and selected Blade directives @checkedと@selected指示語が、状態確認用に追加されました。
・Bootstrap 5 Pagination Views Bootstrap 5で用いるビュー形式に、Tailwindの他にpaginationが追加されます。
・ネスト配列データの検証の改善 Rule::forEachメソッドが追加され、配列の要素に割り当てるルールの配列を受け取り、検証ルールを属性に割り当てます。
・Laravel Breeze API & Next.js JavaScriptフロントエンドとLaravelバックエンドアプリケーションとの接続で用いる、Laravel Sanctum認証APIのジャンプスタートとして利用できます。
・Ignition Exception Pageの改善 Spatieが開発したオープンソースの例外デバッグページ、Ignitionが再設計されました。ライトやダークのテーマ変更、カスタマイズ可能な「エディタで開く」等を実装します。
・Artisan testコマンドを用いたTest Coverage “php artisan test --coverage”により、コードカバレッジの量を調べることができます。
・Soketi Echo Server Node.js用Laravel Echoに対応する、Web SocketサーバーSoketiの対応を支援します。独自のWeb Socketサーバーを管理したいアプリケーション開発の選択肢となります。
・Improved Collections IDE Support genericの型定義が追加され、PHPStormなどのIDEやPHPStanなどの静的解析ツールで、Laravelのコレクションをネイティブ解釈できます。
・ヘルパー関数の追加 str関数とto_route関数が追加されます。str関数は、Illuminate\Support\Stringableインスタンスを返します。Str::ofと同等です。to_route関数は、指定したルートに対するリダイレクトHTTPレスポンスを生成します。
Laravel 9のバージョンアップ
Laravel 9のバージョンアップにおいては、アプリケーションの依存関係を事前に確認する必要があります。Flysystemが1.xから3.xにバージョンアップされますので、影響を事前に確認しておきましょう。Symfony MailerもSwift Mailerから置き換わりますので、事前確認が必要です。 【参考】:Laravel Upgrade Guide
可能であれば、既存環境はそのままに別のシステムをLaravel 9用に構築し、影響を調査するのが良いでしょう。
Laravel 9の使い方
LaravelはDockerを使用してLaravelプロジェクトを実行することを想定しています。そのためのコマンドラインインターフェースであるLaravel Sailを用います。PHP・MySQL、Redisを使用したLaravelアプリケーションに対応します。 【参考】:Laravel Sail
Laravel 9のAPIは以下のドキュメントに詳細情報が記載されていますので、必要に応じてご確認ください。 【参考】:Laravel API Namespaces
Laravel 9のインストール
Laravel 9を使うには、インストールが必要です。その前にLaravelの動作環境で必要となるDockerを準備しておきます。 【参考】:Laravel Installation
DockerはMacOSやWindowsの場合、Docker Desktopを用いることで簡単に構築できます。Docker DesktopのインストールはDocker社のサイトから行います。 【参考】:Docker Desktop
Windowsの場合は、Windows Subsystem for Linux 2(WSL2)を利用します。WSLをインストール後、Docker Desktopをバックエンド設定します。 【参考】:WSL のインストール 【参考】:Docker Desktop WSL 2 backend
Linuxの場合は、Docker Composeをインストールしておきます。 【参考】:Install Docker Compose
実際の操作例として、exampleディレクトリに新しいLaravelアプリケーションを作成する場合、ターミナルで以下のコマンドを実行します。
curl -s "https://laravel.build/example" | bash
プロジェクト作成後、Laravel Sailを起動します。
cd example
./vendor/bin/sail up
Dockerコンテナが起動したら、Webブラウザで”http://localhost”からアプリケーションにアクセスすることができます。
Laravel9の構築設定については、以下のリンクをご確認ください。 【参考】:Laravle Configuration
PHPにおすすめのフレームワークを体験しましょう
Laravelは3大バックエンドフレームワークとして、PHPに対応します。ウェブアプリケーションフレームワークを学んでみたい方は、各言語の代表的なフレームワーク活用をおすすめします。PHPをお使いの開発者はぜひともLaravelを試してみましょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから