Webアプリケーションの開発において、フレームワークを最新のバージョンに保つことは、セキュリティの確保や開発効率の向上、新機能の恩恵を受けるために極めて重要です。PHPを代表するWebフレームワークであるLaravelは、現在毎年第1四半期(Q1)にメジャーバージョンをリリースする年次リリースサイクルを採用しています。
プロジェクトを運用・開発していると、以下のような疑問や課題に直面することが多いのではないでしょうか。
- 「現在のLaravelの最新バージョンは何?サポート期間はいつまで?」
- 「最新のLaravelを動かすために必要なPHPのバージョン要件は?」
- 「Laravel 11やLaravel 12で何が変わり、どんな新機能が追加されたのか?」
- 「古いバージョンのLaravelから安全に最新版へアップデートする手順を知りたい」
この記事では、Laravelの最新バージョン情報、PHP対応要件一覧、主要な新機能や設計の変更点、そして既存プロジェクトを安全にアップデートする具体的な6ステップの手順までを網羅して徹底解説します。
Laravelの最新バージョンとサポート状況・PHP対応表
Laravelは、主要バージョンごとに明確なサポートポリシーを定めています。各メジャーリリースに対して、バグ修正が18ヶ月間、セキュリティ修正が2年間提供されます。
まずは、主要バージョンのリリース時期、サポート期限、および対応するPHPバージョン要件を確認しましょう。
| Laravelバージョン | リリース年月 | 必要PHPバージョン | バグ修正期限 | セキュリティ修正期限 | ステータス |
|---|---|---|---|---|---|
| Laravel 12 | 2025年2月 | PHP 8.2 〜 8.5 | 2026年8月 | 2027年2月 | サポート中(最新) |
| Laravel 11 | 2024年3月 | PHP 8.2 〜 8.4 | 2025年9月 | 2026年3月 | セキュリティ修正のみ |
| Laravel 10 | 2023年2月 | PHP 8.1 〜 8.3 | 2024年8月(終了) | 2025年2月(終了) | EOL(サポート終了) |
| Laravel 9 | 2022年2月 | PHP 8.0 〜 8.2 | 2023年8月(終了) | 2024年2月(終了) | EOL(サポート終了) |
サポート期限が切れたバージョン(EOL: End of Life)を本番環境で使い続けると、新たに発見された脆弱性に対するセキュリティパッチが提供されないため、不正アクセスやデータ漏洩の重大なリスクが生じます。Laravel 10以前をご利用中の場合は、速やかに最新バージョンへのアップグレードを検討してください。
バージョンごとの詳細なサポート期限やEOLの背景については、LaravelのEOL一覧表とサポート期限で詳しく解説しています。
現在のLaravelバージョンを確認する方法
アップデート作業を開始する前に、まずは手元の環境で動作しているLaravelおよびPHPのバージョンを正確に確認しましょう。
1. Artisanコマンドで確認(最速)
ターミナルでプロジェクトのルートディレクトリに移動し、以下のコマンドを実行します。
php artisan --version
【出力例】
Laravel Framework 11.20.0
また、Laravel 9以降では php artisan about コマンドを実行することで、Laravelのバージョンだけでなく、実行環境のPHPバージョン、Composerバージョン、キャッシュドライバーやデータベース設定などを一括で確認できます。
php artisan about
2. composer.json / composer.lock で確認
コマンドラインが使えない環境やコードベース単体で確認したい場合は、composer.json または composer.lock を開きます。
composer.json: 指定されているバージョン制約(例:"laravel/framework": "^11.0")composer.lock: 実際にインストールされている正確なバージョン(例:"version": "v11.20.0")
より詳しいバージョンの確認方法(PHPコード内での動的判定やSail環境での確認など)は、Laravelのバージョン確認方法まとめをご参照ください。
近年のLaravelにおける主要な新機能と設計変更
近年のLaravel(Laravel 11およびLaravel 12)では、開発者の生産性を最大限に高めるため、フレームワークの基本構造のスリム化やリアルタイム通信、モダンなフロントエンドスターターキットの導入など、大幅な進化が遂げられています。
1. ディレクトリ構造の劇的なスリム化(Laravel 11〜)
Laravel 11で最も話題となったのが、アプリケーション構造の簡素化です。長年親しまれてきた app/Http/Kernel.php や app/Console/Kernel.php が廃止され、ミドルウェア、例外処理、ルーティングの設定がすべて bootstrap/app.php に集約されました。
【bootstrap/app.php の設定例】
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
// グローバルミドルウェアやエイリアスの登録
$middleware->web(append: [
\App\Http\Middleware\HandleInertiaRequests::class,
]);
})
->withExceptions(function (Exceptions $exceptions) {
// カスタム例外ハンドリングの定義
})->create();
また、デフォルトの config/ ディレクトリにあった多数の設定ファイルも内部のデフォルト値に委ねられ、カスタマイズしたい設定ファイルのみを php artisan config:publish で手動配置する方式になりました。
2. Laravel Reverb(公式WebSocketサーバー)
リアルタイムWebアプリケーション(チャット、通知、ライブダッシュボードなど)を構築する際、従来はPusherやSoketiなどの外部サービス・ツールに依存することが一般的でした。
Laravel 11からは、公式のファーストパーティWebSocketサーバーであるLaravel Reverbが登場しました。Reverbは高速・スケーラブルであり、Laravelのイベントブロードキャスト機能とシームレスに連携します。
# Reverbのインストールと起動
composer require laravel/reverb
php artisan reverb:start
3. Starter Kitsの刷新とモダンスタック(Laravel 12〜)
Laravel 12では、新規アプリケーション立ち上げ用のスターターキットが一新されました。React 19、Vue 3、Livewireをベースにしたモダンな構成が提供され、TypeScriptサポートやTailwind CSS、shadcn/uiスタイルのコンポーネントが標準で統合されています。
4. Concurrency(並列処理)機能
複数の独立した重い処理(外部APIリクエストの複数同時呼び出しなど)を並列で実行できる Concurrency ファサードが導入されました。
use Illuminate\Support\Facades\Concurrency;
[$userProfile, $orderHistory] = Concurrency::run([
fn () => Http::get('https://api.example.com/users/1')->json(),
fn () => Http::get('https://api.example.com/orders/user/1')->json(),
]);
これにより、シーケンシャルに実行すると合計数秒かかっていた処理を、最も遅いリクエストの待ち時間だけで完了させることが可能になります。
5. 便利なArtisanジェネレーターコマンドの拡充
開発時によく作成するEnumやInterface、Trait、汎用クラスを簡単に生成できる専用コマンドが追加されました。
# Enumの生成
php artisan make:enum UserRole
# Interfaceの生成
php artisan make:interface PaymentGatewayInterface
# Traitの生成
php artisan make:trait HasUuid
# 汎用Classの生成
php artisan make:class Services/PaymentService
Laravelを最新バージョンにアップデートする手順(6ステップ)
ここからは、実際に既存のLaravelプロジェクトを最新バージョンへ安全にアップグレードする具体的な手順を解説します。
ステップ1:事前準備とバックアップ・PHPバージョンの確認
アップデート作業を始める前に、必ず以下の2点を行ってください。
- Gitコミットまたは作業ブランチの作成:
git checkout -b upgrade-latest-laravelのように専用のブランチを作成し、現在の状態をコミットしておきます。 - データベースと環境ファイルのバックアップ: 万が一のロールバックに備え、データベースのダンプと
.envファイルをバックアップします。 - PHPバージョンの確認: ターゲットとするLaravelのバージョン要件(例: Laravel 12ならPHP 8.2以上、推奨PHP 8.3/8.4)を満たしているか確認します。
php -v
PHPのバージョンが古い場合は、OSのパッケージマネージャー、Docker(Sail)、またはLaravel Herdを用いてPHPを更新してください。
ステップ2:公式アップグレードガイドの確認
Laravelのメジャーバージョンアップには、いくつかの破壊的変更(Breaking Changes)が含まれます。作業前に必ず公式の「Upgrade Guide」を一読し、自社プロジェクトで利用している機能に変更がないか確認します。
公式ドキュメントの読み方や効率的な情報収集方法については、Laravel公式ドキュメントの見方ガイドで詳しく解説しています。
ステップ3:composer.json の依存関係を更新する
プロジェクトルートにある composer.json をエディタで開き、Laravel本体および公式関連パッケージのバージョン指定を最新版に書き換えます。
【composer.json の変更例(Laravel 11から12への更新例)】
{
"require": {
"php": "^8.2",
"laravel/framework": "^12.0",
"laravel/tinker": "^2.10"
},
"require-dev": {
"fakerphp/faker": "^1.23",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.1",
"pestphp/pest": "^3.0",
"pestphp/pest-plugin-laravel": "^3.0"
}
}
※利用しているサードパーティ製パッケージ(例: spatie/laravel-permission など)がある場合、それらのパッケージも最新のLaravelに対応したバージョンへ更新指定する必要があります。
ステップ4:Composer更新コマンドを実行する
依存関係を更新するため、以下のコマンドを実行します。依存関係の競合を防ぐため、--with-all-dependencies オプションを付与して実行するのが確実です。
composer update --with-all-dependencies
Composerパッケージの管理やインストールの基礎知識については、Composer Installガイドも参考にしてください。
ステップ5:コードの修正と非推奨(Deprecated)の解消
パッケージの更新が完了したら、アップグレードガイドに記載されている変更点に合わせてコードを修正します。
- 設定ファイル・環境変数: 新しく追加された環境変数や、廃止された設定値がないかチェック
- ミドルウェア・ルーティング: ミドルウェアのシグネチャや登録方法に変更がある場合の修正
- モデル・マイグレーション: キャスト方法やリレーション定義の変更対応
ステップ6:キャッシュクリアと自動テストの実行
コード修正が完了したら、古いキャッシュファイルを一度すべてクリアし、テストスイートを実行してアプリケーションの正常動作を確認します。
# 全設定・ルート・ビューキャッシュのクリア
php artisan optimize:clear
# データベースマイグレーションの確認(必要な場合)
php artisan migrate
# テストの実行
php artisan test
すべてのテストがパスし、ブラウザ上での手動動作確認で問題がなければ、アップグレード完了です。
アップグレードを効率化する便利ツール
手動でのコード変更や依存関係の確認作業を大幅に短縮できるおすすめのツールを2つ紹介します。
1. Laravel Shift(公式推奨・自動PR作成サービス)
Laravel Shiftは、指定したリポジトリに対してアップグレードに必要なコード修正を全自動で行い、Pull Requestを作成してくれる有料サービスです。設定ファイルの移行、名前空間の更新、非推奨メソッドの書き換えなどを漏れなく自動で実行してくれるため、中〜大規模プロジェクトの移行コストを劇的に削減できます。
2. Rector(PHPコード自動リファクタリング)
Rectorは、オープンソースのPHP自動リファクタリングツールです。Laravel用のルールセット(rector/rector-laravel)を導入することで、新しいPHP構文への移行やLaravelの型定義・記法の更新をローカル環境で自動実行できます。
# Rectorのインストールとドライラン実行
composer require --dev rector/rector
vendor/bin/rector process --dry-run
最新バージョンへのアップデート時によくあるトラブルと対処法
アップデート作業中によく遭遇するエラーとその解決策をまとめました。
トラブル1:Composerの依存関係エラー(Your requirements could not be resolved…)
【原因】 プロジェクトが依存している外部パッケージ(サードパーティ製ライブラリ)が、新しいLaravelバージョンにまだ対応していないか、composer.json 内のバージョン指定が古いためです。
【対処法】
- どのパッケージがブロックしているかエラーメッセージの「Problem 1」「Problem 2」を確認する
composer outdatedを実行し、該当パッケージの最新版を調べる- PackagistやGitHubで該当パッケージの対応状況を確認し、
composer.jsonの指定を更新する - どうしても対応していないパッケージがある場合は、代替パッケージへの乗り換えまたはフォークを検討する
トラブル2:Class not found や以前の設定が読み込まれる
【原因】 フレームワークの内部クラス配置やサービスプロバイダの変更後、古い設定キャッシュやオートロード情報が残っているためです。
【対処法】 以下のコマンドを順番に実行してオートロードとキャッシュを再生成します。
composer dump-autoload
php artisan optimize:clear
トラブル3:バージョンが複数離れている(例: Laravel 9からLaravel 12)
【原因】 複数のメジャーバージョンを一度にスキップして更新しようとすると、破壊的変更が累積して原因特定が困難になります。
【対処法】 原則として1メジャーバージョンずつ段階的にアップグレード(例: 9 → 10 → 11 → 12)してください。各ステップごとにテストを実行して動作を確認しながら進めることで、安全かつ最短で最新バージョンに追いつくことができます。
まとめ:計画的なバージョン管理で安全なLaravel開発を
Laravelの最新バージョン情報を把握し、定期的にアップデートを行うメリットは以下の通りです。
- 強固なセキュリティ: EOLによる脆弱性リスクを排除し、安全な運用を継続できる
- 開発速度の向上: ディレクトリのスリム化やReverb、Concurrencyなどの最新機能を活用できる
- エコシステムの恩恵: 最新のPHP機能(PHP 8.3 / 8.4)や最新パッケージの恩恵をフルに享受できる
Laravelのメジャーリリースは毎年第1四半期に予定されています。年に一度の定期メンテナンス計画をあらかじめ開発スケジュールに組み込み、常に最新の快適なLaravel開発環境を保ちましょう。

コメント