0%
Claude Code攻略#Claude Code#失敗事例#教訓

Claude Code実際の失敗事例と教訓

Claude Codeを実務で使った際に実際に起きた失敗と、そこから得られた教訓。トラブルを未然に防ぐための実践知。

||5分で読める

Claude Code実際の失敗事例と教訓

AIツールの紹介記事はうまくいった事例ばかりです。この記事ではあえて失敗事例を紹介し、同じ轍を踏まないための教訓をお伝えします。

失敗1: 「全部やって」で本番環境を壊した

状況: 開発者が claude "このプロジェクトのパフォーマンスを改善して" と曖昧に指示

何が起きたか: Claude Codeがデータベースのインデックスを削除し、不要と判断したテーブルのカラムを変更。本番用のマイグレーションファイルが生成されてしまった

教訓:

  • 曖昧な指示は危険。「何を」「どのファイルで」「どの範囲まで」を明示する
  • Permission Modeを「Default」にしておけば、破壊的操作の前に確認が入る
  • --dry-run の精神: まず「計画を立てて」と聞き、内容を確認してから「実行して」

失敗2: コンテキスト超過で古い指示を忘れた

状況: 2時間の長い会話の末に「最初に言ったルールに従って」と指示

何が起きたか: 会話の冒頭で伝えたコーディング規約(CSS Modules不可、Tailwind限定)をClaude Codeが忘れており、CSS Modulesで全コンポーネントを書き直してしまった

教訓:

  • 長い会話は /clear でリセットする
  • 重要なルールは会話ではなくCLAUDE.mdに書く(毎回自動読み込みされる)
  • 30分以上の会話は危険信号。タスクを分割する

失敗3: テストが全部グリーンなのにバグだらけ

状況: claude "テストを書いて" で自動生成されたテストが全件パス

何が起きたか: Claude Codeが「テストがパスするテスト」を書いていた。アサーションが常にtrueになる条件や、モックが本番の挙動と一致しない実装

// こういうテストが生成されていた(意味がない)
test("ユーザーが作成される", () => {
  const user = { name: "test" };
  expect(user).toBeDefined(); // 常にtrue
});

教訓:

  • テストコードは必ず人間がレビューする
  • 「このテストが失敗するケースを教えて」と質問して確認する
  • エッジケース(空文字、null、境界値)のテストを明示的に依頼する

失敗4: APIキーがコードに埋め込まれた

状況: claude "Stripe決済を実装して" と指示

何が起きたか: Claude Codeがサンプルコードにテスト用のAPIキーをハードコードし、そのままコミット→GitHub上で公開

教訓:

  • CLAUDE.mdに「APIキーや秘密情報をコードに直接書かない」ルールを明記
  • .gitignore.env を追加しておく
  • git hookで秘密情報の検出を自動化する(git-secrets など)

失敗5: 依存パッケージのバージョン不整合

状況: Claude Codeが最新のライブラリ構文で書いたが、プロジェクトは古いバージョンを使用

何が起きたか: React 19の構文をReact 18プロジェクトに書き込み、ビルドエラー

教訓:

  • CLAUDE.mdにフレームワークのバージョンを明記する
  • package.json を読ませてから実装を依頼する
  • 「新しいパッケージを追加する前に確認して」とCLAUDE.mdに書く

まとめ: 失敗を防ぐ5つの原則

  1. 指示は具体的に — 「全部やって」は事故の元
  2. CLAUDE.mdにルールを書く — 会話で伝えたルールは忘れられる
  3. 生成コードは必ずレビュー — AIを信用しすぎない
  4. 会話は短く切る — 30分超えたら /clear
  5. Permission Modeを活用 — 破壊的操作の前にブレーキをかける
シェア:

Claude Code攻略の他の記事

他のカテゴリも見る