AIコーディング 2026.04.21
Claude Codeで修正回数を減らす7つのプロンプトテクニック|精度を上げる質問構造
なぜClaude Codeは「今ひとつ」になるのか
Claude Codeが期待と違うコードを出す原因の大半は、AIの能力ではなくコンテキストの渡し方にあります。
よくある失敗パターン:
「ソート機能をつけて」
→ どのデータに?どの順序で?他の状態(フィルターなど)は保持するか?
正確なコンテキストを渡した場合:
「ユーザーテーブルに名前でのソート(昇降順切り替え)を追加。
ソート時に価格フィルター(state.priceRange)も保持すること。
React Query v5のuseQuery、ソートはAPIのクエリパラメータで実装。」
→ 一発で意図通りのコードが出る
テクニック1:背景(WHY)を先に一行書く
❌ 悪い例:
「非同期処理に変更して」
✅ 良い例:
「ユーザーが100件超のファイルをアップロードすると処理が30秒かかるため、
asyncio + aiofilesで並列化したい。FastAPI + Python 3.12。」
背景があると、エッジケース(タイムアウト・エラー処理)まで自動的に考慮した実装が出てきます。
テクニック2:現在のコードを「関連部分だけ」貼る
# ❌ 悪い例: 関係ないファイル全体を貼る
# → 重要なシグナルが埋もれる
# ✅ 良い例: 変更が必要な関数だけ抜き出す
def upload_files(files: list[UploadFile]) -> list[str]:
results = []
for file in files: # ← ここが同期的でボトルネック
content = file.read()
url = storage.upload(content)
results.append(url)
return results
# 質問: 「この関数をasyncioで並列化して(最大10並行)。
# storage.uploadはasync対応済み。」
テクニック3:成功条件を数値・状態で明示する
❌ 曖昧:
「高速化して」「バリデーションをつけて」
✅ 具体的:
「100件のファイルを30秒→3秒以内に処理できること」
「メールアドレス形式エラーは入力フィールド下に赤字で即時表示、
フォーカスが外れたタイミング(onBlur)でトリガー」
テクニック4:エラーメッセージをスタックトレースごと貼る
✅ バグ報告の最適なフォーマット:
環境: Python 3.12 + FastAPI 0.115
再現手順:
1. POST /api/upload に100件送信
2. 30秒後にタイムアウト
エラー:
asyncio.TimeoutError: Task exceeded 30s timeout File “app/api/upload.py”, line 47, in upload_handler results = await process_files(files) File “app/api/upload.py”, line 62, in process_files return [await upload_single(f) for f in files] ← ここが問題
期待する動作: 並列処理で3秒以内に完了
スタックトレースがあると、Claude Codeが原因の仮説を立てるプロセスをスキップして、直接修正案を出せます。
テクニック5:制約を箇条書きで先頭に置く
✅ 制約を先頭に明示:
【制約】
- レガシーのjQuery UIコードとの共存必須(段階的移行中)
- Lodashは使わない(バンドルサイズの理由)
- Pythonは3.10以上(型パラメータ構文が使えない)
- PostgreSQLのスキーマ変更不可(権限なし)
【依頼】
上記の制約を守りながら、ユーザー検索APIを追加して。
テクニック6:大きなタスクを段階的に分割する
# ❌ 悪い例: 全部一度に
claude "決済システム全体を実装して"
# → 曖昧な実装が大量に出てきて全部確認が必要
# ✅ 良い例: 段階的に確認しながら
claude "Step 1: 決済DBスキーマ(orders・payments・refunds)を設計して"
# → レビュー・調整
claude "Step 2: さっきのスキーマに基づいてStripe webhookハンドラーを実装して"
# → レビュー・調整
claude "Step 3: 返金処理のServer Actionを実装して"
各ステップで軌道修正でき、最終的な手戻りが大幅に減ります。
テクニック7:過去の実装パターンを参照させる
# ✅ 既存コードとの一貫性を保つ
claude "src/app/api/users/route.tsと同じパターンで、
/api/projects エンドポイントを作って。
エラーハンドリング・認証チェック・Zodバリデーションの方法を合わせて。"
# Claude Codeは参照ファイルを読んでスタイルを合わせてくれる
# → 新規コードがレビューコストゼロで既存スタイルに揃う
CLAUDE.mdにテンプレートを書いておく
# CLAUDE.md
## このプロジェクトの制約(全リクエストに適用)
- TypeScript: strict: trueで型安全を維持。anyは使わない
- Next.js App Router: Server ComponentデフォルトでuseClientは最小化
- API: 全エンドポイントでZodバリデーション + auth()確認
- DB: Prisma + PostgreSQL。$queryRaw使用は私に確認してから
- エラー: NextResponseでHTTPステータスコードを必ず設定
## よく使う依頼パターン
新APIを追加: 「backend: [機能名]のCRUD API。src/app/api/users/route.tsのパターンに準拠。」
UI追加: 「frontend: [機能名]。shadcn/uiのコンポーネントを使って。Server Actionで送信。」
バグ修正: 「bug: [エラーログを貼る]。再現手順:[手順]。期待動作:[期待値]。」
あわせて読みたい
- Claude Codeで午前中に機能完成する方法|16のロール活用で爆速開発
- AIから正確な回答をもらう7つのプロンプト術【Claude・ChatGPT実例付き】
- Claude Code制御ルールが機能しない原因と5つの検証方法