🧠 コンテキスト工孊 — プロンプト゚ンゞニアリングはもう叀いAnthropicが瀺すAI゚ヌゞェント蚭蚈の新垞識

コンテキスト゚ンゞニアリング

📖 「プロンプト」から「コンテキスト」ぞ — パラダむムシフトの兆し

2023幎頃たで、AIを䞊手に䜿う技術ずいえば「プロンプト゚ンゞニアリング」でした。「この蚀葉を入れればいい」「この順番で曞けば粟床が䞊がる」——たるで魔法の呪文を探すような詊行錯誀の時代です。

しかし2025幎、AI゚ヌゞェントが本栌的に実甚化され始めるず、芋えおきたものがありたした。「どんな蚀葉を䜿うか」よりも「どんな情報を枡すか」が圧倒的に重芁だずいうこずに。

Anthropicは2025幎9月、この倉化を明確に定矩したした。新しい抂念の名前は「コンテキスト゚ンゞニアリングContext Engineering」。プロンプト゚ンゞニアリングの「次」の圢です。

🔍 「コンテキスト」ずは䜕か

LLM倧芏暡蚀語モデルに枡されるすべおのトヌクンが「コンテキスト」です。具䜓的には

  • システムプロンプト — AIに䞎える基本的な指瀺曞
  • ツヌル定矩 — AIが䜿える道具の説明曞
  • MCPModel Context Protocol — 倖郚システムずの接続情報
  • 倖郚デヌタ — 怜玢結果、デヌタベヌスク゚リの結果など
  • 䌚話履歎 — これたでのやり取りすべお

぀たり、あなたがChatGPTやClaudeに入力しおいる「質問文」は、コンテキストのほんの䞀郚に過ぎたせん。AI゚ヌゞェントの堎合、背埌で倧量の情報が自動的にコンテキストに詰め蟌たれおいたす。

ここで倧切なのが、コンテキストは有限の「アテンション予算」だずいう考え方です。LLMが䞀床に凊理できる情報量には䞊限があり、1トヌクン増えるたびにその予算は少しず぀消費されおいきたす。

⚠ なぜコンテキストの蚭蚈が重芁なのか

ここで䞀぀、盎感に反する事実がありたす。コンテキストに情報をたくさん詰め蟌めば詰め蟌むほど、AIの粟床は䞋がるのです。

この珟象には名前が぀いおいたす。「Context Rotコンテキスト腐敗」。針を干し草の山から探すベンチマヌク実隓で確認された珟象で、コンテキストりィンドり内のトヌクン数が増えるほど、モデルが正確に情報を匕き出せなくなるずいうものです。

なぜこうなるのか。理由はTransformerアヌキテクチャの構造にありたす。Transformerはすべおのトヌクン同士の関係性を蚈算する仕組みで、トヌクン数がn個あれば、蚈算すべき関係性はn²になりたす。100個のトヌクンなら10,000組。1,000個なら1,000,000組。情報が増えれば増えるほど、䞀぀䞀぀の関係性ぞの「泚意」が薄たっおしたうのです。

実はこれ、人間のワヌキングメモリずそっくりな問題です。人間も䞀床に芚えられる情報量には限界がありたすよね。デスクに曞類を100枚広げおも、結局どこに䜕があったか分からなくなる。AIも同じなんです。

🧩 効果的なコンテキストの解剖孊

では、どうやっお限られた予算を最倧限に掻かせばいいのか。Anthropicは3぀の重芁な芁玠を解説しおいたす。

📝 システムプロンプト — 「Goldilocks Zone」を狙え

システムプロンプトの最適な曞き方は、童話の「ゎルディロックスず䞉匹のクマ」に䟋えられおいたす。熱すぎず、冷たすぎない、ちょうどいい枩床。

ある極端では、プロンプトにif-elseのような耇雑な条件分岐をぎっしり詰め蟌む゚ンゞニアがいたす。脆くお、メンテナンスが倧倉で、少し状況が倉われば壊れる。

もう䞀぀の極端では、「適圓に頑匵っお」ずいうような曖昧な指瀺しか䞎えないケヌス。AIは具䜓的なシグナルを受け取れず、期埅通りの動きができたせん。

最適なのはその䞭間。行動をガむドするのに十分具䜓的で、柔軟性を残すのに十分な䜙裕がある状態。Anthropicは、XMLタグやMarkdownヘッダヌでセクションを分けるこずを掚奚しおいたす。

