生成AIを使っている時に、「さっき指示したことを守ってくれない」といった経験はありませんか?それはこの記事で紹介するコンテキストの管理が正しくできていないことから起こる現象です。
今回は、AI開発ツールの活用において重要性が高まっている「コンテキストエンジニアリング」という概念を紹介したいと思います。
1. コンテキストエンジニアリングとは?
コンテキストエンジニアリングとは、AIエージェントが適切にタスクを解決できるよう、必要なすべてのコンテキスト(文脈情報)を与える技術です。
AI開発の世界は、単に優れたモデルを作る競争から、その優秀なモデルをいかに賢く使うかという新たなステージへ移行しています。
この変化の中心にあるのが、従来の「プロンプトエンジニアリング」から一歩進んだ、「コンテキストエンジニアリング」という体系的なアプローチです。
Claude Code、Cursor、Codexなどの最新AIコーディングツールを使っていると、「AIに正確に意図を伝えられない」「期待した通りのコードが生成されない」という課題に直面することがあります。これらの課題を解決するのがコンテキストエンジニアリングです。
2. 「プロンプト」から「コンテキスト」へのパラダイムシフト
プロンプトエンジニアリングは、コンテキストエンジニアリングの一部です。巧みな言葉遣いを追求するだけではなく、LLMのための情報環境全体を設計することが、より高度なアプリケーション開発には不可欠です。
従来の「プロンプトエンジニアリング」は、LLMからより良い回答を引き出すために、プロンプトの文言を巧妙に工夫することに主眼が置かれていました。
しかし、アプリケーションが複雑化するにつれて、魔法のような言葉遣いよりも、完全で構造化された「コンテキスト」を提供することの方がはるかに重要だと明らかになってきました。そのため「コンテキストエンジニアリング」は、「プロンプトエンジニアリング」を包含する、より広範な概念と位置付けられています。
3. コンテキストウィンドウとは
コンテキストエンジニアリングを理解する上で欠かせないのが「コンテキストウィンドウ」という概念です。
コンテキストウィンドウとは、AIモデルが一度に処理できる範囲、つまり「AIの短期記憶容量」のようなものです。これは「トークン」という単位で測定されます。トークンとは、AIが言語を処理する際の最小単位で、単語の一部、単語全体、または短い複数単語のフレーズを表すことができます。
例えば、Claude 4 Sonnetは約200,000トークンのコンテキストウィンドウを持っています。これは、約15万語程度の英文に相当する膨大な情報量です。しかし、コンテキストウィンドウには入力トークン、出力トークン、制御(システム)トークンすべてが含まれるため、実質的に利用可能な情報量は想定より少なくなります。
【画像作成使用ソフト:draw.io Licence:Apache License 2.0】
コンテキストウィンドウが長いほど、AIはより多くの情報を考慮に入れて応答を生成できるため、より一貫性のある、文脈に沿った対話が可能になります。また、長い文書の要約、複雑な指示の理解、長時間の会話の継続など、より高度なタスクを実行する能力も向上します。
【参考文献】
Context Engineering for Agents. (2025). LangChain Blog.
4. コンテキストエンジニアリング:3つの原則
効果的なコンテキストエンジニアリングを実践するには、以下の3つの原則が重要です。
1. 構造化されたコンテキストの提供
プロジェクトの背景、技術スタック、制約条件を明確に伝達することが重要です。曖昧な指示ではなく、具体的な期待値を設定し、求める出力の形式、品質基準、制約を明示することで、AIの生成精度が大幅に向上します。
2. 段階的な情報提供
複雑な要件を一度に伝えるのではなく、小さな単位に分割して順次説明することで、AIの理解度が向上します。シンプルな実装から開始し、徐々に機能を拡張していくアプローチが効果的です。
3. プロジェクト設定の文書化
開発ガイドライン、アーキテクチャ原則、コーディング規約、セキュリティ要件などをドキュメントとして整備し、AIに参照させることで、一貫性のあるコード生成が可能になります。
例えば、「Reactでコンポーネントを作成して」という指示だけでは、クラスコンポーネントなのか関数コンポーネントなのか、状態管理はどうするのかなど、詳細が不明瞭です。
しかし、プロジェクトのアーキテクチャドキュメントに「関数コンポーネントを使用し、状態管理はReact Hooksで行う」といった原則が記載されていれば、AIは一貫性のあるコードを生成できます。これにより、コードレビューの工数削減、技術的負債の軽減、保守性の高いコードベースの維持が可能になります。
5. ドキュメント駆動/仕様書駆動開発の実現
コンテキストエンジニアリングは、ドキュメント駆動開発(Documentation-Driven Development)や仕様書駆動開発(Spec-Driven Development)との親和性が非常に高いです。
仕様書駆動開発とは、実装的に詳細な設計書を作成し、その仕様書をベースに開発を進める手法です。AWSのKiroや、GitHubのSpec Kitなど、最近のAI開発ツールはこのアプローチを採用しています。
まず設計文書を作成し、タスクを整理してから実装を始めるという、より実際の開発工程に近いフローでAIに開発させることができます。
Claude Codeでも、専用のワークフロー(onboarding → planning → editing → interactive)を設計することで、Kiro風の仕様書駆動開発を実現できます。これにより、以下のメリットが得られます。
- 要件の明確化と認識齟齬の防止
- 実装前の設計レビューによる手戻りの削減
- 実装後のドキュメント作成負担の軽減
- チーム内での知識共有の促進
特に、ドキュメント駆動開発の哲学である「ユーザーの視点から見て、機能がドキュメント化されていなければ存在しない」という考え方は、AIとの協働においても重要です。
6. コンテキストの分離(サブエージェント)による効率化
大規模なプロジェクトでは、すべてのコンテキストを一つのセッションにつめこむとコンテキストウィンドウがすぐに上限に達してしまいます。この問題を解決するのがコンテキストの分離、つまりサブエージェントの活用です。
サブエージェントとは、以下のような特定のタスクや責務に特化したAIエージェントのことです。
- フロントエンド開発専用エージェント
- バックエンドAPI開発専用エージェント
- テストコード作成専用エージェント
- ドキュメント作成専用エージェント
各エージェントには、そのドメインに関連するコンテキストのみを提供することで、コンテキストウィンドウを効率的に活用できます。

