Claude Codeに修正依頼を出すときの指示の作り方
はじめに
Claude Code への指示が曖昧だと、期待通りの修正が出てきません。本記事では、効果的な指示パターンを説明します。
悪い指示の例
❌ パターン1:曖昧すぎる
「このコードを改善してください」
→ Claude Code が何をすればいいか不明確
→ 大幅な変更が出てくる
→ 思わぬ影響
❌ パターン2:要求が多すぎる
「パフォーマンス改善 + リファクタリング + テスト追加」
→ 1 つの大きな実装
→ 複雑で検証が難しい
❌ パターン3:修正対象が不明確
「このファイルをきれいにしてください」
→ どの部分?どのレベル?
→ 全部修正される可能性
良い指示パターン
パターン1:具体的な問題を指定
✅ 良い指示:
「src/utils.py の calculate_total() 関数を以下の要件で修正:
- ネストされた if-else を排除
- 処理時間を 50% 削減
- 出力は変わらない
- テストは既存のものを通す」
→ 何をやるか明確
→ 制約が明確
→ 修正内容が予測可能
パターン2:入出力を明確にする
✅ 良い指示:
「validate_email() 関数を追加:
入力:email(文字列)
出力:True(有効)/ False(無効)
要件:
- @ を含む
- @ の両側に文字がある
- . を含む
- 10 文字以上
- 15 行以下」
パターン3:制約を明示する
✅ 良い指示:
「process_data() 関数を最適化:
要件:
- 変更行数:30 行以下
- 既存の呼び出し元は修正しない
- テスト既に存在(すべてパスさせる)
- 外部ライブラリを追加しない」
指示の構成要素
必須要素
1. 何をやるか(ACTION)
例:「関数 A をリファクタリング」
2. なぜやるか(WHY)
例:「パフォーマンスが遅い」
3. どこを修正するか(WHERE)
例:「src/main.py の calculate()」
4. 条件・制約(CONSTRAINTS)
例:「出力は変わらない」
例:「50 行以下」
例:「テストはパス」
5. 確認方法(VALIDATION)
例:「pytest で確認」
例:「git diff で確認」
テンプレート
【修正テンプレート】
「src/[ファイル名] の [関数名] を以下の要件で修正:
背景:
[なぜ必要か]
具体的には:
[どう修正するか]
制約:
- [制約1]
- [制約2]
- [制約3]
確認方法:
[テスト実行など]」
実装例
例1:パフォーマンス改善
❌ 悪い指示:
「このループを高速化してください」
✅ 良い指示:
「src/processor.py の loop_data() を高速化:
現状:10,000 個要素で 5 秒かかる
目標:2 秒以下
具体的には:
- リスト内包表記を検討
- NumPy の活用も OK
- ただし外部ライブラリ追加は相談
制約:
- 出力は同じ
- テストはすべてパス
- コード行数は 50 行以下
確認:
pytest で実行時間をはかる」
例2:機能追加
✅ 良い指示:
「src/auth.py に logout() 関数を追加:
用途:ユーザーセッションを削除
入力:user_id(整数)
出力:True(成功)
処理:
1. users テーブルでセッションを削除
2. ログを記録
3. True を返す
制約:
- DB エラー時は例外を上げる
- テストケースも tests/test_auth.py に追加
- 20 行以下」
例3:バグ修正
✅ 良い指示:
「src/validation.py の check_email() のバグを修正:
問題:
test_email_with_plus@example.com のように + が含まれるメールアドレスが rejected される
期待動作:
RFC 5321 に準拠して + を許可する
制約:
- 既存テストはすべてパス
- 新しいテストケースを追加
- 20 行以下の修正」
指示を出す前のチェック
□ 何をやるかが明確か
□ なぜやるかが説明されているか
□ どこを修正するか指定されているか
□ 条件・制約は明記されているか
□ テスト方法は指示されているか
□ 変更行数は合理的か(50 行以下が目安)
□ 外部影響は考慮されているか
すべてチェック → Claude Code に依頼 OK
1 つでも不明確 → 指示を明確にしてから依頼
よくある失敗
❌ 失敗1:要求が漠然としている
「これをブラッシュアップしてください」
↓
Claude Code が大幅に書き換える
↓
想定外の修正
✅ 改善:具体的に指示
「以下の 3 点を修正:
1. 変数名を明確にする
2. コメントを追加
3. エラーハンドリングを追加」
まとめ
Claude Code への効果的な指示:
必須要素:
- 何をやるか(ACTION)
- なぜやるか(WHY)
- どこを修正するか(WHERE)
- 条件・制約(CONSTRAINTS)
- 確認方法(VALIDATION)
指示のコツ:
- 曖昧さを排除
- 制約を明確に
- 小さく分割
効果:
- 期待通りの修正が出る
- 確認が簡単
- 修正が少ない
Claude Codeで小さく実装を進める基本パターンと合わせることで、効率的で正確な修正が実現します。