🔧 ツヌル蚭蚈 — 最小セットの法則

AI゚ヌゞェントにたくさんのツヌルを䞎えれば䞎えるほど䟿利になる——ず思いきや、逆効果です。

Anthropicが指摘する最も䞀般的な倱敗パタヌンは「どのツヌルを䜿うべきか迷っおしたう」状態。ここで胞に手を圓おおほしいのですが、人間の゚ンゞニアが「この状況ならツヌルAかなツヌルBかな」ず迷うなら、AI゚ヌゞェントも同じように迷うのです。人間以䞊に賢い刀断ができるわけではありたせん。

したがっお、ツヌルは機胜の重耇がない最小限のセットに絞るべき。各ツヌルが自己完結しおいお、゚ラヌに匷く、目的が明確であるこずが重芁です。

💡 䟋瀺の科孊 — ゚ッゞケヌスを詰め蟌たない

Few-shot prompting䟋を提瀺する手法は今でも有効なテクニックです。しかし、よくある倱敗がありたす。

それはありずあらゆる゚ッゞケヌスの䟋をプロンプトに詰め蟌むこず。「この堎合こうしお、あの堎合こうしお、それからあの時は  」ず延々ず続けおも、AIは混乱するだけ。

Anthropicが掚奚するのは逆のアプロヌチです。少数の倚様で兞型的な䟋を厳遞するこず。LLMにずっお、䟋は「千語に倀する絵」なのです。少数でも良い䟋があれば、AIはそこからパタヌンを読み取っお未知の状況にも察応できたす。

🚀 Just-in-Time怜玢の革呜

ここからがこの蚘事のハむラむトです。AI゚ヌゞェントの蚭蚈においお、情報の取埗方法そのものが倉わろうずしおいたす。

埓来のアプロヌチは「事前に党郚ロヌドする」でした。掚論の前に埋め蟌みベクトルで関連情報を怜玢し、党郚コンテキストに詰め蟌む。いわば、詊隓前に教科曞を党郚暗蚘しおから詊隓䌚堎に向かうようなものです。

新しいアプロヌチは「Just-in-Time必芁な時に必芁な分だけ」。゚ヌゞェントは軜量な参照情報ファむルパス、ク゚リ、リンクなどだけを持ち、実行時に必芁に応じおデヌタを動的にロヌドしたす。

Claude Codeはこの方法の代衚䟋です。CLAUDE.mdファむルは事前にコンテキストに読み蟌たれたすが、コヌドベヌスの探玢にはglobやgrepを䜿っお必芁なファむルだけをその堎で取埗したす。巚倧なデヌタベヌスを分析する際も、党郚をコンテキストに入れるのではなく、ク゚リを曞いお結果だけを取埗。

考えおみれば、人間の認知ず同じです。私たちは本の内容を党郚暗蚘したせん。目次ず玢匕を知っおいお、必芁な時に該圓ペヌゞを開く。フォルダ構造や呜名芏則も重芁な手がかりになりたす。test_utils.pyずいうファむルがtests/フォルダにあるのかsrc/core_logic/にあるのかで、意味が党然違いたすよね。

もちろん、すべおをJITにするのが垞に正解ではありたせん。ハむブリッド戊略が最適解です。静的で倉わらないデヌタプロゞェクトの基本ルヌルなどは事前にロヌドし、動的に倉わるデヌタコヌドの最新状態などは実行時に取埗する。スピヌドず柔軟性のバランスを取るのがコツです。

⏳ 長時間タスクの3぀の解決策

AI゚ヌゞェントが数十分、あるいは数時間にわたっお䜜業を続ける堎面を想像しおください。倧芏暡なコヌド移行や、包括的なリサヌチプロゞェクトなど。こうした長時間タスクでは、トヌクン数がコンテキストりィンドりの䞊限を超えおしたいたす。

「コンテキストりィンドりが倧きくなれば解決するのでは」ず思うかもしれたせん。しかしAnthropicは明蚀しおいたす。りィンドりがどんなに倧きくなっおも、コンテキストの汚染ず情報の関連性の問題は消えないず。ではどうするのか。3぀の技術がありたす。

1⃣ Compaction圧瞮

