コンテキスト設計の原則
Lesson 3 で学んだ通り、AIの注意力は均等ではありません。 この偏りを理解した上で、コンテキストを「判断」「分類」「適用」「確認」の順に設計する方法を学びます。 目的は、AI に必要な情報だけを渡して成果物の品質を安定させることです。
「以前はすべてをコンテキストに詰め込んでいました。今は慎重に選んでいます。」
そのマインドセットの転換—「何を渡せるか」から「何を渡すべきか」へ—が、 平凡な結果と優れた結果の違いです。コンテキスト設計とは、含めるすべての情報に対して 意図的であることです。
本当に考えるべき問い
何かをコンテキストに追加する前に、自分に問いかけてください: 「Claude がこの特定のタスクを完了するためにこれが必要か?」
「いつか役に立つかも」や「これは関連がありそう」ではありません。 今、この正確なタスクのために Claude がそれを必要としているでしょうか? 答えが明確な「はい」でなければ、除外してください。
判断フレームワーク
含める可能性のあるすべてを3つのカテゴリに分類しましょう:
必須
直接必要。これがなければ Claude はタスクを完了できない。常に含めます。
判断基準:これが欠けると、正しい出力が論理的に不可能になります。
役立つ
有用なコンテキストを提供。精度を向上させる可能性がある。余裕があれば含めます。
判断基準:なくても解けますが、品質や速度に差が出ます。
ノイズ
タスクと無関係。気を散らすだけ。絶対に含めません。
判断基準:出力の正しさに寄与せず、判断を曖昧にします。
ケース別の判断例
| タスク | 必須 | 役立つ | ノイズ |
|---|---|---|---|
| バグ修正 | エラーログ、該当関数 | 呼び出し元、型定義 | 無関係なモジュール |
| 新機能追加 | 要件、既存インターフェース | 類似機能の実装例 | 別機能のテストコード |
| コードレビュー | diff、コーディング規約 | 変更理由の説明 | 変更されていないファイル |
実践的なガイドライン
基本の流れ:まず必須だけ渡す
- 必須情報だけでプロンプトを作成
- Claude が追加情報を求めたら、その範囲だけ追加
- それでも不足なら「役立つ」から選んで追加
- 最小限から始めて、必要に応じて追加。 まずは必須だけを渡します。Claude が質問したら、その範囲だけ追加します。 例えば「エラーログと該当関数だけ」を先に渡します。
- 大きなファイルは要約する。 2,000行を貼る代わりに構造だけ説明します。 例えば「このファイルは User モデルで、関連関数は 145 行目の authenticate() です。」
- すべてではなく構造を渡す。 バグ修正には壊れた関数と直接の依存関係だけを渡します。 新機能にはインターフェース定義と類似機能の例を1つ渡します。 例えば「該当関数 + 呼び出し元2つ + 期待する入出力」を先に渡します。
- 関心を分離する。 認証に取り組んでいるなら課金コードは除外します。 API に取り組んでいるならフロントエンドは除外します。 例えば「API のエラー時に UI は後回し」と決めて切り分けます。
目標は Claude が必要かもしれないすべてを与えることではありません。 目標は Claude が必要とするものを正確に—それ以上でもそれ以下でもなく—与えることです。
チェックリスト
プロンプトを送信する前に、これを確認してください:
- このタスクに不可欠な情報から順に並んでいますか?
- 「念のため」を削っても成立しますか?
- 判断に迷う情報は「役立つ」に留めていますか?
- 同じことを短く言い換えられますか?
重要なポイント
- 「何を含められるか」ではなく「Claude が何を必要としているか」を問う
- コンテキストを必須、役立つ、ノイズに分類する
- 最小限から始め、必要が見えたら段階的に追加する
- 構造を渡し、全文貼り付けは最後の手段にする