ai-technology

Claude Codeに修正依頼を出すときの指示の作り方

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 への効果的な指示:

必須要素

  1. 何をやるか(ACTION)
  2. なぜやるか(WHY)
  3. どこを修正するか(WHERE)
  4. 条件・制約(CONSTRAINTS)
  5. 確認方法(VALIDATION)

指示のコツ

効果

Claude Codeで小さく実装を進める基本パターンと合わせることで、効率的で正確な修正が実現します。