2026年3月17日にリリースされたLaravel 13の全新機能を徹底解説。AI SDK、PHP Attributes、JSON:API、ベクトル検索など注目機能のコード例付き。Laravel 12からのアップグレード手順も詳しく解説します。
2026年3月17日、Laravel 13が正式リリースされました。今回のリリースは「破壊的変更ほぼゼロ」を掲げながらも、AI SDK、PHP Attributes、JSON:API、ベクトル検索など、開発者の生産性を大きく向上させる新機能が多数追加されています。
この記事では、Laravel 13の全新機能をコード例付きで徹底解説し、Laravel 12からのアップグレード手順を詳しく紹介します。
サポート期間とPHP要件
| 項目 | Laravel 12 | Laravel 13 |
|---|---|---|
| リリース日 | 2025年2月24日 | 2026年3月17日 |
| PHP要件 | 8.2 - 8.5 | 8.3 - 8.5 |
| バグ修正 | 2026年8月まで | 2027年Q3まで |
| セキュリティ修正 | 2027年2月まで | 2028年3月まで |
PHP 8.2のサポートが廃止されました。 Laravel 13を使用するには、PHP 8.3以上が必要です。アップグレード前に本番環境のPHPバージョンを必ず確認してください。
新機能1: Laravel AI SDK
Laravel 13最大の目玉機能です。テキスト生成、画像生成、音声合成、埋め込みベクトル、ツール呼び出しエージェントなど、AIに関するあらゆる機能をプロバイダー非依存の統一APIで利用できます。
対応プロバイダー: OpenAI(ChatGPT)、Anthropic(Claude)、Google Gemini、Azure、Groq、DeepSeek、Ollama
テキスト生成・エージェント
use App\Ai\Agents\SalesCoach;
// エージェントを作成してプロンプトを送信
$response = SalesCoach::make()->prompt('この営業トランスクリプトを分析して...');
return (string) $response;
画像生成
use Laravel\Ai\Image;
// テキストから画像を生成
$image = Image::of('キッチンカウンターの上のドーナツ')->generate();
$rawContent = (string) $image;
音声生成(Text-to-Speech)
use Laravel\Ai\Audio;
// テキストから音声を生成
$audio = Audio::of('Laravelでコーディングするのが大好きです。')->generate();
$rawContent = (string) $audio;
埋め込みベクトル(Embeddings)
use Illuminate\Support\Str;
// テキストをベクトルに変換
$embeddings = Str::of('ナパバレーには素晴らしいワインがあります。')->toEmbeddings();
AI SDKはLaravel 13と同時にベータから正式版に昇格しました。composer require laravel/aiでインストールできます。OpenAI、Claude、Geminiなどを自由に切り替えられるため、ベンダーロックインを避けられます。
新機能2: PHP Attributes(属性構文)
開発者向けの最大のQOL改善です。従来のクラスプロパティ宣言の代わりに、**ネイティブPHP属性(Attributes)**を使って設定を記述できるようになりました。15箇所以上で対応しており、完全にオプションです。
コントローラーでの使用例
<?php
namespace App\Http\Controllers;
use App\Models\Comment;
use App\Models\Post;
use Illuminate\Routing\Attributes\Controllers\Authorize;
use Illuminate\Routing\Attributes\Controllers\Middleware;
#[Middleware('auth')]
class CommentController
{
#[Middleware('subscribed')]
#[Authorize('create', [Comment::class, 'post'])]
public function store(Post $post)
{
// ミドルウェアと認可をアトリビュートで宣言
}
}
キュージョブでの使用例
use Illuminate\Queue\Attributes\Tries;
use Illuminate\Queue\Attributes\Backoff;
use Illuminate\Queue\Attributes\Timeout;
#[Tries(3)]
#[Backoff([10, 30, 60])]
#[Timeout(120)]
class ProcessPodcast implements ShouldQueue
{
public function handle(): void
{
// ジョブの処理
}
}
対応範囲
| 対象 | 使える属性の例 |
|---|---|
| Eloquentモデル | #[Table], #[Fillable], #[Hidden] |
| コントローラー | #[Middleware], #[Authorize] |
| キュージョブ | #[Tries], #[Backoff], #[Timeout], #[FailOnTimeout] |
| イベント | 属性ベースのリスナー登録 |
| 通知 | 属性ベースの設定 |
| バリデーション | 属性ベースのルール定義 |
| テスト | 属性ベースのテスト設定 |
新機能3: JSON:API サポート
JSON:API仕様に準拠したAPIを簡単に構築できるファーストパーティ機能が追加されました。
主な機能
- リソースオブジェクトのシリアライゼーション - モデルをJSON:API形式に自動変換
- リレーションシップインクルージョン -
?include=author,commentsのサポート - スパースフィールドセット -
?fields[articles]=title,bodyで返却フィールドを制限 - リンク管理 - self/relatedリンクの自動生成
- JSON:API準拠ヘッダー - Content-Typeなどを自動設定
JSON:APIはRESTful APIの標準仕様の一つで、フロントエンド(React、Vue等)との連携が容易になります。これまでサードパーティパッケージが必要でしたが、Laravel 13でファーストパーティになりました。
新機能4: ベクトル検索(Semantic Search)
PostgreSQL + pgvectorを使ったセマンティック検索がネイティブサポートされました。AI SDKのEmbeddings機能と連携して、意味ベースの検索を簡単に構築できます。
// テキストの意味で類似ドキュメントを検索
$documents = DB::table('documents')
->whereVectorSimilarTo('embedding', 'ナパバレーのベストワイナリー')
->limit(10)
->get();
「キーワード一致」ではなく「意味の類似性」で検索できるため、ユーザーが正確なキーワードを知らなくても関連コンテンツを見つけられます。RAG(検索拡張生成)アプリケーションの構築にも最適です。
新機能5: キュールーティング
Queue::route()メソッドにより、ジョブクラスごとのキュー設定をサービスプロバイダーで一元管理できるようになりました。
// AppServiceProvider等で一箇所にまとめて定義
Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');
Queue::route(SendNewsletter::class, connection: 'sqs', queue: 'emails');
Queue::route(GenerateReport::class, connection: 'redis', queue: 'reports');
これまでは各ジョブクラス内で$connectionや$queueプロパティを個別に設定する必要がありましたが、インフラ設定とビジネスロジックを分離できるようになります。
新機能6: Cache::touch()
キャッシュのTTL(有効期限)を値を再取得・再保存せずに延長できるようになりました。
// キャッシュの有効期限を延長(値はそのまま)
Cache::touch('user-session-123');
// 成功時true、キーが存在しない場合false
if (Cache::touch('user-session-123')) {
// TTLが延長された
}
新機能7: リクエスト偽造防止の強化
CSRFミドルウェアがVerifyCsrfTokenから**PreventRequestForgeryにリネームされ、Sec-Fetch-Siteヘッダーを使ったオリジン認識リクエスト検証**が追加されました。
テストやルート定義でCSRFミドルウェアを除外している場合、クラス名の変更が必要です。ただし、旧名は廃止予定エイリアスとして残るため、すぐに壊れることはありません。
// Laravel 12
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
->withoutMiddleware([VerifyCsrfToken::class]);
// Laravel 13(推奨)
use Illuminate\Foundation\Http\Middleware\PreventRequestForgery;
->withoutMiddleware([PreventRequestForgery::class]);
Laravel 12からのアップグレード手順
推定所要時間は約10分です。以下の手順に沿って進めてください。
composer.jsonの変更箇所
{
"require": {
"php": "^8.3",
"laravel/framework": "^13.0",
"laravel/tinker": "^3.0"
},
"require-dev": {
"phpunit/phpunit": "^12.0"
}
}
キャッシュプレフィックスの互換設定
Laravel 13ではキャッシュキーのデフォルト区切り文字がアンダースコアからハイフンに変更されました。既存のキャッシュを無効にしたくない場合は、.envで明示的に設定してください。
# .envに追加(Laravel 12の挙動を維持する場合)
CACHE_PREFIX=laravel_cache_
REDIS_PREFIX=laravel_database_
SESSION_COOKIE=laravel_session
Laravel Boostによる自動アップグレード
Laravel公式のMCPサーバー「Laravel Boost」を使えば、Claude CodeやCursor等でコマンド一発でアップグレードできます。
# Laravel Boostをインストール
composer require laravel/boost:^2.0 --dev
# Claude Code等で以下を実行
/upgrade-laravel-v13
アップグレード時の注意点チェックリスト
その他の細かい変更点
低〜非常に低影響の変更
よくある質問
この技術、御社の業務にも活かせます
業務システム開発
Laravelを使った業務システムの構築・改修を20年以上の経験でサポートします
※ 通常1営業日以内にご返信します
まとめ
Laravel 13は破壊的変更を最小限に抑えつつ、AI時代に対応した強力な新機能を多数追加したリリースです。
特にAI SDKとベクトル検索は、これからのWebアプリケーション開発に大きなインパクトを与えるでしょう。PHP Attributesによるコードの可読性向上も、日々の開発体験を確実に改善してくれます。
アップグレードは約10分で完了するので、ぜひ早めに移行して新機能を活用してみてください。