コンテキストエンジニアリングとは
以前はAIにどのようなプロンプト(指示)を与えるかという「プロンプトエンジニアリング」が重要視されていました。しかし、AIコーディングエージェントの登場により、現在では「コンテキストエンジニアリング」が重要になってきています。
さらに最近では「ハーネスエンジニアリング(ハーネス設計)」も注目されていますが、今回はその基礎となるコンテキストエンジニアリングについて解説します。
コンテキストとは何か
コンテキストとは、Claude Codeの「記憶容量」のことです。人間もその場で覚えられる記憶の総量には限りがあるように、Claude Codeにも覚えられる記憶容量には限界があります。
例えば、「今から10個覚えて」と言われれば覚えられるかもしれませんが、15個、20個、30個と増えてくるとキャパオーバーになります。Claude Codeも同様で、この記憶容量のことを「コンテキストウィンドウ」と呼びます。
コンテキストウィンドウの大きさ
Opus 4.6モデルを指定すると、100万トークンの記憶容量を持つことができます。以前は20万トークンまでだったのが、Claude Codeの進化によって100万トークンまで拡張されました。
非常に大きな記憶容量になったため、以前ほどコンテキスト管理がシビアではなくなりましたが、それでも重要な概念です。メインのコンテキストウィンドウだけでなく、サブエージェントにもそれぞれ専用のコンテキストウィンドウがあります。
コンテキストウィンドウに含まれるもの
コンテキストウィンドウの中身は、Claude Codeの /context コマンドで確認できます。具体的には以下のものが含まれます。
1. システムプロンプト+ツールズ
Claude Codeが事前に用意しているシステムプロンプトと内部ツールです。ツールとは、ファイルの編集・作成・探索などの際に呼び出される関数のようなもので、Claude Code側であらかじめ用意されています。私たちがこれを変更することは基本的にありません。
2. カスタムエージェント・スキルズ
サブエージェントやClaude Codeスキルズを使うと、それもコンテキストウィンドウに含まれます。スキルズやサブエージェントを作れば作るほど良いと思われがちですが、コンテキストウィンドウの圧迫につながるため、作りすぎは良くありません。
3. MCPサーバー
MCPサーバーも同様です。使わないものもすべて入れてしまうと、すぐにコンテキストが圧迫され、Claude Codeが自動でコンパクト(圧縮)を行います。コンパクトが頻繁に走ると開発が思うように進まなくなるため、必要なものだけをコンテキストに入れるようにしましょう。
4. メッセージ(会話履歴)
普段Claude Codeに壁打ちや指示出しをするときのメッセージです。基本的にはこれが一番大きくなります。なお、メモリファイルもコンテキストに含まれますが、そこまで圧迫しないため割愛します。
5. リザーブドバッファ
バッファを設けるための予約領域です。このバッファがあることで、余裕を持ってコンパクト(圧縮)が行われます。バッファがないと、区切りの悪いところで圧縮が起きたり、容量がギリギリになるとClaude Codeが実装を早く終わらせようとする「コンテキスト不安(Context Anxiety)」が発動してしまいます。
コンパクトとクリアの仕組み
メッセージがどんどん膨れ上がり、リザーブドバッファに到達した時に、/compact コマンドが自動で実行されます。これによりメッセージが要約・圧縮され、空きが生まれて再び会話を続けられるようになります。
/clear コマンドはメッセージをすべて消去してリセットするコマンドです。綺麗な状態でClaude Codeにコーディングさせることができます。
コンテキストを綺麗に保つ重要性
Claude Codeはコンテキストが綺麗な状態の時にコードの品質が上がります。コンテキスト不安がなく、汚染もされていない状態が理想です。
例えば、重要なメッセージのやり取りを続けている途中に、別の話題(「今日の晩御飯は何ですか」など)を差し込んでしまうと、前の会話が汚染されてしまいます。メインの会話の続きをしようとしても、余計な会話が邪魔をしてしまうのです。
Claude Codeの初級者から中級者、さらに上級者へレベルアップするには、このコンテキストウィンドウをしっかりと理解し、サブエージェントやハーネス設計をうまく使いこなすことが大切です。