プロンプト実践 — *トークン節約パターン20選*
プロンプト実践 — *トークン節約パターン20選*
🎯 このlessonを読み終えたら
このlessonを読み終えると、以下の3つを自信を持って実践できるようになります。
- ▸✅ プロンプトの4要素(スコープ・コンテキスト・制約・出力形式)
- ▸✅ Few-shotとZero-shotの使い分け
- ▸✅ Chain-of-Thought・Self-Critiqueパターン
学習目標をチェックリストとして手元に置き、すべてに答えられるようになったらlessonを閉じてください。
なぜ*プロンプトパターン*なのか
核心の一文
同じ結果を10倍少ないトークンで得ることが、プロのバイブコーダーの秘訣。コスト・速度・精度のすべてに差が出ます。
トークン節約 = 単なるコスト削減ではない
トークン概算式
- ▸英語:1単語 ≈ 1.3トークン
- ▸日本語:1文字 ≈ 1.5〜2トークン
- ▸コード:1行 ≈ 10〜30トークン
→ 100行のコード出力 = 約1,500〜3,000トークン。不要な出力を減らすとコスト↓。
このlessonの構成
次の4セクションに20パターンの比較(❌悪い例 vs ✅良い例)を掲載。各ペアに想定トークン差を表示。
そのままCursorに貼り付けて使える形式でまとめています。
パターン1〜5:*スコープ制限*パターン
パターン1 — ファイルを明示する
❌ 「このコードを見て」(想定出力 〜2500トークン)
✅ 「@src/auth.ts の47行目の型エラーだけ修正。他のコードは変更しない」(想定出力 〜150トークン)
16倍の節約。@でファイルを指定すると、AIはそのファイルだけを参照します。
パターン2 — 関数単位にスコープを絞る
❌ 「ログインロジックを改善して」(〜3000トークン)
✅ 「@auth.ts のvalidatePassword関数だけ。bcryptのコストを12に更新。他の関数は触らない」(〜200トークン)
パターン3 — 変更なしを強調する
❌ 「ボタンを赤にして」(コンポーネント全体が書き直される可能性あり)
✅ 「@Button.tsx の21行目のbg-blue-500 → bg-red-500。それだけ。他の変更はしない。変更後のdiffだけ見せて」(〜50トークン)
パターン4 — diff形式でリクエストする
❌ 「修正して」(ファイル全体が出力される)
✅ 「変更箇所だけdiff形式で見せて:
」(〜100トークン)パターン5 — 明示的なOut of scope
❌ 「決済ロジックを見て」(関連ファイルをすべて参照する)
✅ 「@payment.tsだけ。user.ts・order.tsは触らない。決済処理ロジックだけレビュー。READMEも変更しない」
→ AIが他のファイルを勝手に修正しなくなります。
まとめ — パターン1〜5
スコープは小さいほど良い。@ファイル + 1行/関数 + 他は変更しない が黄金の組み合わせ。
パターン6〜10:*コンテキスト圧縮*パターン
パターン6 — CLAUDE.mdを活用する
❌ 「Next.js 15 App RouterにTypeScriptとTailwindとDrizzle ORMを使っているんですが…ログインAPIを作って」(毎回繰り返す)
✅ 「@CLAUDE.md のスタック基準。POST /api/auth/login。zod検証 + bcrypt + JWT」
→ 毎回スタックを説明しなくてよい。30倍の節約(会話ごと)。
パターン7 — 出力形式を明示する
❌ 「手伝って」(自由形式、大抵は冗長)
✅ 「以下の形式で:
- ▸変更ファイル一覧
- ▸各ファイルのdiff
- ▸5行以内の要約」
→ AIはその形式だけ出力します。
パターン8 — コードのみ・説明なし
❌ 「関数を作って」→ 通常はコード + 使い方 + 注意点 + 代替案まで出力
✅ 「コードのみ。説明・コメントなし」(〜70%節約)
説明が本当に必要なときだけ別途リクエストする。
パターン9 — 簡潔な応答をリクエストする
❌ (自由形式の応答)
✅ 「各段落を1行で。結論を先に」
または:「30秒以内で読めるように」
パターン10 — 出力先を明示する
❌ 「テストを書いて」→ AIがどこに置くか悩んで説明
✅ 「@src/auth.tsのvitestテストをsrc/auth.test.tsに書いて。そのファイルをその場所に作成」
→ 追加の会話ゼロ。
まとめ — パターン6〜10
AIに自由度を与えない。形式・場所・長さをすべて明示。出力トークンを50〜70%節約。
パターン11〜15:*明確性*パターン
パターン11 — 入出力を明示する
❌ 「ログイン関数を作って」
✅ 「関数シグネチャ:
bcrypt比較 + JWT発行。エラー時はLoginResult.errorにメッセージを入れる」
→ AIがシグネチャ通りに実装。無意味な推測ゼロ。
パターン12 — 例と反例を提供する
❌ 「バリデーションを追加して」(AIがzod・yup・valibotを勝手に選ぶ)
✅ 「zodでバリデーション:
このスタイルで追加」
パターン13 — バージョンを明示する
❌ 「Next.jsで…」
✅ 「Next.js 15.0.3 App Routerで…」
バージョンが違えばまったく異なるAPI。明示しないとAIが最新版を推測(間違える可能性あり)。
パターン14 — してはいけないことを禁止する
❌ 「セキュリティを考慮して」
✅ 「セキュリティ考慮事項:
- ▸❌
dangerouslySetInnerHTMLは絶対に禁止 - ▸❌ evalとnew Functionは禁止
- ▸❌ ユーザー入力をSQLに直接使用しない
- ▸✅ パラメータ化クエリ
- ▸✅ DOMPurify」
→ AIが明示的な禁止事項を破らなくなります。
パターン15 — 分からなければ分からないと言わせる
❌ (そのまま質問)
✅ 「確信がない場合は「分からない」と答えて。でたらめを言わないで。関数名・ライブラリ名は公式ドキュメントと照合してから回答して」
→ ハルシネーションが大幅に減少。
まとめ — パターン11〜15
明確性 = 推測の排除。シグネチャ・例・バージョン・禁止事項・「分からないなら分からない」をすべてプロンプトに含める。
パターン16〜20:*繰り返し回避*パターン
パターン16 — 蓄積されたコンテキストを活用する
❌ (リクエストごとに最初から説明)
✅ 「前の会話を基準に。追加タスク:…」
同じチャットセッション内では、以前のコンテキストをそのまま使う。新しい会話を始めない。
パターン17 — チェイニングパターン
❌ 「関数を作ってテストも作って」→ 一度に両方(長い出力)
✅ 1ステップ:「@auth.ts にvalidatePassword関数だけ」
→ 受け取る
→ 2ステップ:「上記の関数のvitestテストだけ」
→ 受け取る
→ 各ステップで検証 + 短い出力 × 2。
パターン18 — リトライの最適化
❌ AI応答が気に入らなかったら「作り直して」→ 最初から(無駄)
✅ 「上記の回答からX部分だけ変えて:
- ▸bcryptのコスト 10 → 12
- ▸他のコードはそのまま」
→ 変更部分だけ新たに生成。
パターン19 — 小さいモデルを先に使う
❌ すべての作業をOpusで
✅ シンプルなタスク → Haiku($1/M入力)
複雑なタスク → Sonnet($3/M)
本当に難しい場合 → Opus($15/M)
Cursorのオプションでモデルを切り替え可能。
パターン20 — プロンプトキャッシング
❌ システムプロンプトを毎回送信
✅ Anthropic APIを使う際はcache_controlを追加:
→ 同じシステムプロンプトを5分以内に再利用した場合、90%割引。
総まとめ — 20パターン適用の効果
平均5〜10倍の節約。月$50 → $5〜10。
まとめ
20パターンの核心:
1. スコープを小さく(@ファイル・関数だけ・他は変更しない)
2. コンテキストを圧縮(CLAUDE.md・形式・長さを明示)
3. 明確にする(シグネチャ・バージョン・禁止事項)
4. 繰り返しを回避する(チェイニング・リトライ最適化・キャッシング)
この4つの軸を身につければ、すぐにプロのバイブコーダーになれます。
🤖 AIにこう頼んでみよう
このlessonの概念を理解すれば、AIに具体的に指示できるようになります。漠然とした「直して」ではなく、語彙を持ったリクエスト — それがトークン節約の出発点です。
- ▸「この漠然としたプロンプトを、スコープ・コンテキスト・制約・出力形式の4要素で書き直して」
- ▸「このプロンプトはハルシネーションのリスクが高い。エビデンス要求を追加して」
なぜこれがトークンを減らすのか
概念を知らないと、AI応答を受け取っても「それって何ですか?」とまた聞き返す必要があります。その「聞き返し」がトークンを消費します。概念を一度身につければ、会話が一度で完結します。