laravel-upgrade について
Laravel アプリをメジャーバージョンごとにアップグレードする手順を案内するスキルです。9→10、10→11、11→12に対応し、バージョン確認からコード修正、依存関係更新、アップグレード後の検証まで扱います。
主な機能
- 01現在の Laravel バージョンの検出
- 02対応するアップグレードガイドの読み込み
- 03破壊的変更のスキャンと修正
- 04依存関係の制約更新
- 05起動確認とテストの実行
活用シーン
- 01Laravel 9 アプリを 10 にアップグレード
- 02移行時のデータベース列変更の確認
- 03Laravel 11 の UUID 動作変更への対応
- 04アップグレード後のアプリとテストの検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ 1weiho/ laravel-upgrade-skill --skill laravel-upgradeインストール後、Claude Code で/laravel-upgradeを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/from-10-to-11.mdfrom-11-to-12.mdfrom-9-to-10.md詳細
Laravel のアップグレード
Laravel アプリケーションを一度にメジャーバージョンを 1 つずつアップグレードします。対応バージョン:9→10、10→11、11→12。
ワークフロー
1. 現在のバージョンを検出する
composer.json を読み込み、laravel/framework のバージョン制約を確認します。
// Example: "laravel/framework": "^10.0" means Laravel 10.x
現在のバージョンに 1 を加えたバージョンをターゲットとして特定します。すでに Laravel 12 を使用している場合は、サポートされている最新バージョンであることをユーザーに伝えます。
2. アップグレードガイドを読み込む
検出したバージョンに基づき、該当するリファレンスファイルを読み込みます。
| 現在 | ターゲット | リファレンスファイル |
|---|---|---|
| 9.x | 10.x | references/from-9-to-10.md |
| 10.x | 11.x | references/from-10-to-11.md |
| 11.x | 12.x | references/from-11-to-12.md |
3. スキャンして修正する
ガイドに記載された各破壊的変更について、コードベースをスキャンして修正を適用します。
影響大(必ず確認):
composer.jsonの依存関係のバージョン- PHP のバージョン要件
- 非推奨メソッドを使用しているデータベースマイグレーション
影響中(関連ファイルを確認):
- モデルの
$datesプロパティ →$casts(9→10) (string)キャストを使ったデータベース式(9→10)- 属性が不足しているカラム変更マイグレーション(10→11)
HasUuidsトレイトの動作変更(11→12)
影響小(該当するパターンが見つかった場合に確認):
- 非推奨のメソッド呼び出し(
Bus::dispatchNow、Redirect::homeなど) - コントラクトインターフェースの変更
- 設定ファイルの更新
4. 依存関係を更新する
コードの修正後、composer.json を更新します。
# Update laravel/framework constraint to target version
# Update related packages per upgrade guide
composer update
5. アップグレード後の確認
php artisanを実行して、フレームワークが起動することを確認します- 利用可能な場合は、テストスイートを実行します
- ログに非推奨の警告がないか確認します
よくあるパターン
依存関係の更新(すべてのアップグレード)
composer.json で古い制約を検索し、ガイドに従って更新します。
モデルの $dates を $casts に変更(9→10)
// Before
protected $dates = ['deployed_at'];
// After
protected $casts = ['deployed_at' => 'datetime'];
検索パターン:protected \$dates\s*=
データベース式のキャスト(9→10)
// Before
$string = (string) DB::raw('select 1');
// After
$string = DB::raw('select 1')->getValue(DB::connection()->getQueryGrammar());
カラムの変更(10→11)
->change() を使用するマイグレーションでは、すべての修飾子を含める必要があります。
// Before (implicit retention)
$table->integer('votes')->nullable()->change();
// After (explicit)
$table->integer('votes')->unsigned()->default(1)->nullable()->change();
HasUuids トレイト(11→12)
// Before (ordered UUIDv4)
use Illuminate\Database\Eloquent\Concerns\HasUuids;
// After (if you need UUIDv4 behavior)
use Illuminate\Database\Eloquent\Concerns\HasVersion4Uuids as HasUuids;
コメント
Markdown 対応