{
  "title": "コンテキストエンジニアリング：プロンプトエンジニアリングだけでは足りなかった理由",
  "excerpt": "2026年において、現代のAIシステムにおける本当の仕事は、巧みなプロンプトを書くことではありません。モデルが何を見るか、いつ見るか、そのコンテキストをどのように構造化し、永続化し、持続的なメモリに変えるかを決定することです。",
  "content_html": "<p>かつて「プロンプトエンジニアリング」とは、大規模言語モデルから良い結果を引き出すための技術に私たちが与えた名前でした。初期の頃はそれで十分でした。ほとんどの人がワンショットのやり取りを使っており、主なレバーは本当に言葉遣いのように感じられました。より明確に質問し、例を加え、フォーマットを制約すれば、モデルはより良く振る舞いました。</p><p>しかし、そのフレームワークは今や実際の問題に対して小さすぎます。</p><p>AIシステムが本番環境で失敗するとき、問題は通常、モデルがシステムプロンプトにもう一つ巧みな文を必要としていたことではありません。問題は、モデルが適切な情報を見ていなかった、無関係な情報を見すぎていた、適切な情報を間違ったフォーマットで見ていた、あるいは一つのステップから次のステップへ適切な状態を引き継げなかったことです。言い換えれば、問題はプロンプトだけではありませんでした。問題は<strong>コンテキストパイプライン全体</strong>でした。</p><p>だからこそ<strong>コンテキストエンジニアリング</strong>という用語が広まりました。この言葉は2025年半ばにAIの主流な議論に登場し、Tobi LütkeとAndrej Karpathyが「プロンプトエンジニアリング」は信頼性の高いLLMシステムを構築するための実際の作業を過小評価していると主張しました。[1] しかし、その根底にある規律は名前よりも古いものです。RAG、ツール呼び出し、メモリシステム、要約、評価ループを構築したことがあれば、すでにコンテキストエンジニアリングの一部を行っています。変わったのは、仕事全体を表す名前がついにできたということです。</p><h2>シンプルなメンタルモデル</h2><p>最もシンプルな図で表すなら、コンテキストエンジニアリングは外の世界とモデルのワーキングメモリの間にある層です。</p><pre><code class=\"language-mermaid\">flowchart TD\n    U[\"ユーザーリクエスト\"] --&gt; CE[\"コンテキストエンジン\"]\n\n    I[\"指示とポリシー\"] --&gt; CE\n    R[\"取得した知識\"] --&gt; CE\n    M[\"メモリと保存された状態\"] --&gt; CE\n    T[\"ツール定義と結果\"] --&gt; CE\n    H[\"最近の会話履歴\"] --&gt; CE\n\n    CE --&gt; W[\"モデルのコンテキストウィンドウ\"]\n    W --&gt; L[\"LLMが推論し行動する\"]\n    L --&gt; O[\"回答またはツール呼び出し\"]\n    O --&gt; S[\"新しいメモリ、ログ、状態\"]\n    S --&gt; CE</code></pre><p>これがゲームの全てです。</p><p>モデルは推論エンジンです。コンテキストエンジンは、モデルが何を推論するかを決定します。</p><h2>名前は新しい。仕事は新しくない。</h2><p>この用語が共感を呼ぶ理由の一つは、それまで別々に進化していたいくつかのスレッドを結びつけているからです。</p><p>Retrieval-Augmented Generation（RAG）は、モデルが推論時に外部知識にアクセスする必要があることを教えてくれました。[2] ReActは、モデルがツールを呼び出し、結果を観察し、そこから継続できるとき、推論と行動がより良く機能することを教えてくれました。[3] メモリ研究は、長期間動作するアシスタントには、無限のトランスクリプト蓄積ではなく、インデックス作成、取得、読み取り戦略が必要であることを教えてくれました。[4] 長いコンテキストの評価は、単純により多くのトークンをモデルに詰め込むことは、より良いワーキングメモリを与えることと同じではないことを示しました。[5][6][7]</p><p>このように見ると、コンテキストエンジニアリングはこれらのアイデアの代替ではありません。それらの上にある傘です。</p><p>その傘が重要なのは、現代のAIシステムがもはや孤立したプロンプトではないからです。それらは、次のステップのために一時的なコンテキストウィンドウに指示、ドキュメント、構造化データ、ツール出力、および以前の状態を組み立てる動的なシステムです。LangChainはこれをうまく表現しており、コンテキストエンジニアリングを、LLMがタスクをもっともらしく完了できるように、適切な情報とツールを適切なフォーマットで提供する作業と定義しています。[8]</p><p>「もっともらしく完了する」というフレーズは多くの意味を持っています。それが正しいテストです。</p><p>エージェントが失敗した場合、最初の質問は「プロンプトをどうすればより賢くできるか？」であってはなりません。</p><p>最初の質問は「モデルが成功するために必要なものを実際に与えたか？」であるべきです。</p><h2>プロンプトエンジニアリングが小さくなった理由</h2><p>プロンプトエンジニアリングはまだ重要です。ただ、より大きな規律のサブセットになりました。</p><table><thead><tr><th>プロンプトエンジニアリング</th><th>コンテキストエンジニアリング</th></tr></thead><tbody><tr><td>より良い指示を書く</td><td>完全な情報環境を構築する</td></tr><tr><td>単一のリクエストに集中する</td><td>マルチステップシステムに集中する</td></tr><tr><td>主に静的</td><td>動的でステートフル</td></tr><tr><td>言葉遣いを最適化する</td><td>選択、構造、メモリ、ツールを最適化する</td></tr><tr><td>単一のモデル呼び出しを改善する</td><td>ループ全体を改善する</td></tr></tbody></table><p>この違いは、エージェントを構築した瞬間に明らかになります。</p><p>エンタープライズソフトウェアのサポートエージェントを構築しているとします。ユーザーが「なぜAPIリクエストがタイムアウトしているのですか？」と尋ねます。</p><p>プロンプトの観点だけで考えると、言葉遣いを改善するかもしれません：</p><ul><li>モデルに簡潔にするよう求める</li><li>証拠を引用するよう求める</li><li>ステップバイステップで考えるよう求める</li></ul><p>これらは良い改善です。しかし十分ではありません。</p><p>実際のシステムの質問はより難しいです：</p><ul><li>エージェントはインシデントランブックにアクセスできるか？</li><li>最新のログとステータスページを見ることができるか？</li><li>このアカウントがどの顧客ティアに属するかを知っているか？</li><li>会話の以前のターンを覚えているか？</li><li>チケットシステムにクエリできるか？</li><li>古いドキュメントと現在のドキュメントを区別できるか？</li><li>コンテキストが多すぎる場合、何がトリミングされるか？</li></ul><p>それがコンテキストエンジニアリングです。</p><p>プロンプトはその中の一つの項目に過ぎません。</p><h2>コンテキストとして何が含まれるか</h2><p>実際には、コンテキストには推論時にモデルが見るすべてのものが含まれます。目に見えるプロンプトだけではありません。[8][9]</p><p>通常、それは以下を意味します：</p><ul><li>システム指示</li><li>現在のユーザーリクエスト</li><li>取得したドキュメント</li><li>JSON、テーブル、スキーマ、レコードなどの構造化データ</li><li>ツール定義</li><li>ツール出力</li><li>最近の会話履歴</li><li>長期メモリまたは保存されたノート</li><li>セキュリティ、ポリシー、フォーマットの制約</li><li>ファイル、タブ、チケット、作業ディレクトリなどの環境状態</li></ul><p>これが「コンテキストウィンドウを埋める」というフレーズが非常に重要になった理由です。コンテキストウィンドウは単にテキストが入る場所ではありません。それはモデルの一時的なワーキングメモリです。そこに入るすべてのものが注意を競い合います。</p><p>そして競争がキーワードです。</p><p>余分なトークンは単なる追加情報ではありません。それはまた追加の気晴らしでもあります。</p><h2>より大きなコンテキストウィンドウが問題を解決しなかった理由</h2><p>現在のAI市場で最も一般的な誤解の一つは、より大きなコンテキストウィンドウがコンテキストエンジニアリングをあまり重要でなくしたというものです。</p><p>研究は逆の方向を示しています。</p><p>「Lost in the Middle」は、モデルが長いコンテキストを不均一に使用することが多く、関連情報が最初または最後の近くに現れるときにパフォーマンスが良く、重要な情報が中間にあるときにパフォーマンスが悪いことを示しました。[5] Databricksの長いコンテキストRAG研究では、より多くの取得ドキュメントを追加することは助けになる場合があるが、64kトークン以上で強いパフォーマンスを維持した最先端モデルはごく少数であることがわかりました。[6] Chromaの「Context Rot」レポートはさらに踏み込んでいます：入力長が増加するにつれて、特に曖昧さと気晴らしが導入されると、単純なタスクでさえ信頼性が低下します。[7]</p><p>これは多くのチームが苦労して学ぶ部分です。</p><p>より大きなウィンドウは選択の必要性を排除しません。最初は悪い選択のコストを見えにくくし、後でより痛みを伴うものにします。</p><p>長いプロンプトは少なくとも4つの異なる方法で失敗する可能性があります：</p><ol><li><strong>コンテキスト汚染</strong>：悪い事実、幻覚、または古い結果が引き継がれる。</li><li><strong>コンテキスト気晴らし</strong>：関連しているが重要でない詳細が多すぎてコアタスクを圧倒する。</li><li><strong>コンテキスト混乱</strong>：異なるコンテキストの断片が互いに矛盾する。</li><li><strong>コンテキスト無駄</strong>：有用なトークンが冗長または低価値の素材の下に埋もれている。</li></ol><p>これがコンテキストエンジニアリングがトークンを最大化することではない理由です。それはコンテキストウィンドウ内の<strong>シグナル密度</strong>を最大化することです。</p><h2>取得からナビゲーションへ</h2><p>ここで最近の最良のアイデアの一つが登場します。</p><p>Jason Liuは、古典的なチャンクベースのRAGの次のステップは、「最も類似したパッセージ」だけを考えることをやめ、<strong>検索空間の形状</strong>について考え始めることだと主張しました。[10] 彼のフレームワークは、多くのチームがすでに移行しているプログレッションをマッピングしているため、特に有用です：</p><ol><li>最小限のチャンク</li><li>ソースメタデータを持つチャンク</li><li>マルチモーダルおよび構造化コンテンツのより良い処理</li><li>ファセットとクエリの絞り込み</li></ol><p>最初の3つは取得されるものの改善です。</p><p>4番目はより興味深いです。それはエージェントが<strong>コーパス自体について</strong>学ぶことを改善します。</p><p>ファセットはモデルに周辺視野のようなものを与えます。上位のいくつかのチャンクだけを返す代わりに、システムは集約されたメタデータも返すことができます：</p><ul><li>どのドキュメントタイプが結果セットを支配しているか</li><li>どのチームまたは所有者が最も頻繁に現れるか</li><li>どの日付がクラスター化しているか</li><li>どのカテゴリが存在するが上位結果で過小表現されているか</li></ul><p>これが重要なのは、類似性検索が最も重要なものではなく、最も一致しやすいものに偏っているからです。[10] 取得システムは、よく文書化された解決済みのインシデントを過剰に表示し、まだ開いているスパースなインシデントを過小表示するかもしれません。法的検索は署名済みの契約を過剰に表示し、実際に注意が必要な未署名のものを隠すかもしれません。ファセットはエージェントが「何が一致したか」だけでなく「近くに他に何が存在するか」を見るのに役立ちます。</p><p>これは大きな概念的転換です。</p><p>RAGは主に取得についてでした。</p><p>コンテキストエンジニアリングはますます<strong>ナビゲーション</strong>についてになっています。</p><h2>コンテキストエンジニアリングの6つの仕事</h2><p>コンテキストエンジニアリングを具体的にする最も簡単な方法は、それが実際に行う仕事に分解することです。</p><h3>1. 選択</h3><p>最初の仕事は、ウィンドウに入る価値があるものを決定することです。</p><p>これには取得、ランキング、フィルタリング、ソースの選択、鮮度チェックが含まれます。明らかに聞こえますが、ここで多くの品質が勝ち負けします。BRIGHTのようなベンチマークは、現実的な取得が表面的な意味的マッチングが示唆するよりもはるかに難しいことを示しています。[11] 取得品質が弱い場合、どれだけ下流のプロンプトを磨いても結果を完全に救うことはできません。</p><p>選択は単に「関連するチャンクを見つける」ことではありません。それは：</p><ul><li>適切なソースを選ぶ</li><li>適切な粒度を選ぶ</li><li>適切な量を選ぶ</li><li>適切な順序を選ぶ</li></ul><p>良いシステムはしばしばナイーブなシステムよりも少なく取得しますが、より意図的に取得します。</p><h3>2. 構造</h3><p>2番目の仕事は、選択されたコンテキストをどのように表現するかを決定することです。</p><p>同じ情報でも、フォーマットによって役立つか役立たないかが変わります。Anthropicのツール使用ガイダンスはこれについて明確です：ツールの説明とインターフェースはモデルの動作を強く形成します。[9] 長いコンテキストのプロンプトガイダンスは、XMLタグ付け、ソースラベリング、明確に分離されたドキュメントセクションについて同様の推奨をしています。[12]</p><p>実際には、構造とは：</p><ul><li>ソースにラベルを付ける</li><li>指示をデータから分離する</li><li>複雑なドキュメントを一貫したマークアップでラップする</li><li>重要な場合はテーブルをテーブルとして保持する</li><li>証拠と共に引用とメタデータを返す</li></ul><p>短くてよくラベル付けされた結果は、巨大なJSONブロブよりも優れたパフォーマンスを発揮することが多いです。</p><h3>3. 圧縮</h3><p>3番目の仕事は、重要なものを破壊せずにコンテキストを削減することです。</p><p>ここで多くのエージェントシステムが大幅に良くなるか悪くなるかが決まります。</p><p>圧縮とは：</p><ul><li>以前のターンを要約する</li><li>古い履歴をトリミングする</li><li>最後のいくつかのユーザーターンのみを逐語的に保持する</li><li>長いスレッドから持続的な事実を抽出する</li><li>コストとレイテンシを削減するために安定したプレフィックスをキャッシュする</li></ul><p>OpenAIのプロンプトキャッシングドキュメントは、プロンプトの順序が経済的にも認知的にも重要であることを示しています：キャッシュヒットは正確なプレフィックスの再利用に依存するため、静的な共有プレフィックスを前に置くと安くて速くなります。[13] OpenAIの新しいResponses APIのコンパクション作業は、長期間実行されるエージェント履歴を、ウィンドウが満杯になる前により少ないトークンの表現に圧縮されるべきものとして扱うことで、同じアイデアをさらに推し進めています。[14]</p><p>圧縮はオプションではありません。唯一の質問は、意図的に行うか、コンテキストウィンドウが自然に劣化するままにするかです。</p><h3>4. メモリ</h3><p>4番目の仕事は、現在のターンを超えて何を持続させるかを決定することです。</p><p>ここで多くのチームが同じ間違いを犯します：メモリとトランスクリプト保持を混同します。</p><p>しかし良いメモリは「すべてを永遠に保持する」ことではありません。LongMemEvalは長期メモリを3段階の問題としてフレーム化しています：インデックス作成、取得、読み取り。[4] それが正しい考え方です。メモリシステムは、完全な過去でモデルを溺れさせるのではなく、適切な瞬間に適切な以前の事実を回復するのに役立つべきです。</p><p>これは有用な区別につながります：</p><ul><li><strong>ワーキングメモリ</strong>：現在のタスクに必要な短期コンテキスト</li><li><strong>参照メモリ</strong>：後で再ロードできる外部化された事実、要約、ノート、またはアーティファクト</li></ul><p>すべてがワーキングメモリに留まると、モデルは気が散ります。すべてが押し出されると、モデルは継続性を失います。</p><p>コンテキストエンジニアリングは、各層に何が属するかを決定します。</p><h3>5. ツールとインターフェースの設計</h3><p>5番目の仕事は、ツールをモデルにとって読みやすくすることです。</p><p>これは規律の過小評価されている部分です。ツールサーフェスは単なるソフトウェアAPI設計ではありません。それはまたコンテキスト設計でもあります。</p><p>モデルは以下を理解する必要があります：</p><ul><li>ツールが何をするか</li><li>いつ使用するか</li><li>各パラメータが何を意味するか</li><li>出力が何を意味するか</li><li>結果を見た後に次に何をするか</li></ul><p>これがツールの説明が非常に重要な理由です。[9] Jason Liuのツール結果への強調が重要な理由でもあります。[10] ツールの出力は単に現在のクエリに答えるだけではありません。それはエージェントに次のクエリについてどう考えるかを教えます。</p><p>ツールサーフェスがMCPのようなプロトコルを通じて標準化されると、これはさらに重要になります。MCPはツール、リソース、プロンプトをLLMアプリケーションに接続しやすくしますが、どの情報を表示すべきか、どのようにフィルタリングすべきか、次のモデル呼び出しにどれだけ注入すべきかを決定しません。[15] プロトコルは配管です。コンテキストエンジニアリングは依然として技術です。</p><h3>6. 分離とオーケストレーション</h3><p>6番目の仕事は、コンテキストを共有しないタイミングを決定することです。</p><p>これはデモと本番エージェントの最大の違いの一つです。</p><p>時には正しい答えは、より大きな共有プロンプトではありません。それは分離されたスコープを持つ複数の小さなプロンプトです。</p><p>Anthropicのマルチエージェント研究システムは強力な例です。[16] そのサブエージェントは別々のコンテキストウィンドウで並行して実行され、すべての中間詳細で互いを汚染することなく問題の異なるブランチを探索するのに役立ちます。LangChainは「分離」という同様のパターンを説明しています：エージェントの信頼性を向上させる最良の方法は、コンテキストを蓄積するのではなく分割することです。[17]</p><p>これが重要なのは、共有コンテキストに隠れたコストがあるからです。それはパス依存性を生み出します。一つの悪いブランチが次のステップ、そのまた次のステップに影響を与える可能性があります。</p><p>分離は爆発半径を制限する方法です。</p><h2>2026年に変わったこと</h2><p>2025年、コンテキストエンジニアリングは主に人々がすでに感じていた問題の有用な名前でした。2026年には、アーキテクチャとして固まり始めています。</p><p>最初の大きな変化は、ビルダーが持続的な状態を生のコンテキストウィンドウの<strong>外</strong>に移動させていることです。Anthropicのコンテキスト編集とメモリツールは、ワーキングウィンドウでライブに留まるものとセッション間で持続すべきものを明示的に分離しています。[18] OpenAIの2026年1月のパーソナライゼーションに関するクックブックは、異なる形で同じ動きをしています：各実行にわたって持続し、各実行の開始時にワーキングメモリに意図的に注入される構造化された状態オブジェクト。[19] OpenAIのResponses APIはネイティブコンパクションでこれをさらに一歩進め、長期間実行されるエージェントループがすべてのチームがカスタム要約サブシステムを構築する必要がないようにしています。[14]</p><p>AnthropicのManaged Agentsは、基礎となるパターンを異常に明示的にしています：<strong>セッションはモデルのコンテキストウィンドウではありません。</strong>[20] それは重要な2026年のアイデアです。ウィンドウは一時的なワーキングメモリです。セッションログは持続的なオブジェクトです。ハーネスは、その持続的なコンテキストを次のモデル呼び出しにスライス、コンパクト、再水和する方法を決定します。</p><p>2番目の変化は、取得がより<strong>ジャストインタイム</strong>でよりインターフェースネイティブになっていることです。すべての可能性のある関連トークンを前もって読み込む代わりに、チームはエージェントにすでに操作方法を知っている取得サーフェスを与えています。MintlifyのChromaFsは良い例です：ドキュメント取得のためにフルサンドボックスを起動する代わりに、`ls`、`cat`、`grep`でナビゲート可能な仮想ファイルシステムとしてドキュメントを提示し、p90セッション作成を約46秒から約100ミリ秒に削減しています。[21] TursoのAgentFSは同じ直感を一般的なエージェント実行に向けて推し進めています：ポータブルな単一ファイルストレージと組み込み監査を持つコピーオンライトファイルシステム抽象化。[22]</p><p>3番目の変化は、<strong>コンテキストグラフ</strong>が単なる比喩ではなく実装の方向性になっていることです。Foundation Capitalのテーゼがこの用語を可視化しましたが、より強い主張はアーキテクチャ的です：エージェントが実行パスに座るとき、最終出力を発するだけでなく、決定トレースを持続的なアーティファクトとしてキャプチャできます。[26][27] GraphitiやZepのようなオープンソースシステムは、有効性ウィンドウ、出所エピソード、セマンティクス、キーワード、グラフ構造にわたるハイブリッド取得を持つ時間的コンテキストグラフとしてこれを運用化しています。[23] TrustGraphは、コンテキストをバージョン管理されたアーティファクトとして扱うことで関連するアプローチを取っています：オントロジー、グラフ構造、埋め込み、出所、取得ポリシーをビルド出力のように昇格またはロールバックできるポータブルな「コンテキストコア」にバンドルしています。[24][25]</p><p>4番目の変化は、コンテキストエンジニアリングがプラットフォームブログだけでなく、実際のソフトウェア実践で可視化されていることです。2026年のMSRペーパーは、コンテキストエンジニアリングをオープンソースソフトウェアで研究し、466のリポジトリを調査し、`AGENTS.md`のようなAIコンテキストファイルが広まっているが、まだ安定したコンテンツ構造がないことを発見しました。[28] これは理論から運用アーティファクトへの移行を示すため重要です。コンテキストはもはや実行時に推論されるだけのものではありません。ソフトウェアライフサイクルの一部として作成、バージョン管理、レビュー、マイニングされています。</p><p>2026年のメンタルモデルを一枚の図で表すと、次のようになります：</p><pre><code class=\"language-mermaid\">flowchart LR\n    E[\"セッションログ / イベント\"] --&gt; A[\"コンテキストアセンブラー\"]\n    F[\"ファイル、ドキュメント、ツール\"] --&gt; A\n    G[\"コンテキストグラフ / メモリ\"] --&gt; A\n    P[\"ポリシーとAGENTS.md\"] --&gt; A\n\n    A --&gt; W[\"ワーキングコンテキストウィンドウ\"]\n    W --&gt; X[\"エージェントアクション\"]\n\n    X --&gt; E\n    X --&gt; G</code></pre><p>これは「プロンプト + ベクター検索」とは全く異なるアーキテクチャです。</p><h2>コンテキストグラフが実際にどこに当てはまるか</h2><p>この会話が混乱する理由の一つは、人々が<strong>コンテキストエンジニアリング</strong>と<strong>コンテキストグラフ</strong>を同じ意味で使うからです。それらは同じではありません。</p><p>コンテキストエンジニアリングはより広い規律です。次のコンテキストウィンドウに何を入れるか、何を除外するか、何を圧縮するか、何をオンデマンドで取得するかを決定する作業です。</p><p>コンテキストグラフは、その大きなシステム内の一つの可能な長期メモリ基盤です。</p><p>この区別が重要なのは、すべての有用なエージェントがコンテキストグラフを必要とするわけではないからです。主に静的なコンテンツに対するドキュメントアシスタントは、良い取得、ツール設計、コンパクションが必要かもしれませんが、グラフは必要ないかもしれません。コーディングエージェントは、リポジトリ指示、持続的なセッションログ、ファイルシステム抽象化で驚くほど遠くまで行けるかもしれません。[20][21][22][28]</p><p>コンテキストグラフは、問題が4つの特性を持つときに説得力を持ちます：</p><ul><li><strong>時間的真実が重要。</strong>今何が真実かだけでなく、決定時に何が真実だったかを知る必要がある。[23]</li><li><strong>出所が重要。</strong>事実をそれを生み出したエピソード、ドキュメント、またはインタラクションまで追跡する必要がある。[23][24]</li><li><strong>先例が重要。</strong>タスクは、例外や承認を含む、以前に類似のケースがどのように処理されたかに依存する。[26][27]</li><li><strong>クロスエンティティ推論が重要。</strong>有用なメモリはフラットなノートではなく、人々、ポリシー、インシデント、アカウント、チケット、結果のネットワークである。[23][25]</li></ul><p>これが私の見解では、コンテキストグラフの最良の定義が「AIのためのグラフデータベース」ではない理由です。それは<strong>先例の持続的な表現</strong>です。</p><p>これが決定トレースが非常に重要な理由でもあります。Foundation Capitalのフレームワークはここで有用です：ルールはエージェントに一般的に何が起こるべきかを伝えます；決定トレースは、実際の制約と実際の例外の下で、特定のケースで何が起こったかを伝えます。[26] これらのトレースがエンティティと時間にわたってリンクされると、一般的なメモリよりもはるかに価値のあるものが得られます。検索可能な判断が得られます。</p><h2>2026年に私がどのように構築するか</h2><p>今日真剣なコンテキストエンジニアリングスタックを構築するなら、グラフから始めません。インターフェースと昇格ルールから始めます。</p><h3>1. まず持続的なセッション層を構築する</h3><p>すべてのアクション、ツール結果、観察、重要な中間アーティファクトは、追記専用のセッションログまたはイベントストアに記録されるべきです。これが回復可能なコンテキストオブジェクトです。[14][20]</p><p>アクティブなコンテキストウィンドウを真実のソースと混同しないでください。</p><p>ウィンドウは推論のためです。セッションは回復、リプレイ、デバッグ、選択的再水和のためです。</p><h3>2. コンテキストアセンブラーをプロダクトサーフェスとして扱う</h3><p>アセンブラーは明示的に以下を管理すべきです：</p><ul><li>トークンバジェット</li><li>ソースの優先度</li><li>鮮度</li><li>コンパクションしきい値</li><li>履歴トリミング</li><li>引用フォーマット</li><li>キャッシュ対応の順序付け</li></ul><p>これはモデルが<em>今</em>何を見るかを決定する層です。観察可能で、テスト可能で、変更が安価であるべきです。[18][19][14]</p><h3>3. 積極的な詰め込みよりもジャストインタイム取得を優先する</h3><p>まずモデルに軽量なハンドルを与えます：ファイルパス、オブジェクトID、URL、クエリテンプレート、チケットID、インシデントID。そして必要なときだけ詳細を引き出させます。[9][18][21]</p><p>ここでファイルシステム、MCPツール、検索API、構造化クエリが巨大なtop-Kダンプよりも価値があります。</p><h3>4. 高価値の状態のみを長期メモリに昇格させる</h3><p>すべてがメモリになるべきではありません。</p><p>4つのクラスのアーティファクトを昇格させます：</p><ul><li>安定したユーザーまたはアカウントの設定</li><li>出所を持つ持続的な事実</li><li>重要な中間要約</li><li>決定トレースと例外</li></ul><p>それ以外はすべて、昇格に値することが証明されるまでセッションログに留まるべきです。</p><h3>5. コンテキストグラフを昇格されたメモリ層として構築する</h3><p>これは多くのチームが逆にする部分です。</p><p>グラフはグラフ形式の生のトランスクリプトであってはなりません。それはセッションの上とリアルタイムアセンブリの下に座るキュレートされた層であるべきです：</p><ul><li>エンティティ</li><li>関係</li><li>時間有効性</li><li>ソースエピソード</li><li>承認</li><li>例外</li><li>結果</li></ul><p>昇格ステップをスキップすると、グラフはダンプ場になります。昇格を正しく行うと、グラフは組織が実際にどのように推論するかのメモリになります。[23][26]</p><h3>6. コンテキストをコードのようにパッケージ化する</h3><p>2026年において、最も有望なアイデアの一つはコンテキストをバージョン管理されたアーティファクトとして扱うことです。ソフトウェアプロジェクトでは、これは`AGENTS.md`やその他のリポジトリ固有のコンテキストファイルとして現れます。[28] グラフネイティブシステムでは、コンテキストコアとして現れます：オントロジー、グラフ構造、埋め込み、出所、取得ポリシーのポータブルバンドル。[24][25]</p><p>これが重要なのは、コンテキストの変更がコードの変更と同じ運用規律を必要とするからです：</p><ul><li>レビュー</li><li>バージョン管理</li><li>ロールバック</li><li>環境昇格</li><li>評価</li></ul><p>コンテキストがアーティファクトになると、ガバナンス可能になります。</p><h3>7. 観察可能性をインテリジェンスから分離する</h3><p>両方が必要です：</p><ul><li><strong>エージェント実行の観察可能性</strong></li><li><strong>コンテキストシステムの観察可能性</strong></li></ul><p>それらは同じものではありません。</p><p>私が知りたいのは：</p><ul><li>モデルが何を見たか</li><li>何を見なかったか</li><li>何がコンパクトされたか</li><li>何がジャストインタイムで取得されたか</li><li>何がメモリに昇格されたか</li><li>どのグラフ近傍が走査されたか</li><li>どの先例が実際にアクションに影響を与えたか</li></ul><p>これらの質問に答えられない場合、まだ暗闇の中でプロンプトをデバッグしています。</p><h2>実践的な成熟度モデル</h2><p>自分のシステムがどこに立っているかを評価しようとしているなら、この成熟度モデルは抽象的な定義よりも有用です。</p><h3>レベル0：プロンプトのみ</h3><p>システムプロンプト、ユーザーメッセージ、そしておそらくいくつかの例があります。</p><p>これは狭いタスクに対して驚くほどうまく機能することがあります。タスクが新鮮な知識、永続性、またはツールを必要とするとすぐに壊れます。</p><h3>レベル1：取得強化</h3><p>実行時にドキュメントを追加します。</p><p>多くのチームがここで止まります。また、多くのチームがナイーブなチャンキング、ランキング、コンテキストブロートの限界を見始める場所でもあります。</p><h3>レベル2：エージェント対応</h3><p>履歴、ツール結果、メモリ、フォーマットを意図的に管理するようになります。</p><p>これはシステムがもはや単なるプロンプトプラス取得ではなく、複数の形式のコンテキストを動的に組み立てているため、「コンテキストエンジニアリング」が有用な用語になる最初のレベルです。</p><h3>レベル3：適応型</h3><p>システムはタスクに基づいてコンテキストの構築方法を変えます。</p><p>以下を行うかもしれません：</p><ul><li>ソース間で選択する</li><li>古い履歴を圧縮する</li><li>メモリを選択的にリロードする</li><li>専門ツールに作業をルーティングする</li><li>サブ問題を別々のコンテキストに分離する</li></ul><p>この時点で、コンテキスト構築はアプリケーションのコアロジックの一部です。</p><h3>レベル4：コンテキストネイティブ</h3><p>システムはコンテキストをファーストクラスのエンジニアリングサーフェスとして扱います。</p><p>以下を持っています：</p><ul><li>明示的なコンテキストバジェット</li><li>取得と生成の評価</li><li>メタデータとファセット対応のナビゲーション</li><li>メモリポリシー</li><li>失敗モードに関する観察可能性</li><li>コスト対応のプロンプトアセンブリ</li></ul><p>これが最強の本番システムが向かっている場所です。</p><h2>実践における良いコンテキストエンジニアリングの姿</h2><p>規律全体をチェックリストに絞り込むとしたら、次のようになります：</p><ol><li>プロンプトではなくタスクから始める。まず成功がどのように見えるかを定義する。</li><li>モデルが必要とするかもしれないコンテキストソースを列挙する。指示、ドキュメント、ツール、メモリ、状態、ポリシー。</li><li>ワーキングメモリを参照メモリから分離する。すべてがアクティブウィンドウに存在すべきではない。</li><li>意図を持って取得する。より多くのチャンクはより良いリコールと同じではない。</li><li>モデルが素早く解析できるようにコンテキストを構造化する。ラベル、ソース、テーブル、境界が重要。</li><li>ツールをプロンプトの一部であるかのように設計する。なぜならそうだから。</li><li>積極的にトリミングする。人間に再読させないものは、モデルに再読させない。</li><li>取得と生成を別々に測定する。そうしないと間違った問題を診断する。</li><li>タスクが分岐するか並行して実行できる場合は分離されたコンテキストを使用する。</li><li>持続的な事実と決定トレースを意図的に昇格させる。すべてのトランスクリプトが長期メモリに属するわけではない。</li><li>重要なコンテキストをコードのようにパッケージ化する。指示、ポリシー、グラフアーティファクトはバージョン管理されるべき。</li><li>コンテキストバグをソフトウェアバグのように扱う。観察可能で、再現可能で、修正可能であるべき。</li></ol><p>これは何も華やかではありません。だからこそ重要なのです。</p><p>プロンプトエンジニアリングはショートカットのように聞こえたから人気になりました。</p><p>コンテキストエンジニアリングは実際の作業を説明しているから重要です。</p><h2>本当の教訓</h2><p>AIの重心が移動しています。</p><p>フロンティアの質問はかつて：<strong>モデルはどれほど賢いか？</strong>でした。</p><p>応用の質問はますます：<strong>モデルは行動しなければならない前に何を見ることができるか？</strong>になっています。</p><p>それは異なるエンジニアリング問題です。単一のプロンプトよりもシステム設計について。言葉遣いよりも情報フローについて。ワンショットの出力品質よりも、エージェントが時間をかけて信頼性を維持できるかどうかについて。</p><p>これがコンテキストエンジニアリングが規律として成長し続ける理由です。モデルが良くなるほど、残りの失敗はコンテキストの失敗のように見えます。欠けている状態。間違ったツール。悪い取得。膨れ上がった履歴。貧弱なフォーマット。矛盾する証拠。弱いメモリ。無制限のループ。</p><p>皮肉なのは、これがAIシステムを古典的なソフトウェアに似ていないのではなく、より似ているように感じさせることです。私たちはパイプライン、インターフェース、状態機械、メモリ階層、キャッシュ、観察可能性層の構築に戻っています。新しいのは、これらすべての部分が確率的推論エンジンのサービスに存在するようになったことです。</p><p>名前は新しいかもしれません。方向性は新しくありません。</p><p>信頼性の高いAIシステムは、コンテキストをファーストクラスのプロダクトサーフェスとして扱うチームによって構築されます。</p><p>それ以外の人は、モデルが不安定だと言い続けるでしょう。</p><hr><p><strong>参考文献：</strong></p><p>[1] <a href=\"https://simonwillison.net/2025/Jun/27/context-engineering/\">Simon Willison. (2025, June 27). <em>Context engineering</em>.</a></p><p>[2] <a href=\"https://arxiv.org/abs/2005.11401\">Lewis, P. et al. (2020). <em>Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks</em>.</a></p><p>[3] <a href=\"https://arxiv.org/abs/2210.03629\">Yao, S. et al. (2023). <em>ReAct: Synergizing Reasoning and Acting in Language Models</em>.</a></p><p>[4] <a href=\"https://arxiv.org/abs/2410.10813\">Wu, D. et al. (2025). <em>LongMemEval: Benchmarking Chat Assistants on Long-Term Interactive Memory</em>.</a></p><p>[5] <a href=\"https://arxiv.org/abs/2307.03172\">Liu, N. F. et al. (2023). <em>Lost in the Middle: How Language Models Use Long Contexts</em>.</a></p><p>[6] <a href=\"https://arxiv.org/abs/2411.03538\">Leng, Q. et al. (2024). <em>Long Context RAG Performance of Large Language Models</em>.</a></p><p>[7] <a href=\"https://www.trychroma.com/research/context-rot\">Hong, K., Troynikov, A., and Huber, J. (2025, July 14). <em>Context Rot: How Increasing Input Tokens Impacts LLM Performance</em>.</a></p><p>[8] <a href=\"https://blog.langchain.com/the-rise-of-context-engineering\">LangChain. (2025, June 23). <em>The rise of \"context engineering\"</em>.</a></p><p>[9] <a href=\"https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/implement-tool-use\">Anthropic. <em>How to implement tool use</em>.</a></p><p>[10] <a href=\"https://jxnl.co/writing/2025/08/27/facets-context-engineering/\">Jason Liu. (2025, August 27). <em>Beyond Chunks: Why Context Engineering is the Future of RAG</em>.</a></p><p>[11] <a href=\"https://arxiv.org/abs/2407.12883\">Su, H. et al. (2025). <em>BRIGHT: A Realistic and Challenging Benchmark for Reasoning-Intensive Retrieval</em>.</a></p><p>[12] <a href=\"https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/long-context-tips\">Anthropic. <em>Long context prompting tips</em>.</a></p><p>[13] <a href=\"https://platform.openai.com/docs/guides/prompt-caching\">OpenAI. <em>Prompt caching</em>.</a></p><p>[14] <a href=\"https://openai.com/index/equip-responses-api-computer-environment\">OpenAI. (2026, March 19). <em>From model to agent: Equipping the Responses API with a computer environment</em>.</a></p><p>[15] <a href=\"https://modelcontextprotocol.io/\">Model Context Protocol. <em>What is the Model Context Protocol (MCP)?</em></a></p><p>[16] <a href=\"https://www.anthropic.com/engineering/built-multi-agent-research-system\">Anthropic. (2025, June 13). <em>How we built our multi-agent research system</em>.</a></p><p>[17] <a href=\"https://blog.langchain.com/context-engineering-for-agents/\">LangChain. (2025, July 2). <em>Context Engineering</em>.</a></p><p>[18] <a href=\"https://claude.com/blog/context-management\">Anthropic. (2025, September 29). <em>Managing context on the Claude Developer Platform</em>.</a></p><p>[19] <a href=\"https://developers.openai.com/cookbook/examples/agents_sdk/context_personalization\">Okcular, E. (2026, January 5). <em>Context Engineering for Personalization - State Management with Long-Term Memory Notes using OpenAI Agents SDK</em>.</a></p><p>[20] <a href=\"https://www.anthropic.com/engineering/managed-agents\">Anthropic. <em>Scaling Managed Agents: Decoupling the brain from the hands</em>.</a></p><p>[21] <a href=\"https://www.mintlify.com/blog/how-we-built-a-virtual-filesystem-for-our-assistant\">Mintlify. (2026, March 24). <em>How we built a virtual filesystem for our Assistant</em>.</a></p><p>[22] <a href=\"https://docs.turso.tech/agentfs/introduction\">Turso. <em>AgentFS</em>.</a></p><p>[23] <a href=\"https://github.com/getzep/graphiti\">Zep. <em>Graphiti: Build Real-Time Knowledge Graphs for AI Agents</em>.</a></p><p>[24] <a href=\"https://github.com/trustgraph-ai/trustgraph\">TrustGraph. <em>The context development platform</em>.</a></p><p>[25] <a href=\"https://docs.trustgraph.ai/guides/context-cores/\">TrustGraph. <em>Working with Context Cores</em>.</a></p><p>[26] <a href=\"https://foundationcapital.com/ideas/context-graphs-ais-trillion-dollar-opportunity\">Gupta, J., and Garg, A. (2025, December 22). <em>AI's trillion-dollar opportunity: Context graphs</em>.</a></p><p>[27] <a href=\"https://foundationcapital.com/ideas/why-context-graphs-are-the-missing-layer-for-ai\">Garg, A. (2026, January 16). <em>Why context graphs are the missing layer for AI</em>.</a></p><p>[28] <a href=\"https://arxiv.org/abs/2510.21413\">Mohsenimofidi, S., Galster, M., Treude, C., and Baltes, S. (2026). <em>Context Engineering for AI Agents in Open-Source Software</em>.</a></p>",
  "source_hash": "sha256:352e42d5b8ff71176c26e2e3f9853217033b811bae4f0beaef2cc91e2401caa9",
  "model": "claude-sonnet-4-6",
  "generated_at": "2026-04-23T20:56:33.630704+00:00"
}