はじめに
Laravel 8で作成した簡単なメモアプリを、Claude Codeを使ってアップグレードしてみました。
対象アプリ
未経験転職時にポートフォリオとして作成したWeb掲示板アプリです。
これをDocker化したものの、アップグレードを実施していきます。
ゴール
2026年1月時点で最新のLTSまでアップグレードすることをゴールとします。
- Laravel 8 → 12
- PHP 7.3 → 8.4
手順
- Claude Codeにコードを解析させる
- Todoリストを作成する
- Todoに沿ってClaude Codeでアップグレードを実施する
Laravel 8 → 9、9 → 10……というように、メジャーバージョンごとに順番にアップグレードしました。
工夫した点
疎通テストを自動化
順にアップグレードを進めるため、アップグレードのたびに疎通テストを実施するのが望ましいです。
そのため、自動化できるよう、BashスクリプトをClaude Codeで用意しました。
安全なコマンドを .claude/settings.json に追加
意図しない危険な操作を防ぐため、実行を許可するコマンドを .claude/settings.json にあらかじめ定義しました。
{
"permissions": {
"allow": [
"Bash(docker ps)",
"Bash(docker-compose exec app composer audit)",
"Bash(docker-compose exec -T app composer audit)",
"Bash(docker-compose exec app php artisan migrate:status)",
"Bash(docker-compose exec app composer why:*)"
]
}
}
問題になった点
レビューエージェントが公式ドキュメントと異なる指摘をしてきた
Claude Codeにコードを書かせた後、別の視点でレビューすれば品質が上がるだろうと考え、「コードをレビューするエージェント」とだけ指定してレビューエージェントを作成しました。
しかし、そのレビューエージェントからは公式ドキュメントと異なる指摘が行われ、不要な修正をしてしまいそうになる場面がありました。
幸い、メインエージェントがその違和感に気づいてくれたため、大きな問題にはなりませんでした。
所要時間
今回のアプリは小規模だったこともあり、1回のアップグレードごとに30〜60分程度で完了しました。
この時間には、アップグレード時に知らなかったことを調べる時間や、ブラウザでの動作確認も含まれています。
おわりに
Claude Codeを用いることで、全体としてとてもスムーズにアップグレードを進めることができました。