PHPの人気フレームワークであるLaravelにおいて、最新メジャーバージョンとなる Laravel 12 が登場しました。
Laravel 12は、Laravel 11で導入された洗練されたスリムなディレクトリ構造(bootstrap/app.phpへの集約など)を盤石な基盤としつつ、公式AI SDK(laravel/ai)やAI開発支援ツール(Laravel Boost)の統合、React 19・Vue 3・Svelte・Livewire 3対応の最新スターターキットの全面刷新、Carbon 3への完全移行など、現代のWeb開発とAIネイティブな開発スタイルに最適化された進化を遂げています。
- Laravel 12の全体像と主要な進化ポイント
- React 19 / Vue 3 / Svelte / Livewire 3 対応の「新スターターキット」の全貌
- 公式AI SDK(
laravel/ai)とAIコーディング支援(Laravel Boost)の活用法 - Carbon 3移行やSVG画像バリデーション変更などの注目変更点・破壊的変更
- Laravel 11からLaravel 12への安全かつ最短のアップグレード手順
- アップグレード時によくあるエラー・疑問への対処法(FAQ)
- Laravel 12の概要と進化の全体像
- 1. 全面刷新された次世代スターターキット(Starter Kits)
- 2. 公式 AI エコシステム(Laravel AI SDK & Laravel Boost)
- 3. コアフレームワークの変更点・改善点(Breaking Changes & DX)
- 4. Laravel 11からLaravel 12へのアップグレード完全手順
- ステップ1:PHPバージョンの確認
- ステップ2:composer.json の依存バージョン更新
- ステップ3:composer update の実行
- ステップ4:キャッシュのクリアとテスト実行
- Laravel Shiftを活用した全自動アップグレード
Laravel 12の概要と進化の全体像
Laravel 12は「メンテナンス重視かつ開発者体験(DX)の最大化」を掲げたメジャーリリースです。大規模な破壊的変更によって開発者を悩ませるのではなく、日々の開発スピードを高め、最新のエコシステム(フロントエンド技術・AI・厳格な型付け)を自然に活用できるように設計されています。
Laravel 11 vs Laravel 12 主要スペック・変更点比較表
まずは、前バージョンであるLaravel 11とLaravel 12の主な違いを早見表で確認しましょう。
| 項目 | Laravel 11 | Laravel 12 |
|---|---|---|
| 必要PHPバージョン | PHP 8.2 以上(8.2 / 8.3) | PHP 8.2 以上(8.2 / 8.3 / 8.4) |
| 日付操作ライブラリ | Carbon 2 / Carbon 3(両対応) | Carbon 3.x 必須(Carbon 2廃止) |
| スターターキット | Laravel Breeze / Jetstream | 次世代Starter Kits(React 19, Vue 3, Svelte, Livewire 3, Tailwind CSS v4, WorkOS AuthKit) |
| AI統合機能 | 個別パッケージ(サードパーティ製) | 公式AI SDK(laravel/ai)& Laravel Boost(AI連携MCP) |
| 画像バリデーション | image ルールでSVGも許容 |
image ルールからSVGを除外(セキュリティ強化) |
| ディレクトリ構造 | スリム化構造(Kernel廃止・bootstrap集約) | Laravel 11のスリム構造を完全継承・安定化 |
| アップグレード難易度 | 中(構造変更に伴う確認が必要) | 低(多くのアプリで数分で完了) |
1. 全面刷新された次世代スターターキット(Starter Kits)
Laravel 12における最大の目玉機能のひとつが、アプリケーションスターターキットの全面リニューアルです。
- React 19・Vue 3・Svelte・Livewire 3 の最新フロントエンドフレームワークを公式サポート
- Inertia.js 2.0 によるシームレスなSPAライクな開発体験
- Tailwind CSS v4 によるビルド高速化とモダンなCSS設計
- TypeScript と shadcn/ui(Livewire版はFlux UI)を採用した高品質なUIコンポーネント
- WorkOS AuthKit 連携によるソーシャル認証・パスキー・SSOの簡単導入
- ダークモード・トースト通知・ユーザープロフィール管理が最初から完備
従来のLaravel BreezeやLaravel Jetstreamで提供されていた認証スカフォールドが、最新のWebフロントエンドエコシステムに合わせて一新されました。
新規プロジェクト作成コマンドとスタック選択
最新のLaravel Installerを使用すると、対話型CLIで好みのスタックを選択してプロジェクトを即座に作成できます。
# Laravel Installerを最新版に更新
composer global update laravel/installer
# 対話型ウィザードで新規プロジェクトを作成
laravel new my-app
コマンドを実行すると、以下のようにフロントエンドスタック、認証プロバイダー(Blade / React / Vue / Svelte / Livewire)、テストフレームワーク(Pest / PHPUnit)を直感的に選択できます。
_ _
| | | |
| | __ _ _ __ __ ___ _____| |
| | / _` | '__/ _` \ \ / / _ \ |
| |___| (_| | | | (_| |\ V / __/ |
|______\__,_|_| \__,_| \_/ \___|_|
Which starter kit would you like to install?
> React with Inertia
Vue with Inertia
Svelte with Inertia
Livewire (Volt & Flux)
Blade
Would you like to use WorkOS AuthKit for authentication? (yes/no) [no]:
> yes
WorkOS AuthKit 連携によるエンタープライズ認証
Laravel 12のスターターキットでは、オプションとして WorkOS AuthKit が利用可能です。これにより、Google・GitHub・Microsoftなどのソーシャルログイン、パスキー(Passkeys / WebAuthn)、SAML SSO(シングルサインオン)を独自実装することなく、高品質な認証画面とともに即座に導入できます。
従来のパスワード認証に加えて、BtoB SaaSなどで必須となるエンタープライズセキュリティ要件へも容易に対応できるようになりました。
2. 公式 AI エコシステム(Laravel AI SDK & Laravel Boost)
Laravel 12の登場とともに、Laravelエコシステム公式から AIネイティブなアプリケーション開発を支援する公式パッケージ群 がリリースされました。
laravel/ai(Laravel AI SDK):OpenAI、Anthropic(Claude)、Google(Gemini)、Groq、Ollamaなど複数のLLMを統一APIで扱える公式SDK。- Laravel Boost:Cursor、Claude Code、AntigravityなどのAIコーディングアシスタントとLaravelプロジェクトを繋ぐ MCP(Model Context Protocol)サーバー。
公式AI SDK(laravel/ai)の使い方
laravel/ai を導入すると、各AIプロバイダーごとのAPI仕様の違いを抽象化し、LaravelらしいエレガントなPHP構文でAI機能を構築できます。
composer require laravel/ai
1. AIエージェントクラスの定義
指示(System Prompt)、ツール(Function Calling)、コンテキスト、メモリ(会話履歴)を1つのPHPクラスにカプセル化できます。
<?php
namespace App\Ai\Agents;
use Laravel\Ai\Contracts\Agent;
use Laravel\Ai\Prompt;
class SupportAssistant implements Agent
{
/**
* AIへのシステム指示(System Prompt)を定義
*/
public function instructions(): string
{
return "あなたは当Webサービスの親切で丁寧なカスタマーサポート担当者です。専門用語を避け、分かりやすく回答してください。";
}
/**
* AIが利用できるツール(Function Calling)を登録
*/
public function tools(): array
{
return [
\App\Ai\Tools\SearchUserOrders::class,
\App\Ai\Tools\CheckStock::class,
];
}
}
2. 構造化出力(Structured Output)の取得
LLMからのレスポンスをPHPの連想配列や指定したクラスの型付きオブジェクトとして確実に受け取ることができます。
use App\Ai\Agents\SentimentAnalyzer;
use Laravel\Ai\Facades\Ai;
// ユーザーのレビュー文から感情スコアとタグを構造化データとして抽出
$analysis = Ai::agent(SentimentAnalyzer::class)
->schema([
'sentiment' => 'enum:positive,neutral,negative',
'score' => 'numeric:0..100',
'keywords' => 'array',
'summary' => 'string',
])
->prompt("このサービスは最高でした!注文して翌日に届き、サポートの返信も迅速でした。")
->asArray();
/*
$analysis の中身:
[
'sentiment' => 'positive',
'score' => 95,
'keywords' => ['翌日配送', '迅速なサポート', '最高'],
'summary' => '配送スピードとカスタマーサポート対応に大変満足している。'
]
*/
3. テスト用 Fake 機能(Ai::fake())
Laravelの優れたテスト文化を踏襲し、実際のAPIリクエストを送らずにモックテストを実行できます。
use Laravel\Ai\Facades\Ai;
public function test_ai_summary_generation(): void
{
Ai::fake([
'summary' => 'テスト用の要約テキストです。',
]);
$response = $this->postJson('/api/generate-summary', [
'text' => '長文の記事テキスト...',
]);
$response->assertOk();
Ai::assertPrompted('長文の記事テキスト...');
}
4. プロバイダー自動フォールバック
プライマリのAIプロバイダー(例: OpenAI)でレート制限や障害が発生した場合に、自動的にセカンダリ(例: AnthropicやGemini)へリクエストをフォールバックする高可用性設計が標準搭載されています。
Laravel Boost:AIアシスタント向けMCP連携
Laravel Boost は、開発環境においてAIコーディングエージェント(Cursor, Claude Code, Antigravity等)と連携するためのMCP(Model Context Protocol)サーバーです。
AIエージェントにプロジェクトのルート定義、データベーススキーマ(マイグレーション情報)、Eloquentモデルの型情報、設定値を安全にコンテキストとして渡すことで、「ハルシネーションのない、現在のプロジェクト規約に完全準拠したコード生成」 を実現します。
3. コアフレームワークの変更点・改善点(Breaking Changes & DX)
Laravel 12では、コアフレームワークの信頼性と安全性を高めるための重要なアップデートが実施されています。
① Carbon 3 への完全移行(Carbon 2の廃止)
Laravel 12では、日付・時刻処理ライブラリである Carbon 3.x が必須要件 となり、従来のCarbon 2.xのサポートが終了しました。
- PHP 8.2以上の厳格な型付けに準拠し、引数・戻り値の型安全性が向上
- 一部の非推奨メソッドや曖昧なフォーマット引数の扱いが厳格化
now()->diffInDays($date)など一般的なCarbonメソッドは後方互換性が維持されており、通常のアプリコードはそのまま動作
② SVG画像バリデーションの変更(セキュリティ向上)
セキュリティ上の理由(SVGファイル内の不正なJavaScript実行やXSS攻撃の防止)から、image バリデーションルールにおいて SVG ファイルがデフォルトで除外 されるようになりました。
// Laravel 11以前:SVGも通る
$request->validate([
'avatar' => 'required|image', // SVGも通過
]);
// Laravel 12:SVGは除外される(JPEG, PNG, GIF, WebP, AVIF等のみ通過)
$request->validate([
'avatar' => 'required|image', // SVGはバリデーションエラー
]);
// 【対処法】SVGのアップロードを明示的に許可したい場合:
$request->validate([
'avatar' => 'required|file|mimes:jpeg,png,jpg,gif,svg,webp',
]);
③ Concurrency(並行処理)ヘルパーの改善
Laravel 11で導入された Concurrency::run() ヘルパーにおいて、返却される配列のキーとインデックスの整合性が向上し、非同期タスクの実行結果をより確実にハンドリングできるようになりました。
④ データベース内部クラス(Blueprint等)の引数変更
Illuminate\Database\Schema\Blueprint などの低レベルな内部クラスのコンストラクタに Illuminate\Database\Connection インスタンスが必須となりました。一般的なマイグレーションファイル(Schema::create(...))を書くユーザーには影響ありませんが、カスタムマイグレーション拡張を行うパッケージ開発者は対応が必要です。
⑤ ローカルストレージのデフォルトルートパスの最適化
ローカルファイルシステムのディスク設定において、デフォルトのルートパス解決処理が整理され、マルチテナント環境やコンテナ環境での一貫性が向上しました。
4. Laravel 11からLaravel 12へのアップグレード完全手順
Laravel 11からLaravel 12へのアップグレードは非常にシンプルで、多くのプロジェクトでは 10分〜15分程度 で安全に完了できます。
🚀 アップグレード手順の全体フロー
- PHPバージョンの確認(PHP 8.2以上)
composer.jsonの依存パッケージ更新composer updateの実行- Laravel Installerの更新
- テストスイートの実行(
php artisan test)
ステップ1:PHPバージョンの確認
Laravel 12の動作環境は PHP 8.2 / 8.3 / 8.4 です。ターミナルでPHPバージョンを確認してください。
php -v
# PHP 8.2.0 以上であることを確認
ステップ2:composer.json の依存バージョン更新
プロジェクトルートの composer.json を開き、require および require-dev の各パッケージをLaravel 12対応のバージョンへ書き換えます。
{
"require": {
"php": "^8.2",
"laravel/framework": "^12.0",
"laravel/tinker": "^2.10.1"
},
"require-dev": {
"fakerphp/faker": "^1.23",
"laravel/pail": "^1.2.2",
"laravel/pint": "^1.21",
"laravel/sail": "^1.41",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"pestphp/pest": "^3.7",
"pestphp/pest-plugin-laravel": "^3.1",
"phpunit/phpunit": "^11.5.3"
}
}
ステップ3:composer update の実行
依存関係を更新し、新しいパッケージ群をインストールします。
composer update
依存関係の解決でエラーが発生した場合は、--with-all-dependencies オプションを付けて実行してみてください。
composer update --with-all-dependencies
ステップ4:キャッシュのクリアとテスト実行
アップグレード後は、設定・ルート・ビューのキャッシュをクリアし、テストスイートを実行して正常動作を確認します。
# キャッシュクリア
php artisan optimize:clear
# テストスイートの実行
php artisan test
Laravel Shiftを活用した全自動アップグレード
大規模な商用プロジェクトや複雑な依存関係を持つプロジェクトの場合は、公式推奨サービスである Laravel Shift の利用もおすすめです。GitHubプルリクエスト形式で必要なコード変更と依存関係の調整を全自動で提案してくれます。
5. アップグレード時のよくある質問とトラブル対処法(FAQ)
composer update 時に Carbon 2 関連の競合エラーが発生します
A. プロジェクトで導入しているサードパーティ製パッケージの中に、"nesbot/carbon": "^2.0" に固定されているものが存在する可能性があります。該当パッケージのGitHubリポジトリを確認し、Laravel 12 / Carbon 3対応版へバージョンアップするか、メンテナンスされていないパッケージは代替ライブラリへの移行を検討してください。
A. Laravel 12では image ルールからSVGが除外されたためです。SVGを意図的に受け入れる場合は、'file|mimes:jpeg,png,jpg,gif,svg,webp' のように mimes ルールで svg を明示的に指定してください。
A. はい、可能です。Laravel 11と同様に、従来の app/Http/Kernel.php や config/ ディレクトリを保持したプロジェクト構成でも後方互換性が維持されているため、そのままLaravel 12へアップグレードできます。
A. はい。composer require laravel/ai を実行すれば、既存のLaravel 12アプリケーションにいつでも公式AI SDKを導入できます。
あわせて読みたいLaravel実践ガイド(関連記事)
Laravelの基礎知識から実践的な機能実装まで、あわせて確認しておきたいおすすめガイドです。
📖 Laravel 11の変更点総まとめ
スリム化されたディレクトリ構造、Kernel廃止とbootstrap/app.php設定の基本を総復習。
🔍 Laravelバージョン確認方法まとめ
CLIコマンド・composer.lock・PHPコードから現在稼働中のLaravelバージョンを正確に確認。
🔐 Laravel Sanctum完全攻略
SPA認証(Cookie)とモバイル・外部API向けトークン認証(Bearer)の実装手順。
⚖️ Laravel認証の違い徹底比較
Breeze・Sanctum・Jetstream・Fortifyの設計思想とプロジェクト規模に応じた選定基準。
⚡ Laravelキュー&非同期処理 実装ガイド
databaseドライバ設定、Jobクラス作成、dispatchからワーカー常駐管理まで。
☁️ Laravel×S3画像アップロード完全ガイド
Storageファサード設定・Flysystem導入・公開URL取得・IAM権限設定を解説。
✉️ Laravelメール送信完全ガイド
Mailableクラスの使い方、Bladeテンプレート作成、Mailpitでの開発環境テスト。
🌐 Laravelバリデーション日本語化完全ガイド
lang/ja/validation.phpの導入とattributes(項目名)の日本語化設定。
まとめ&アップグレードチェックリスト
Laravel 12は、Laravel 11で確立されたスリムな設計をさらに洗練させ、モダンなフロントエンドスターターキット と 強力な公式AIエコシステム を手に入れた非常に魅力的なバージョンです。
破壊的変更が極めて少なくアップグレードコストが低いため、既存のLaravel 11プロジェクトはもちろん、新規開発をスタートする際にも安心して選択できます。
📋 アップグレード実践チェックリスト
- ✅ サーバー環境のPHPが 8.2 以上 であることを確認した
- ✅
composer.jsonでlaravel/framework: ^12.0、phpunit: ^11.0等に更新した - ✅
composer updateを実行し、依存関係の競合(Carbon等)を解消した - ✅
php artisan optimize:clearで設定キャッシュをクリアした - ✅
php artisan testで既存のテストがすべてパスすることを確認した - ✅ SVGをアップロードする処理がある場合は
mimes:svgへの記述変更を確認した - ✅ 新規機能として公式AI SDK(
laravel/ai)や最新スターターキットの採用を検討した
ぜひ本ガイドを参考に、Laravel 12の先進的で快適な開発体験を取り入れてみてください!

コメント