コンテキストエンジニアリングとは|プロンプトとの違いと実務
最終更新日:2026/09/19
コンテキストエンジニアリングとは、LLMが推論時に参照する情報全体(システムプロンプト・ツール定義・会話履歴・検索結果・メモリ)を、何をいつどれだけ渡すかという観点で設計する技術です。プロンプトエンジニアリングが指示文の書き方を扱うのに対し、こちらはモデルに渡る情報全体の編成を扱います。単発のチャットでは効果が見えにくく、エージェントのように処理が多段になるほど成否を分けます。指示文の書き方は覚えたのに、実装したAIアプリの精度が安定しない。そんなエンジニア向けに、情報供給の設計という切り口で整理します。
先に結論
コンテキストエンジニアリングは「指示文の最適化」ではなく「モデルに見せる情報全体の設計」。プロンプトエンジニアリングの上位互換ではなく、担当レイヤーが違う
設計の基本戦略は4つ。コンテキストの外に書き出す(Write)、必要なものだけ引き込む(Select)、要らなくなったものを畳む(Compress)、別の文脈に切り離す(Isolate)
詰め込むほど精度が上がるわけではない。長いコンテキストでは中盤の情報が拾われにくくなる劣化が知られており、残すトークンを減らす判断のほうが効くケースが多い(情報不足が原因の場合は逆効果になるため、削減は計測とセットで行う)
失敗の多くは「検索精度」ではなく設計の問題。ツール定義の重複、履歴の垂れ流し、システムプロンプトへのハードコードが上位3つ
実務で効かせるなら、まずコンテキスト利用率と1タスクあたりのターン数を計測する。感覚で削ると精度を落とす
この記事でわかること
プロンプトエンジニアリングとコンテキストエンジニアリングの役割分担
コンテキストを構成する6要素と、それぞれの設計判断
Write・Select・Compress・Isolateの4戦略を実装にどう落とすか
チャット/RAG/エージェントの実装パターン別の設計方針
フリーランスエンジニアが案件でこのスキルをどう示すか
対象読者は、生成AIを使ったアプリやエージェントを実装した経験がある、あるいはこれから実装するエンジニアです。LLMのAPIを一度でも叩いたことがある前提で書いています。
目次
コンテキストエンジニアリングとは何か
コンテキストを構成する6つの要素
4つの基本戦略:Write・Select・Compress・Isolate
コンテキストが劣化する兆候と対処
実装パターン別の設計方針
よくある失敗と対策
コンテキスト設計チェックリスト
フリーランスエンジニアの案件での位置づけ
まとめ
よくある質問
コンテキストエンジニアリングとは何か
結論から言うと、モデルに渡す入力の「中身の設計」ではなく「編成の設計」です。プロンプトという1つの入力欄ではなく、推論のたびに組み上がる情報の束をどう構成するかを扱います。
定義:モデルが見ている情報の総量を設計する
LLMは推論のたびに、その時点でコンテキストウィンドウに載っている情報だけを根拠に応答します。ここに何が載っているかは、多くの場合アプリケーション側のコードが決めています。システムプロンプトを組み立て、ツールの定義を並べ、過去のやり取りを連結し、ベクトル検索の結果を差し込む。この組み上げ工程の設計がコンテキストエンジニアリングです。
Anthropicは公式の技術ブログで、この領域を「望ましい振る舞いを引き出す確率が最も高いコンテキストの構成は何か」という問いだと整理しています(Effective context engineering for AI agents|Anthropic)。注目すべきは、良い設計を「高シグナルなトークンの最小集合を見つけること」と定義している点です。足し算ではなく引き算の技術として位置づけられています。
コンテキストウィンドウと注意の配分
コンテキストウィンドウは有限です。ただし本質的な制約は容量よりも、モデルの注意(attention)が入力全体に均等に配られるわけではないという性質にあります。
長い入力の中盤に置かれた情報が参照されにくくなる現象は、Lost in the Middleとして広く報告されてきました。長文脈での性能劣化を指して、開発者コミュニティでは context rot という通称が使われることもあります(確立した学術用語ではなく、あくまで現場での呼び方です)。ウィンドウの上限に余裕があっても、埋めれば埋めるほど個々の情報の重みは薄まると考えたほうが実装は安定します。
実務上の目安として、利用可能なウィンドウに対する使用率が高止まりしている状態は設計の見直しサインです。あくまで筆者が関わった数件の案件での経験則ですが、常時7割以上を履歴が占める構成になったあたりから、ツールの選択ミスと指示の取りこぼしが体感でわかるほど増えました。一般的な閾値として検証された数字ではないため、自分の環境で計測して判断してください。
プロンプトエンジニアリングとの違い
両者は競合しません。担当する範囲が違います。
観点 | プロンプトエンジニアリング | コンテキストエンジニアリング |
|---|---|---|
対象 | 指示文そのもの(表現・構造・例示) | モデルに渡る情報全体の編成 |
主な手段 | 役割付与、例示、思考の分解、出力形式の指定 | 検索、要約、外部保存、分割、ツール定義の整理 |
効きやすい場面 | 単発の生成タスク、出力の型が決まった処理 | 多段の対話、エージェント、長時間セッション |
主な失敗 | 指示が曖昧で出力がぶれる | 情報が多すぎる/古い/重複している |
調整する場所 | プロンプト文字列 | アプリケーション側のコンテキスト組み立て処理 |
指示文そのものの書き方、つまりZero-shotやFew-shot、思考の分解といった技法は本記事では扱いません。そちらはプロンプトエンジニアリングとは?基本から実践テクニックまでわかりやすく解説で体系的に整理しています。本記事は、その指示文を含めた情報全体をどう供給するかに限定します。
ミニFAQ:プロンプトエンジニアリングはもう不要になるのか
なりません。コンテキストを完璧に編成しても、システムプロンプトの指示が曖昧なら出力はぶれます。順序としては、まず指示文を固め、そのうえで供給する情報を設計するのが実装しやすい流れです。「プロンプトはもう古い」という論調が一部にありますが、実装の現場では両方を触ります。
コンテキストを構成する6つの要素
結論として、コンテキストは単一の塊ではなく、性質の異なる6つの層の集合として扱うと設計しやすくなります。層ごとに更新頻度も削りやすさも違うためです。
要素 | 中身 | 更新頻度 | 設計上の注意 |
|---|---|---|---|
システムプロンプト | 役割・制約・出力規約 | ほぼ固定 | 条件分岐をハードコードしすぎると壊れやすい |
ツール定義 | 関数名・引数・説明文 | 低 | 機能が重なる定義があると選択を誤る |
会話履歴 | 過去のやり取り | 毎ターン | 放置すると最も早く膨張する |
検索結果 | RAGで引いた文書片 | 毎ターン | 件数より適合度。上位数件で足りることが多い |
長期メモリ | ユーザー設定・過去の決定事項 | 低〜中 | 古い前提が残ると誤りを増幅する |
ユーザー入力 | 直近の指示 | 毎ターン | 最も注意が向く位置に置く |
このうち、実装初期に見落とされやすいのがツール定義です。トークンを常時消費し続けるにもかかわらず、プロンプトのように目に見える場所にないため、レビューの対象から漏れます。
Anthropicはツール設計について、機能が重複する定義があるとモデルが選択を誤りやすいと指摘しています(Writing effective tools for AI agents|Anthropic)。似た名前のツールを増やすくらいなら、1つにまとめて引数で分岐させたほうが安定します。
外部データの引き込み方そのものについてはRAGとは?仕組み・活用事例・導入メリットをわかりやすく解説を、グラフ構造を使う発展形はGraphRAGとは|通常RAGとの違い・仕組み・構築案件の実務を参照してください。
4つの基本戦略:Write・Select・Compress・Isolate
LangChainは、エージェントのコンテキスト設計を4つの操作に整理しています(Context Engineering|LangChain)。特定のフレームワークに依存しない分類なので、実装の共通言語として使えます。
Write:コンテキストの外に書き出す
処理の途中で生まれた情報を、コンテキストウィンドウの中ではなく外に保存します。スクラッチパッドへのメモ書き、ファイルへの中間成果物の保存、セッションをまたぐメモリへの記録が該当します。
狙いは、後で必要になるかもしれない情報を抱え込まずに済ませることです。10回の調査を経て最終レポートを書くようなタスクでは、調査結果を毎ターン履歴に積むのではなく、ファイルに書いて必要時だけ読み直すほうが安定します。
Select:必要なものだけ引き込む
保存した情報や外部データのうち、いま必要なものだけをコンテキストに入れます。RAGの検索、メモリの条件付き読み込み、ツール定義の動的な絞り込みがここに入ります。
件数の欲張りは逆効果になりがちです。社内文書検索やFAQ応答のように答えが特定の数文書に閉じるタスクでは、検索結果を上位20件渡すより上位3〜5件に絞ったほうが精度が上がるケースがあります。再現率を優先したくなる場面ですが、ノイズも一緒に入る点は意識しておきたいところです。最適な件数は検索対象・チャンク粒度・再ランキングの有無で変わるため、固定値として扱わないでください。
Compress:要らなくなったものを畳む
古い履歴を要約に置き換える、ツールの生出力から必要な行だけ抜く、といった圧縮です。会話が長引くアプリでは避けて通れません。
圧縮の発火条件は、ターン数ではなくトークン使用率で決めるほうが素直です。使用率が一定の水準(設計時に決めた閾値、たとえば7〜8割)に達したら古い区間から要約する、という組み方が扱いやすいと感じています。要約時に決定事項と未解決事項だけは原文に近い形で残すのがコツです。ここを丸めると、エージェントが同じ議論を繰り返します。
Isolate:文脈を分割する
1つのコンテキストに全部を載せず、役割ごとに切り離します。サブエージェントへの委譲、処理のフェーズ分割、サンドボックス内での実行がこれにあたります。
調査と執筆を1つの文脈で回すと、調査ログが執筆時のノイズになります。調査は別エージェントに任せ、結果だけを受け取る構成にすれば、執筆側のコンテキストは軽いままです。マルチエージェント構成の選択肢はAIエージェント開発フレームワーク比較|LangGraph・CrewAI・AutoGenで整理しています。
ミニFAQ:4戦略はどれから手をつけるべきか
会話が続くチャット型やエージェント型のように履歴が伸びやすいアプリでは、Compressから入ると投資対効果が高くなりやすいです。履歴の膨張は起きやすく、対処も比較的定型的だからです。一方、単発の問い合わせ応答が中心でRAGが主役のアプリでは、Selectの精度から着手したほうが先に効きます。WriteとIsolateは、それでも足りない段階で検討する順序が現実的でしょう。
コンテキストが劣化する兆候と対処
結論として、精度低下の原因をモデルの性能に求める前に、コンテキストの状態を疑ってください。症状には出方の型があります。
典型的な4つの症状
指示の取りこぼし:システムプロンプトに書いたはずの制約が守られない。履歴が伸びた後半で起きやすい
同じ作業の繰り返し:数ターン前に決めたことを再検討し始める。圧縮時に決定事項を落とした場合の典型
ツール選択のミス:似た機能のツールを取り違える。定義の重複か説明文の曖昧さが原因
古い前提での回答:長期メモリに残った過去の設定を現在の前提として使う
対処の優先順位
順番を間違えると効きません。上から試すのが効率的です。
ツール定義の棚卸し。機能が重なるものを統合し、説明文を1機能1目的に書き直す
履歴の圧縮方針の見直し。決定事項・未解決事項・現在の目標を構造化して残す
検索結果の件数を絞る。適合度の閾値を上げ、下位の結果は捨てる
システムプロンプトの条件分岐を減らす。細かい場合分けはツール側やコード側に逃がす
それでも足りなければ、フェーズを分割して別コンテキストにする
3番目までで改善するケースが多く、そこで止まれば構成変更まで踏み込まずに済みます。いきなり構成を作り替えると、何が効いたのか判定できなくなります。
なお、外部データを引き込む構成では、取り込んだ内容に指示文が混入するリスクがあります。対策はプロンプトインジェクション対策|LLMアプリのセキュリティ実装ガイドにまとめています。
実装パターン別の設計方針
同じ4戦略でも、アプリの形によって重心が変わります。3パターンに分けて整理します。
単発チャット・単発生成
履歴がほぼないため、コンテキスト設計の比重は小さめです。システムプロンプトの品質と、必要なら検索結果の適合度で決まります。ここでコンテキストエンジニアリングを持ち出す実益は薄く、指示文の設計に集中したほうが早いでしょう。
RAGを伴う問い合わせ応答
Selectが主戦場です。チャンク分割の粒度、検索の件数、再ランキングの有無で精度が動きます。
実務で効くのは、検索結果をそのまま連結せず、出典と本文を構造化して渡すことです。どの文書のどの位置・どのセクションから来たかが明示されていると、モデルは根拠の紐付けを間違えにくくなります。PDFならページ、Web文書なら見出し、DBならレコードIDというように、媒体に合わせた位置情報を添えてください。ベクトルデータベースの選定はPineconeとは|特徴・料金・RAG構築での使い方を実装例つきで解説が参考になります。
マルチステップのエージェント
4戦略すべてを使います。ここが最も設計の巧拙が出る領域です。
1タスクが10ターンを超えるような構成では、Write(中間成果物の外部保存)とIsolate(サブエージェント分割)が効きます。逆に3〜5ターンで終わるタスクに最初からサブエージェントを導入すると、受け渡しのオーバーヘッドだけが増えます。精度の最適化だけを目的にするなら、まず単一エージェントで組み、ターン数が伸びてから分割するのが手戻りの少ない進め方です。ただし権限分離や障害の切り分けが要件に入る場合は、精度とは別の理由で最初から分割する判断もあります。
エージェント自体の基礎はAIエージェントとは?仕組み・種類・活用事例をわかりやすく解説を参照してください。
よくある失敗と対策
失敗1:とりあえず全部入れる
社内文書を丸ごと、履歴も全部、ツールも思いつく限り。初期実装で最も多いパターンです。動くには動きますが、伸びしろがありません。
対策は計測から入ることです。1リクエストあたりの入力トークンを要素別に分解し、どこが太いかを出します。だいたい履歴かツール定義のどちらかが犯人です。
失敗2:システムプロンプトに条件分岐を書き込む
「Aの場合はこうして、Bの場合はこうして」を増やし続けると、指示同士が干渉し始めます。Anthropicも、複雑なハードコードされたロジックは壊れやすいと指摘しています。
対策は、分岐をコード側かツール側に移すことです。プロンプトには判断基準の水準(どういう方針で判断するか)だけを書き、個別の場合分けは実装で吸収します。
失敗3:圧縮で決定事項まで消す
要約時に「重要そうな部分」を残そうとして、議論の結論を落としてしまうケース。エージェントが堂々巡りを始めたら、まずここを疑ってください。
対策は、要約の出力形式を固定することです。現在の目標、確定した決定、未解決の論点、この3つは見出し付きで必ず残す。自由形式の要約に任せると落ちます。
失敗4:改善したかどうかを測っていない
体感で「良くなった気がする」で進めると、数週間後に元に戻っています。
対策は評価セットの用意です。小〜中規模の内部評価では、代表的な入力を20〜50件程度固定して変更前後を比較するところから始めるケースが多いでしょう。本番運用で品質保証まで求められる場合は、これより多くの件数とカバレッジ設計が必要になります。評価の組み方はLLM評価(Evals)とは|LLM-as-a-Judgeと品質保証の実務まで解説で詳しく扱っています。
コンテキスト設計チェックリスト
実装レビューでそのまま使える形にまとめました。手元のプロジェクトに当てて、通らない項目から潰してください。
観点 | 確認項目 | 未達時の対処 |
|---|---|---|
計測 | 入力トークンを要素別(履歴/ツール/検索結果/固定文)に分解できるか | ロギングを先に入れる |
計測 | 1タスクあたりの平均ターン数を把握しているか | トレースを取得する |
ツール | 機能が重複する定義がないか | 統合して引数で分岐 |
ツール | 説明文が1機能1目的で書かれているか | 用途を1文に絞る |
履歴 | 圧縮の発火条件が決まっているか | トークン使用率で閾値を設定 |
履歴 | 要約に決定事項・未解決事項が構造化されて残るか | 出力形式を固定する |
検索 | 上位何件を渡すか根拠を持って決めているか | 件数を減らして比較する |
検索 | 出典情報が本文と分離して渡されているか | 構造化して渡す |
メモリ | 古い前提を無効化する手段があるか | 有効期限か更新フローを設ける |
分割 | サブエージェント化の判断基準があるか | ターン数を基準に決める |
評価 | 変更前後を比較できる固定データセットがあるか | 代表入力を20〜50件用意 |
全項目を最初から満たす必要はありません。計測の2項目だけ先に通すと、残りの判断がやりやすくなります。
フリーランスエンジニアの案件での位置づけ
結論として、コンテキストエンジニアリングは単独の職種名としてはまだ定着しておらず、LLMアプリ開発・エージェント開発案件の要件の一部として現れることが多い領域です。
以下は、主要フリーランスエージェント数社(首都圏中心)の公開案件ページで、2026年9月時点に週3〜5日の準委任案件を確認した範囲の観測です。この範囲では、「コンテキストエンジニアリング」を職種名として掲げる募集はほとんど見当たりません。一方で、LLMアプリやAIエージェントの開発案件の要件欄に、RAGの精度改善、トークン最適化、エージェントの設計といった形で実質的に含まれるケースは確認できます。非公開案件は対象に含めておらず、公開案件の母数もまだ多くない領域です。網羅的な調査ではなく限定的な観測として読んでください。
スキルをどう示すか
案件面談で評価されやすいのは、抽象的な理解より具体的な改善の経験です。実務で語れる材料を3つ挙げます。
入力トークンを要素別に分解し、どこを削って何%圧縮したか
検索結果の件数や再ランキングを変えて、評価セットのスコアがどう動いたか
単一エージェントからサブエージェント分割に切り替えた判断基準と、その前後の変化
いずれも数値で語れる形にしておくと、面談での説得力が変わります。数字が出せないなら、せめて判断の根拠を言語化しておくことです。
トークン削減や推論設計そのものを主題とする案件の動向はLLMコスト最適化案件の単価相場|トークン削減・推論設計のフリーランス実務で、エージェント開発案件の全体像はAIエージェント開発案件の単価相場|必要スキル・獲得ルートを解説で扱っています。自分がどのくらいの単価を狙えるか気になる方は、無料のフリーランスエンジニア単価診断で現在の市場単価の目安を確認できます。単価を体系的に上げる考え方は『【2026年最新版】フリーランスエンジニアの単価相場と単価の上げ方とは?』で整理しています。
まとめ
コンテキストエンジニアリングは、モデルに見せる情報を増やす技術ではなく、必要な情報だけを残す判断の技術です。要点を整理します。
対象はプロンプト文字列ではなく、システムプロンプト・ツール定義・履歴・検索結果・メモリ・ユーザー入力の6層すべて
基本戦略はWrite(外部保存)・Select(選択)・Compress(圧縮)・Isolate(分割)の4つ
コンテキストウィンドウに入ることと、その情報が効くことは別問題。長いほど中盤が薄まる
精度低下の原因調査は、ツール定義の棚卸し→履歴の圧縮方針→検索件数の順で当たると効率がよい
圧縮では決定事項と未解決事項を構造化して残す。ここを落とすと堂々巡りが起きる
改善は評価セットで測る。代表入力20〜50件を固定し、変更前後を比較する
次の一歩としては、手元の実装で入力トークンを要素別にログ出力するところから始めてください。着手順は、①要素別のトークンログ取得 ②履歴が占める比率の確認 ③ツール定義の重複棚卸し、の3つで十分です。削る判断はそのあとで構いません。指示文そのものの書き方を先に固めたい場合は、プロンプトエンジニアリングとは?基本から実践テクニックまでわかりやすく解説から読むのが順当でしょう。
参照した一次情報は以下のとおりです。
よくある質問
コンテキストエンジニアリングとRAGは何が違いますか
RAGはSelect戦略の具体的な実装手段の1つです。コンテキストエンジニアリングはその上位概念で、検索して引き込むかどうかも含めて判断します。RAGを入れたのに精度が上がらない場合、引き込む中身ではなく渡し方や量に原因があることがあります。
コンテキストウィンドウが100万トークンあれば設計は不要になりますか
なりません。容量が増えても注意の配分が均一になるわけではないためです。長い入力の中盤が拾われにくくなる性質は複数の研究で報告されており、入るかどうかと効くかどうかは別問題です。むしろ容量が大きいほど、詰め込みたくなる誘惑への歯止めが必要になります。
履歴の圧縮はどのタイミングで走らせるのが適切ですか
トークン使用率を基準にするのが扱いやすい方法です。ターン数で決めると、1ターンあたりの長さがばらつくアプリで機能しません。閾値は設計時に決めますが、7〜8割あたりから試して、要約の質を見ながら調整するのが現実的でしょう。
小規模なチャットボットでも必要な考え方ですか
数ターンで完結するなら優先度は低めです。ただし、ツール定義が10個を超えたり、社内文書を検索する構成になったりした時点で検討する価値が出ます。規模というより、コンテキストを組み立てる処理の複雑さで判断してください。
サブエージェントに分けると必ず精度は上がりますか
上がるとは限りません。分割すると受け渡しで情報が欠落するリスクが生まれます。1タスクが長く、フェーズごとに必要な情報が明確に違う場合は効きますが、短いタスクではオーバーヘッドが勝ちます。まず単一構成で限界を見てからの判断が安全です。
メモリ機能を入れると精度は上がりますか
条件つきです。ユーザーの設定や過去の決定を覚えておく用途では効きますが、古くなった前提が残ると誤りを増幅します。書き込む対象を絞り、更新や無効化の手段をセットで用意しないと、かえって不安定になります。
どのフレームワークを使えば実現できますか
フレームワーク固有の機能ではありません。LangGraphでもClaude Agent SDKでも、APIを直接叩くループでも同じ考え方が適用できます。フレームワークが提供するのは圧縮やメモリの実装の手間を減らす部品であって、何を残すかの判断は実装者が決めます。
独学で身につけるには何から始めればよいですか
手元の小さなエージェントを作り、入力トークンを要素別にログ出力するところからです。可視化すると、どこが太っているかが一目でわかります。理論から入るより、自分の実装の数字を見るほうが理解が早いはずです。参考実装はLangChainのcontext_engineeringリポジトリが読みやすくまとまっています。
コーディングエージェントを使う場合にも関係しますか
大いに関係します。リポジトリのどのファイルを読ませるか、指示をどのファイルに置くかは、そのままSelect戦略の設計です。ツールの使い分けはAIコーディングエージェント比較|Cursor・Claude Code・Clineの選び方を参照してください。
プロンプトエンジニアとコンテキストエンジニアは別の職種になりますか
現時点の公開案件を見る限り、別職種として分かれる動きは確認できません。LLMアプリ開発者・AIエンジニアの職務要件の中に、両方の実務が含まれている形が中心です。職種名を追うより、実装で何を改善できたかを示せるようにしておくほうが実益があります。
