はじめに
「AI時代なら誰でもアプリが作れる」
そう信じていた時期が私にもありました。ハッカソンでチームを組み、メンバーにバックエンド開発を任せた結果、リポジトリが大変なことになった実体験を共有します。
事件の始まり:Claudeが使えれば誰でもアプリが作れる?
チームメンバーは全員Python経験者でしたが、Web開発は未経験。それでも「Claude Codeがあれば大丈夫」という謎の自信がありました。
いざ開発スタート。バックエンド担当のBさんにタスクを割り振り、私はフロントエンドの開発に集中していました。
ある日の悲劇
数日後、久しぶりに git pull
を実行したときのことです。
$ git pull origin main
...
100 files changed, 10000 insertions(+), 500 deletions(-)
100個のファイルが流れ込んできました。
一瞬、何が起きたのか理解できませんでした。差分を確認すると、見たこともないディレクトリ構造、大量の設定ファイル、複雑な依存関係が構築されていました。
何が起きていたのか
Bさんに話を聞いてみると、こんな状況でした。
私:「どうやって開発進めてたの?」
Bさん:「Claude Codeに『バックエンドを作って』ってお願いしたら、全部作ってくれました!」
私:「コードの中身は理解してる?」
Bさん:「えーと...動いてるから大丈夫だと思います」
私:「このファイルは何のために必要なの?」
Bさん:「うーん...Claudeが作ったので...必要なんじゃないですかね?」
私:「実装の計画とか立てた?」
Bさん:「特には...エラーが出たらClaude Codeに聞いて、提案されたコードを実行してました」
この会話で、問題の本質が見えてきました。
発生していた問題
Claude Codeを盲信した結果、以下の問題が発生していました。
-
計画なしの行き当たりばったり開発
- 全体設計を考えずにClaude Codeに丸投げ
- エラーが出るたびにClaude Codeに相談し、提案されたコードをそのまま実行
- 結果として不要なファイルや重複した実装が大量発生
-
ファイルの必要性を判断できない
- どのファイルが必要で、どのファイルが不要なのか説明できない
- Claudeが生成したものは全て必要だと思い込んでいた
-
コンテキストの肥大化
- 試行錯誤の過程で生成されたファイルがそのまま残っている
- エラー対処のために追加されたコードが積み重なっている
- まるでルンバのように行き当たりばったりで動き回った結果、リポジトリがカオスに
AIもコンテキストが多すぎると混乱する
重要な気づきがありました。それは、コンテキストが多すぎるとAIも適切な提案ができなくなるということです。
行き当たりばったりで生成されたファイル群により、リポジトリの状態が複雑になりすぎました。その結果、Claude Code自身も以下のような問題を抱えるようになります。
- どのファイルが本当に使われているのか判断できない
- 重複した実装のどれを参照すべきか迷う
- 過去の試行錯誤の痕跡に引っ張られて不適切なコードを提案する
まるでルンバが障害物だらけの部屋を掃除しようとするように、AIも散らかったコードベースでは本来の力を発揮できません。
AI時代の落とし穴
バイブコーディング(AIアシストコーディング)は強力なツールですが、使い方を間違えると危険です。特に初心者が陥りがちな問題を図にまとめました。
対処と教訓
最終的にBさんがコードを一つずつ理解し、バックエンドは動作するようになりました。しかし、この時点で一度コードを捨てて、理解のある状態からゼロベースで書き直すべきだったと反省しています。
AI時代は「コードを捨てる」選択にも寛容であるべきです。
チームで共有すべきだった原則
-
実装前に計画を立てる
- AIに丸投げする前に、どんな機能をどう実装するか設計する
- 必要なファイル構成を事前に考えてから、AIに部分的に依頼する
-
自分が理解していない領域のコーディングには使わない
- 基礎知識がある領域でのみバイブコーディングを活用する
- 生成されたコードは必ず自分で理解してからコミットする
-
コンテキストを整理する
- 試行錯誤で生成された不要なファイルは削除する
- リポジトリをクリーンに保つことで、AIも適切な提案ができる
-
カオスになったら潔く捨てる
- 依存関係が複雑すぎて追えなくなったら、ゼロから書き直す
- 「もったいない」より「理解できる」を優先する
-
段階的にコミットする
- 一度に大量のファイルを追加しない
- 機能単位で小さくコミットし、レビューしやすくする
まとめ
Claude CodeやCursorなどのAIアシストツールは強力ですが、魔法の杖ではありません。特にチーム開発では、「AIが生成したコードを理解する責任」は人間側にあります。
また、AIは万能ではなく、散らかったコードベースでは適切な提案ができません。計画を立て、コンテキストを整理し、段階的に進めることが重要です。
個人開発なら試行錯誤も自由ですが、チーム開発では他のメンバーへの影響も考慮が必要です。AI時代だからこそ、コードを理解することの重要性は変わらないのだと痛感した出来事でした。