こんにちは、かつコーチです。
2020年3月にLaravel7がリリースされました。
少し時間が経っていますが、これまでのLaravel6と何が変わったのかをご紹介します。
Bladeコンポーネントの改良
Laravel 7では、Bladeテンプレートのコンポーネント機能が大幅に強化され、使いやすくなりました。
以前のバージョンでは、コンポーネントのクラスを定義するために独自の構造が必要でしたが、
Laravel 7ではクラスベースのコンポーネントが導入され、コードの再利用や可読性が向上しています。
変更点:
- クラスベースコンポーネントが追加され、複雑なロジックをコンポーネント内に含めることが容易になった。
- コンポーネント内で
slot
を簡単に使えるようになり、柔軟性が向上。
// クラスベースのコンポーネント作成
php artisan make:component Alert
<!-- Bladeファイルでの呼び出し -->
<x-alert type="error">
<x-slot name="title">Error</x-slot>
Something went wrong!
</x-alert>
Laravel Airlock (後のLaravel Sanctum)
Laravel 7で導入された「Airlock」(後に「Sanctum」に改名)は、
シングルページアプリケーション(SPA)やモバイルアプリケーション向けに
シンプルなトークンベースの認証システムを提供します。
これにより、従来の複雑なOAuthを使わなくても、API認証が簡単に実装できるようになりました。
変更点:
- トークン認証が簡素化され、APIの開発が容易になった。
- Cookieベースのセッション認証とトークンベースのAPI認証を併用できるようになった。
composer require laravel/sanctum
ルーティングのキャッシュスピード改善
Laravel 7では、ルーティングキャッシュが最適化され、
大規模なアプリケーションにおいてルート定義のキャッシュがさらに高速になりました。
これにより、ルーティングキャッシュを使うことで、
アプリケーションの起動速度が大幅に改善されます。
変更点:
- キャッシュ性能の向上により、特に大量のルートを持つアプリケーションでのレスポンス速度が向上。
php artisan route:cache
HTTPクライアントの追加
Laravel 7では、新しいHTTPクライアントが導入され、
外部APIとのやり取りが簡単かつ直感的に行えるようになりました。
このクライアントは、基盤となるGuzzleライブラリを使いつつ、
より簡単に使えるラッパーを提供しています。
変更点:
- 外部リクエストを送るのが非常に簡単になり、エレガントなAPIで非同期リクエストやリトライ機能もサポート。
$response = Http::get('https://api.example.com/users');
$response = Http::withHeaders([
'X-Example' => 'Value',
])->post('https://api.example.com/users', [
'name' => 'Taylor',
]);
ルーティングにおけるパラメータのキャスト
Laravel 7では、ルートパラメータに型を付けることができるようになり、
モデルバインディング時により柔軟で安全な型チェックが行えるようになりました。
変更点:
- ルートパラメータを自動的に型キャストできるようになり、コードの安全性と可読性が向上。
Route::get('/user/{user}', function (App\Models\User $user) {
return $user->email;
});
artisan test コマンドの追加
Laravel 7では、新しいartisan test
コマンドが追加され、PHPUnitテストの実行が簡略化されました。
このコマンドにより、テストの実行がphpunit
を直接使用するよりも迅速に行えるようになりました。
変更点:
- テストの実行がさらに簡単に行えるようになった。
- Laravel独自の出力フォーマットで見やすいテスト結果を提供。
php artisan test
CORSサポート
Laravel 7では、デフォルトでCORS(Cross-Origin Resource Sharing)をサポートするようになりました。
これにより、外部ドメインからのAPIリクエストを制御できるようになり、
SPAやモバイルアプリケーションとの連携がより容易になりました。
変更点:
laravel-cors
パッケージが標準で統合され、クロスオリジンリクエストをシンプルに設定できるようになった。
composer require fruitcake/laravel-cors
改良されたカスタムキャスト
Laravel 7では、Eloquentモデルの属性に対して、
カスタムキャストがより強力かつ簡単に定義できるようになりました。
これにより、特定のデータ型の変換ロジックをよりエレガントに扱えるようになりました。
変更点:
- カスタムキャストのサポートが拡張され、より複雑なデータ型を簡単に操作可能。
class User extends Model
{
protected $casts = [
'is_admin' => 'boolean',
];
}
フリューエントストラグル (Fluent String Operations)
Laravel 7では、新しいフリューエントストラグルAPIが導入され、
文字列操作がさらに強力かつチェーン可能になりました。
このAPIは、文字列操作の際に多くの場面で便利です。
変更点:
- チェーン可能な文字列操作ができるようになり、より柔軟にテキスト処理ができるようになった。
use Illuminate\Support\Str;
$string = Str::of('Laravel Framework')
->replace('Laravel', 'Symfony')
->upper();
10. バッチジョブの改善
Laravel 7では、ジョブのバッチ処理が追加され、複数のジョブをバッチとしてまとめて実行したり、
状態を管理することができるようになりました。
バッチの進行状況を簡単に追跡したり、成功や失敗をハンドリングできます。
変更点:
- ジョブのバッチ処理がサポートされ、複数のジョブの状態をまとめて管理できるようになった。
Bus::batch([
new ProcessPodcast,
new ReleasePodcast
])->dispatch();
まとめ
Laravel 7では、主に以下の点が強化されました:
- BladeコンポーネントやHTTPクライアントなどの開発者体験を向上させる機能。
- API認証やルーティングキャッシュなど、アプリケーションのパフォーマンスを向上させる機能。
- テストやジョブバッチ処理など、システムの運用を簡素化する機能。
これにより、開発者が効率的に強力なアプリケーションを構築できるようにするためのツールがさらに豊富になりました。