Claude CodeではMCP(Model Context Protocol)を活用して、セッションごとに異なるコンテキストを動的に切り替えることが可能です。
カスタムコンテキストを作成し、switch_modesツールを有効化することで、「分析→仕様書作成→実装→デバッグ」というワークフローを一つのセッション内で実現できます。
これにより、コンテキストウィンドウオーバーフロー(コンテキストが上限を超える問題)を防ぎつつ、各フェーズで必要な情報に集中できるため、開発効率が大幅に向上します。
7. コンテキストエンジニアリングのデメリット
1. 初期設定とドキュメント作成の工数
コンテキストエンジニアリングを導入するには、プロジェクトの初期段階でドキュメント作成に相当な時間を投資する必要があります。開発ガイドライン、アーキテクチャドキュメント、コーディング規約、セキュリティ要件など、体系的にまとめる作業は決して軽くはありません。
特に既存プロジェクトに後から導入しようとする場合、現在の実装状況を棚卸しし、暗黙知として共有されていたルールを明文化する作業が必要になります。小規模なプロジェクトや短期間の開発では、この初期投資が見合わない可能性があります。
また、ドキュメントは一度作成して終わりではなく、プロジェクトの進化に合わせて継続的に更新していく必要があります。
この保守コストも考慮しなければなりません。
2. コンテキスト管理の複雑さ
サブエージェントやMCPを活用した高度なコンテキスト管理は、それ自体が新たな複雑性を生み出します。どのコンテキストをどのタイミングで有効化するか、複数のエージェント間でどのように情報を共有するかなど、設計と運用に高度な知識が必要です。
特に、コンテキストの分離を過度に進めると、エージェントの連携が難しくなり、かえって開発効率が低下する可能性があります。適切な粒度でコンテキストを分割し、必要な情報共有の仕組みを設計することが重要ですが、これは経験とノウハウの蓄積が必要です。
また、コンテキストウィンドウの制限を常に意識しながら開発を進める必要があり、トークン数の管理が新たな認知負荷となる場合があります。
8. まとめ
このようなメリット、デメリットが存在する中で活用していくかは個人やチームの判断になるので、しっかり技術の取捨選択をしていくことが大切だと思います。
コンテキストエンジニアリングは、特に以下のようなケースでは、AIコーディングツールの精度を劇的に向上させる可能性を秘めています。
- 中~大規模なプロジェクトで長期的な開発が予定されている
- チーム開発でコードの一貫性を保ちたい
- ドキュメント駆動開発や仕様書駆動開発を実践したい
- 複雑なドメイン知識を扱うプロジェクト
一方、小規模なプロトタイプ開発や個人の趣味プロジェクトなど、初期投資を抑えたい場合は、段階的に導入していくアプローチも有効です。
まずは簡単なREADMEファイルを作成することから始め、プロジェクトの成長に合わせてドキュメントを充実させていくことをお勧めします。
AIとの協働が当たり前になる時代において、コンテキストエンジニアリングは開発者にとって必須のスキルになっていくと思われます。
このような新しい開発手法を学んでいくことで、より効率的で質の高いソフトウェア開発が実現できるのではないでしょうか。

