0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeを使ってLaravel 8のポートフォリオをLaravel 12までアップグレードした話

Posted at

はじめに

Laravel 8で作成した簡単なメモアプリを、Claude Codeを使ってアップグレードしてみました。

対象アプリ

未経験転職時にポートフォリオとして作成したWeb掲示板アプリです。
これをDocker化したものの、アップグレードを実施していきます。

ゴール

2026年1月時点で最新のLTSまでアップグレードすることをゴールとします。

  • Laravel 8 → 12
  • PHP 7.3 → 8.4

手順

  1. Claude Codeにコードを解析させる
  2. Todoリストを作成する
  3. 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を用いることで、全体としてとてもスムーズにアップグレードを進めることができました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?