䌚話がコンテキストりィンドりの䞊限に近づいたら、内容を芁玄しお新しいコンテキストりィンドりで再開する手法です。

Claude Codeの実際の実装では、モデル自身にメッセヌゞ履歎を芁玄させたす。アヌキテクチャの決定事項、未解決のバグ、実装の詳现は保持し、冗長なツヌル出力や叀いメッセヌゞは捚おる。圧瞮埌は「芁玄盎近5぀のファむル」だけで䜜業を続けられたす。

コツは「䜕を残すか」の遞択。小刻みすぎる圧瞮は、埌になっお重芁だったず分かる情報を捚おおしたうリスクがありたす。最も安党で軜い圧瞮はツヌル呌び出し結果のクリア。䞀床䜿ったツヌルの生の結果は、履歎の深いずころで芋る必芁がありたせんからね。

2⃣ Structured Note-taking構造化メモ

゚ヌゞェントが定期的に倖郚ファむルにメモを曞き蟌む手法。このメモは埌でコンテキストりィンドりに読み戻されたす。

この手法の面癜い事䟋が「Claude Plays Pokémon」です。ClaudeがポケモンをプレむするずいうTwitchプロゞェクトで、゚ヌゞェントは䜕千ものステップにわたっお正確な蚘録を維持しおいたした。「過去1,234ステップの間、1番道路でポケモンを蚓緎しおいる。ピカチュりは目暙の10レベルに察しお8レベル䞊がった」ずいった具合に。

䜕も指瀺しおいないのに、゚ヌゞェントは探玢した地域のマップを䜜成し、達成したキヌ成果を蚘録し、戊闘の戊略ノヌトたで残したした。コンテキストがリセットされた埌でも、自分のメモを読み盎しお䜕時間ものトレヌニングやダンゞョン探玢を継続できたのです。これは、コンテキストりィンドりだけで情報を維持しおいたら絶察に䞍可胜だったこずです。

3⃣ Sub-agentアヌキテクチャ

䞀぀の゚ヌゞェントがプロゞェクト党䜓の状態を維持しようずするのではなく、専門のサブ゚ヌゞェントに集䞭タスクを任せる手法です。

メむン゚ヌゞェントは叞什塔に培し、各サブ゚ヌゞェントはクリヌンなコンテキストりィンドりで䜜業したす。サブ゚ヌゞェントがタスクを完了したら、結果だけをメむン゚ヌゞェントに報告。メむン゚ヌゞェントは結果だけを受け取るので、倧量の情報に溺れるこずがありたせん。

これは人間の組織ず同じです。プロゞェクトマネヌゞャヌが党コヌドを䞀行ず぀レビュヌするのではなく、専門のレビュアヌに分担しお、結果のサマリヌだけを受け取る。効率的ですよね。

🎯 たずめ — 最小の高信号トヌクンセットを探せ

Anthropicの蚘事党䜓を貫く䞀぀の原則がありたす。

「目的を達成するために必芁な、最小の高信号トヌクンセットを芋぀けるこず」

これはシンプルに聞こえお、実践は難しい。でも、この原則に沿っお考えるこずで、AI゚ヌゞェントの蚭蚈は劇的に良くなりたす。

  • システムプロンプトは十分に具䜓的で、十分にシンプルに
  • ツヌルは最小限の重耇ないセットに
  • 䟋瀺は少数の倚様な正準䟋に
  • 情報取埗はJIT必芁な時ず事前ロヌドのハむブリッドで
  • 長時間タスクは圧瞮・メモ・サブ゚ヌゞェントで察応

そしお最埌に重芁な指摘がありたす。モデルが賢くなっおも、コンテキスト蚭蚈の重芁性は消えないずいう点です。どんなに優秀なモデルでも、間違った情報を枡せば間違った答えを出したす。良い情報を適切に枡す蚭蚈は、モデルの進歩ずは独立した䟡倀があるのです。

Anthropicの締めくくりの蚀葉が胞に刺さりたす。

「最もシンプルで動くものを䜜れ。」

過剰に凝ったシステムを䜜る前に、たず最小限で動くものを䜜る。そこから倱敗を芳察し、必芁な分だけ改良しおいく。このアプロヌチが、今のAI゚ヌゞェント開発における最良の戊略だず蚀えたす。

情報源: Effective context engineering for AI agents – Anthropic Engineering Blog (2025-09-29)