AIコーディング 2026.04.21

Claude Codeで修正回数を減らす7つのプロンプトテクニック|精度を上げる質問構造

タグ:Claude / 生成AI / プロンプト / 開発効率 / コーディング

なぜ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: [エラーログを貼る]。再現手順:[手順]。期待動作:[期待値]。」

あわせて読みたい

参考ソース