Claude CodeでLaravelコードを自動生成する方法

Claude CodeでLaravelコードを自動生成する方法

Claude Codeを使えば、Laravelのモデル、コントローラー、マイグレーション、テストコードなどを自然言語の指示から効率よく生成できます。重要なのは、ただ「作って」と依頼するのではなく、Laravelの設計方針、命名規則、テスト方針を事前に伝えることです。

Claude Codeとは

Claude Codeは、Anthropicが提供するターミナル上で動作するAIコーディング支援ツールです。プロジェクト内のファイル構成を読み取り、自然言語の指示に応じてコードの作成、修正、テスト実行、リファクタリングなどを行えます。

Laravel開発では、次のような作業に向いています。

モデルの作成、マイグレーション作成、コントローラー作成、フォームリクエスト作成、ルーティング追加、BladeやAPIレスポンスの作成、PestやPHPUnitによるテスト作成、既存コードの改善などです。

Claude CodeをLaravelで使う準備

まず、Laravelプロジェクトを用意します。

composer create-project laravel/laravel example-app
cd example-app

次にClaude Codeをインストールします。公式ではネイティブインストール方式が案内されています。

curl -fsSL https://claude.ai/install.sh | bash

インストール後、LaravelプロジェクトのルートディレクトリでClaude Codeを起動します。

claude

初回起動時は認証が必要です。画面の案内に従ってログインします。

CLAUDE.mdを作成してLaravel用の指示を書く

Claude CodeでLaravelコードを安定して自動生成するには、プロジェクトルートにCLAUDE.mdを作成します。

CLAUDE.mdは、Claude Codeに対する開発ルールブックです。Laravelのバージョン、使用するテストフレームワーク、コーディング規約、禁止事項などを書いておくと、毎回細かく説明しなくても一貫したコードを生成しやすくなります。

# Project Guidelines

This is a Laravel application.

## Rules

– Follow Laravel conventions.
– Use Form Request classes for validation.
– Use Eloquent relationships when appropriate.
– Do not put business logic directly in controllers.
– Use services or actions for complex business logic.
– Generate Pest tests for new features.
– Use Laravel Pint formatting.
– Do not modify unrelated files.
– Ask before changing database structure if the requirement is unclear.

## Testing

– Run tests after implementing a feature.
– Prefer feature tests for HTTP endpoints.
– Prefer unit tests for isolated business logic.

## Code Style

– Use simple and readable code.
– Avoid unnecessary comments.
– Use type declarations where appropriate.

日本語で指示を書いても問題ありませんが、コードコメントやコミットメッセージを英語に統一したい場合は、そのルールも明記します。

Laravelコードを自動生成する基本プロンプト

Claude Codeでは、曖昧な依頼よりも「何を、どのファイルに、どの仕様で作るか」を伝えると精度が上がります。

悪い例です。

ブログ機能を作って

良い例です。

Laravelでブログ投稿機能を作成してください。

要件:
– Postモデルを作成
– postsテーブルを作成
– カラムは id, title, slug, body, published_at, timestamps
– titleは必須、最大255文字
– slugはユニーク
– bodyは必須
– 管理画面用に投稿一覧、作成、編集、削除を実装
– バリデーションはForm Requestに分離
– コントローラーにビジネスロジックを書かない
– PestでFeatureテストも作成
– 実装後にテストを実行

このように具体的に書くことで、Laravelらしい構成のコードを生成しやすくなります。

マイグレーションとモデルを生成する

Laravelでは、データ構造を明確に伝えることが重要です。

Productモデルとproductsテーブルを作成してください。

カラム:
– id
– name: string, required
– description: text, nullable
– price: unsignedInteger
– stock: unsignedInteger, default 0
– is_active: boolean, default true
– timestamps

あわせてFactoryも作成してください。

Claude Codeは、artisanコマンドの実行、マイグレーションファイルの編集、モデルのfillable設定、Factory作成までまとめて進められます。

生成後は、必ずマイグレーション内容を確認します。特に金額、在庫、外部キー、nullable、index、unique制約はミスが起きやすい部分です。

コントローラーとルーティングを生成する

CRUD処理を作る場合は、ルーティング、コントローラー、バリデーション、ビューまたはAPIレスポンスの形式をまとめて指定します。

Product管理用のCRUDを作成してください。

要件:
– resource controllerを使用
– ルートは /admin/products
– index, create, store, edit, update, destroy を実装
– バリデーションはStoreProductRequestとUpdateProductRequestに分離
– Bladeテンプレートを使用
– 削除前に確認画面は不要
– 保存後は一覧画面へリダイレクト
– 成功メッセージをsession flashで表示

