Claude Codeに全部任せると危ない理由
はじめに
Claude CodeなどのAIコーディングアシスタントは、開発速度を大幅に向上させる強力なツールです。Claude Codeの基本ガイドで紹介されたように、計画的に使用すれば開発効率を大きく改善できます。
しかし「全部Claude Codeに任せてしまう」という使い方は、実は多くのリスクをもたらします。個人開発で自分のコードベースに対してなら、失敗も学習機会になります。しかし、スコープが曖昧なまま広範な変更を許可すると、後で対処困難な問題が生じることがあります。
本記事では、Claude Codeを安全に、かつ効果的に活用するための実務的な知見を共有します。
「全部任せる」が危ない本当の理由
問題はClaude Codeの能力ではなく、スコープの曖昧さ、責任の不明確さ、そしてレビュー境界の欠如です。
例えば「このエラーを直して」という指示は、Claude Codeにとって何をどこまで変更するかが不明確です。エラーの根本原因を推測し、その推測に基づいて複数のファイルにわたる変更を行う可能性があります。これが危険な理由は、AIの「推測」が開発者の意図と一致しないからです。
危険1: 変更範囲が広がりすぎる
危険な指示の例
Claude Codeへの不明確な指示は、予測不可能な範囲の変更につながります。
❌ 「この機能を全部作って」
❌ 「エラーを直して」
❌ 「いい感じにリファクタして」
これらの指示では、Claude Codeが以下を判断する必要があります:
- どのファイルまで変更するか
- どの程度までの最適化が「いい感じ」か
- 既存のテストやセットアップをどこまで変更するか
実際に起きた問題
- バグを直すつもりが、設定ファイルやデータベーススキーマも変更されていた
- 単一の関数を修正する指示が、関連モジュール全体のリファクタリングになった
- エラーメッセージを改善しようとしたら、ロギング全体が置き換わった
より安全な指示方法
✅ 「まず原因候補を3つ出してください。まだファイルは変更しないでください。」
✅ 「変更対象はこのファイルのみです:
- src/utils/auth.py
他のファイルは触らないでください。」
✅ 「実装前に変更計画を出してください。確認してから進めます。」
危険2: 仕様の前提がズレたまま実装が進む
よくあるズレのパターン
エッジケースの欠落:「ユーザー入力を検証して」という指示は、基本的な型チェックのみで、空文字、特殊文字、大量データなど全てのエッジケースに対応しない実装になることがあります。
パフォーマンス要件の見落とし:「データを取得して処理して」という指示は、単純なループ処理になり、大量データで遅すぎる実装になることがあります。
既存の規約との不一致:新しいAPIエンドポイントを追加する指示が、プロジェクト全体と異なる命名規則や構造で実装されることがあります。
より安全な指示方法
✅ 「まだ実装しないで。以下を先に確認してから進めてください:
- 処理する予定のデータサイズ範囲
- 考慮すべきエッジケース
- 既存コードとの相互作用
- 不明な要件」
✅ 「実装前に変更計画を出してください。各ステップで何を変更し、
なぜその順序が必要か説明してください。」
危険3: Git差分を読まずに進めてしまう
何が見落とされるか
「テストが通った」は「正しい実装」を意味しません。見落とされやすい問題:
- 予期しないファイル変更:テスト対象以外のファイルが変更されていないか
- セキュリティ問題:認証・認可の穴、入力検証の不足
- パフォーマンス問題:無駄なループ、過度なメモリ使用
- スタイルの不一致:プロジェクトのコーディング規約に従っているか
- ビジネスロジックの誤解:実装が本来の要件に合っているか
Git差分をレビューするコマンド
# 変更されたファイルリストを確認
git status --short
# 全体の変更内容を確認
git diff
# ファイル別の統計を確認
git diff --stat
# 変更されたファイル名のみ確認
git diff --name-only
# 特定ファイルだけの差分を確認
git diff src/specific-file.py
# 削除されたコード行のみ確認
git diff | grep '^-'
レビューチェックリスト
□ 変更されたファイルリストが想定通りか?
□ 設定ファイル (.env, config, package.json など) に不要な変更がないか?
□ 削除されたコードは、意図的な削除か、誤削除か?
□ 新しく追加されたロジックに、セキュリティホールはないか?
□ 既存コードとの重複や矛盾はないか?
危険4: 触らせてはいけないファイルまで変更される
明示的な許可なしでは触らせないファイル
禁止ファイルカテゴリー:
設定・認証情報:
- .env, .env.local, .env.production
- secrets.*, credentials.*
- .npmrc, .pypirc
デプロイ・環境:
- Dockerfile, docker-compose.yml
- .github/workflows/*
- deploy/*, infrastructure/*
データベース:
- migrations/*
- schema.sql, database.yml
依存性・ロック:
- package-lock.json, yarn.lock
- Pipfile.lock, poetry.lock
- requirements.txt (本番版)
生成ファイル:
- /build/*, /dist/*, /node_modules/*
- *.min.js, *.min.css
その他重要なファイル:
- Makefile, build.sh
- .gitignore, .npmignore
- billing/*, payment/*
なぜ危険か
- .env ファイル:API キー漏洩、本番環境破壊
- ロック ファイル:依存性バージョン競合、予期しないアップグレード
- マイグレーション:データ損失、本番DB破壊
- CI/CD設定:自動デプロイの誤動作、セキュリティ低下
より安全な指示方法
✅ 「以下のファイルのみ編集してください:
- src/features/user-auth.py
- tests/test_auth.py
以下のファイルは絶対に触らないでください:
- .env, .env.production
- config/
- Dockerfile
- migrations/
- .github/workflows/
これらのファイルに関連する変更が必要な場合は、先に相談してください。」
危険5: レビュー責任が曖昧になる
Claude Codeで生成されたコードの責任は、100%開発者にあります。
よくある責任の曖昧化:
❌ 「Claude Codeが生成したから大丈夫」
❌ 「テストが通ったから問題ない」
❌ 「AIの出力だから確認は省略」
✅ 「Claude Codeで生成したが、開発者の責任で確認した」
✅ 「テストが通ったのを確認した上で、コードも確認した」
✅ 「セキュリティレビュー、スタイルチェック、動作確認を済ませた」
安全に使うための実務ルール
ルール1: 1タスク1目的
❌ 「ユーザー認証とメール送信を全部作って」
✅ 「ユーザー認証の実装だけをお願いします」
理由:複数の目的があると、変更範囲が不明確になり、テストも複雑になります。
ルール2: 1変更1レビュー
コード生成 → git diff確認 → テスト実行 → コミット
各ステップで人間が確認してから次に進みます。
ルール3: 変更前に計画を出させる
実装に入る前に、必ず変更計画を確認します。
「以下のファイルを変更する計画を出してください:
- src/auth.py
- src/user.py
変更の順序、各ファイルでの変更内容を説明してください。」
ルール4: 編集可能なファイルを明示する
「編集してよいファイル:
- src/features/*
- tests/*
編集禁止ファイル:
- config/*
- .env*
- migrations/*」
ルール5: テストコマンドを固定する
「実装後、このコマンドで確認してください:
$ pytest tests/test_auth.py -v
全てのテストが成功したら、git diffを出力してください。」
そのまま使える指示例
危険な指示(変更範囲不明確)
❌ 「全部直して」
❌ 「エラーが出てるから対応して」
❌ 「パフォーマンス改善して」
❌ 「テストが通るように全部修正して」
より安全な指示
✅ 「次のエラーメッセージを確認したら、原因候補を3つ出してください。
まだコード変更はしないでください。
エラー: 'User' object has no attribute 'email'
ファイル: src/user_service.py, 行45」
✅ 「変更対象ファイル:src/auth.py のみ
変更禁止:config/, .env*, migrations/
これらのファイルの実装前に、変更計画を出してください。」
✅ 「修正後、以下のテストを実行してください:
$ pytest tests/test_auth.py::test_login -v
テストが全て成功したら、git diff の出力を出してください。」
✅ 「テストが失敗している原因を説明してください。
修正はまだしないで、原因分析だけ出してください。」
個人開発でのおすすめ運用フロー
8ステップワークフロー
1. Issue/タスクメモを書く
└─ 何をなぜするのか、明確にする
2. Claude Codeに変更計画だけ出させる
└─ 「実装前に計画を出してください」
3. 計画を確認
└─ 対象ファイル、変更順序が適切か確認
4. 承認して実装させる
└─ 「この計画で進めてください」
5. 実装後、git diffを読む
└─ 想定外の変更がないか確認
6. テストを実行
└─ テストが全て成功するか確認
7. コミットメッセージを確認
└─ 何を変更したか、なぜか明確か
8. コミット
└─ git commit で記録
各ステップでの注意点
ステップ2-3:実装前の計画確認が最も重要。ここで間違いを防ぎます。
ステップ5:git diff を必ず読みます。自分で理解できない変更は、コミットしません。
ステップ6:テストが全て成功しても、次のステップに進みます。テストだけで十分ではありません。
まとめ
Claude Codeは、適切に監督すれば非常に強力な開発パートナーになります。
重要なのは:
- スコープを明確にする(何をするか)
- ファイル境界を明確にする(何を変更するか、しないか)
- 人間がコード差分を必ず確認する
- テストが全て通ることを確認する
- 最終責任は開発者にあることを認識する
これらの原則に従うことで、Claude Codeの強力さを活かしながら、安全で信頼性の高い開発を実現できます。