Claude Code攻略#Claude Code#失敗事例#教訓
Claude Code実際の失敗事例と教訓
Claude Codeを実務で使った際に実際に起きた失敗と、そこから得られた教訓。トラブルを未然に防ぐための実践知。
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つの原則
- 指示は具体的に — 「全部やって」は事故の元
- CLAUDE.mdにルールを書く — 会話で伝えたルールは忘れられる
- 生成コードは必ずレビュー — AIを信用しすぎない
- 会話は短く切る — 30分超えたら
/clear - Permission Modeを活用 — 破壊的操作の前にブレーキをかける