APIの場合は、BladeではなくJSONレスポンスを指定します。

ProductのAPI CRUDを作成してください。

要件:
– routes/api.phpに定義
– API Resourceを使用
– バリデーションはForm Request
– レスポンスはJSON
– 404時はLaravel標準の例外処理を使用
– PestでFeatureテストを作成

テストコードも同時に生成する

Claude CodeでLaravelコードを自動生成する場合、実装だけでなくテストも同時に作らせることが重要です。

先ほど作成したProduct CRUDに対してPestのFeatureテストを作成してください。

テスト内容:
– 商品一覧を表示できる
– 商品を作成できる
– 必須項目が空の場合はバリデーションエラーになる
– 商品を更新できる
– 商品を削除できる

テスト生成後は、次のコマンドを実行させます。

php artisan test

コード整形も行う場合は、Laravel Pintを使います。

./vendor/bin/pint

既存Laravelプロジェクトで使うときの注意点

既存プロジェクトでClaude Codeを使う場合、いきなり大きな変更を依頼しないことが大切です。

最初は次のように、調査だけを依頼します。

[code]
このLaravelプロジェクトの構成を確認してください。
まだファイルは変更しないでください。

確認してほしい内容:

  • Laravelのバージョン
  • 認証方式
  • 主要なモデル
  • ルーティング構成
  • テスト環境
  • コーディング規約
    [/code]

    その後、小さな単位で実装を依頼します。

    既存の設計に合わせて、注文履歴一覧機能を追加してください。
    まず変更予定のファイル一覧と実装方針を提示してください。
    その時点ではまだ実装しないでください。

    このように段階を分けると、不要なファイル変更や設計崩れを防ぎやすくなります。

    Claude Codeに守らせたいLaravel開発ルール

    Laravelで自動生成の品質を上げるには、次のルールをCLAUDE.mdに入れておくと効果的です。

    ## Laravel Rules

    – Controllers should be thin.
    – Validation must be handled by Form Request classes.
    – Use Policies for authorization.
    – Use API Resources for API responses.
    – Use Eloquent relationships instead of manual joins when appropriate.
    – Do not use DB facade unless necessary.
    – Do not create new architectural patterns without checking existing code.
    – Keep naming consistent with existing files.
    – Always add tests for new features.
    – Run Pint after code changes.

    特に「既存の設計に合わせる」「不要な設計を勝手に追加しない」という指示は重要です。AIは便利な一方で、過剰に抽象化したり、プロジェクトにない構成を追加したりすることがあります。

    実用的なプロンプト例

    ログイン済みユーザーのお気に入り機能を作る例です。

    Laravelで投稿のお気に入り機能を追加してください。

    要件:
    – Userは複数のPostをお気に入り登録できる
    – Postは複数のUserからお気に入り登録される
    – 中間テーブルは post_user_favorites
    – 同じ投稿を重複してお気に入りできない
    – お気に入り追加と解除のエンドポイントを作成
    – 認証済みユーザーのみ実行可能
    – PostモデルとUserモデルにリレーションを追加
    – PestでFeatureテストを作成
    – 既存のコードスタイルに合わせる

    実装前に確認を挟みたい場合は、次のように依頼します。

    まず実装方針だけを提示してください。
    まだファイルは変更しないでください。

    実装してよい段階になったら、次のように依頼します。

    その方針で実装してください。
    実装後にPestテストを追加し、php artisan testを実行してください。

    自動生成後に必ず確認するポイント

    Claude Codeで生成したLaravelコードは、そのまま本番投入せず、必ず人間が確認します。

    確認すべきポイントは、バリデーションが正しいか、認可処理が入っているか、N+1問題が発生していないか、マイグレーションの制約が適切か、テストが実際の仕様を満たしているか、不要なファイル変更がないか、既存の命名規則と一致しているかです。

    特に管理画面やAPIでは、認証と認可の確認が欠かせません。ログインしていれば誰でも更新できる状態になっていないか、PolicyやGateが必要な箇所に入っているかを確認します。

    まとめ

    Claude Codeを使うと、Laravelのコード生成を大幅に効率化できます。ただし、精度の高い自動生成には準備が必要です。

    プロジェクトルートにCLAUDE.mdを作成し、Laravelの設計方針、テスト方針、コーディング規約を明記します。そのうえで、モデル、マイグレーション、コントローラー、バリデーション、テストの要件を具体的に伝えることが大切です。

    Claude Codeは単なるコード生成ツールではなく、Laravelプロジェクト全体を理解しながら作業できる開発エージェントです。小さな単位で依頼し、テストとレビューを組み合わせることで、安全かつ実用的にLaravel開発を自動化できます。