ChatGPTとの決定的な違いは「プロジェクト全体を読む」こと
Claude Codeを使う前から、ChatGPTでのコーディング補助は経験していました。エラーが出たらコードをコピペして「なぜこうなるのか」と聞く、あの使い方です。
最大の違いは、Claude Codeがターミナル上で動き、プロジェクト全体のファイル構成を読み込んだ状態で作業する点です。
ChatGPTは「今見せたコードだけ」を見て答えます。Claude Codeは、ルーティング、モデル、マイグレーション、他のControllerとの関係まで踏まえて答える。この差は、実際に使うと想像以上に大きいです。
僕のプロジェクト(Controller・Model・Migration・Route・Bladeが揃った、ある程度の規模)で起動すると、まず全体の構成を読み込み、数分で「このプロジェクトはどういう作りか」を整理してくれました。卒業直後の自分が他人のプロジェクトを引き継いだら、全体像の把握だけで半日は溶かしていたはずです。
一番使えたのはリファクタリング提案。実際のBefore/After
ここが本題です。「このControllerを見て、問題点を教えてほしい」と依頼したときの話をします。
僕が書いていたのは、よくある"太ったController"でした。バリデーションもビジネスロジックも全部Controllerに詰め込んだ、こういう形です。
// Before:全部Controllerに入っている
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|string|max:255',
'body' => 'required|string',
'tags' => 'nullable|array',
]);
$post = new Post();
$post->title = $validated['title'];
$post->body = $validated['body'];
$post->user_id = auth()->id();
$post->save();
if (!empty($validated['tags'])) {
foreach ($validated['tags'] as $tagName) {
$tag = Tag::firstOrCreate(['name' => $tagName]);
$post->tags()->attach($tag->id);
}
}
return redirect()->route('posts.show', $post);
}
これに対して返ってきた指摘は、具体的でした。バリデーションはFormRequestクラスに切り出すべき。ビジネスロジックはServiceクラスに移してControllerは薄く保つべき。このメソッドは責務が複数あって読みにくい。命名が曖昧で処理内容が伝わらない——。
そして「どう直すか」まで提案してくれるので、「指摘は分かったが直し方が分からない」という宙ぶらりんになりません。提案に沿って直した結果がこれです。
// After:Controllerは薄く、責務を分離
public function store(StorePostRequest $request, PostService $postService)
{
$post = $postService->createWithTags(
$request->validated(),
auth()->id()
);
return redirect()->route('posts.show', $post);
}
バリデーションはStorePostRequestへ、タグ紐付けを含む生成処理はPostService::createWithTags()へ移しました。Controllerは「受け取って、渡して、返す」だけになります。
こういう指摘は、コード全体の設計を理解していないと出てきません。ChatGPTに一部だけ見せても、この粒度のフィードバックは返ってきませんでした。
エラー調査は「答え」ではなく「起点」をくれる
エラーが出たとき、「このエラーの原因を調べてほしい」と依頼すると、関連ファイルを追いながら「原因候補はこれとこれ。まずこちらを確認してください」と絞り込んでくれます。
学習中、エラーのたびにGoogleとStackOverflowを何時間も行き来していた身としては、調査の起点をすぐもらえるのは決定的な違いでした。
ただし、提示される原因候補が常に正解とは限りません。複数の候補が出て、実際に確認して判断するのは自分です。「答えをくれるツール」ではなく「方向を示すツール」——この理解が正確だと思います。
新機能の設計相談にも使える
「ユーザーがコンテンツをブックマークできる機能を追加したい」と伝えると、テーブル設計、モデル間のリレーション、Controllerでの処理の流れを整理して提示してくれました。
ゼロから考えるより、設計の初速が明らかに上がります。ただし提案がそのまま自分のプロジェクトに最適とは限らないので、採用の判断は自分でします。
苦手だと感じた3つのこと
仕様やビジネス要件は理解できない。 「このサービスのユーザーが本当に困っていることは何か」「この機能の目的は何か」——コードに書かれていない背景は読めません。設計の判断軸は、人間が持つ必要があります。
提案コードをそのまま使うのは危険。 動いているように見えて、ロジックがズレていたり、セキュリティ上の穴が残っていたりする可能性があります。検証せずに採用するのは論外で、「提案を参考に、理解した上で実装する」が正しい向き合い方です。
プロジェクト固有の文脈は拾えない。 「過去にこういう理由でこの設計にした」という経緯はコードに残りません。チーム開発だと、こうした暗黙知が抜け落ちます。
料金の仕組み——ここは誤解が多い
コストについて、正確に書いておきます。ここは僕自身、最初に誤解していた部分です。
Claude Code自体に追加料金はかかりません。 Claudeの有料プランに含まれる使用枠の中で使う仕組みです。ただし無料プランでは利用できず、最低でもPro(月額$20)以上の契約が必要です。
プランは大きく3段階。日常的に使うならPro($20/月)、毎日がっつり使うならMax 5x($100/月)、終日エージェントを回すならMax 20x($200/月)という位置づけです。
これとは別に、APIキー経由で使う従量課金という経路もあります。こちらはトークン量に応じた課金で、自動化やCI連携向けです。注意点として、環境変数にANTHROPIC_API_KEYが残っていると、サブスク契約中でもAPI課金側で動いてしまい二重課金になり得ます。過去にAPIキーを設定した人は確認しておくといいです。
僕のように「対話しながらリファクタリング相談・エラー調査・設計相談をする」使い方なら、Proの枠で十分回りました。大きなコードベースを丸ごと読ませる使い方をすると消費は増えます。「自分でやると時間がかかる部分」「方針が定まらない部分」に絞って使うのが、コスパの面でも実用的です。
(料金や上限は改定が入ることがあるので、契約前に公式の料金ページで最新情報を確認してください。)
一人で開発するフリーランスにとっての価値
フリーランスで一人で開発していると、コードをレビューしてくれる人がいません。これは思っている以上に大きな問題です。書いたコードが正しいのか、もっと良い書き方があるのか、確認する相手がいない。
Claude Codeは、その穴を部分的に埋めてくれます。完全なレビューの代わりにはなりませんが、「このコードの問題点を指摘してほしい」に対して、上で見せたレベルのフィードバックが返ってくる。一人開発における"擬似的なチームメンバー"として機能します。
僕にとっては、この価値が一番大きいです。
で、エンジニアは不要になるのか
冒頭の不安に戻ります。実際に使ってみた今の答えは、「いなくなるとは思わない。ただし、影響がないとも言えない」です。
AIの提案が正しいか評価できるのは、基礎を理解している人間だけです。「この設計でいいのか」「セキュリティ上の問題はないか」「クライアントの要件と合っているか」——この判断は、コードを読めない人にはできません。上のリファクタリング提案にしても、FormRequestやServiceクラスの役割を知らなければ、採用していいかどうかすら判断できないはずです。
だから変化は「エンジニアが消える」ではなく、「AIを使いこなせるエンジニアとそうでないエンジニアの差が開く」という形で来ていると感じます。競う相手ではなく、道具です。
まとめ
Claude CodeをLaravelプロジェクトで使ってみて、役に立ったのは、プロジェクト全体を踏まえたリファクタリング提案、エラー原因の絞り込み、新機能の設計方針の相談でした。逆に、ビジネス要件の理解、提案コードの無検証採用、チームの暗黙知——ここは任せられません。
料金は、Claude Code単体への課金ではなく、Claudeの有料プラン(Pro $20〜)の枠内で使う仕組み。対話中心の使い方なら、Proで十分実用になります。
「エンジニアの代替」ではなく「優秀な開発パートナー」。使いこなすには基礎知識と判断力が要る——つまり、学んだことは無駄になっていませんでした。勉強会で不安になった自分に、そう伝えたいです。