Claude Codeのコンテキスト管理について(2026年4月)
今回は、Claude Codeを使う中で個人的に整理した情報の渡し方などのコンテキスト管理についての備忘録です。
Claudeに限らずAIモデルを使っていて、 同じ指示でも返答の質にばらつきがあると感じたことはないでしょうか。多くの場合、情報の渡し方に原因があります。Claude Codeはコードベースを事前に読んでおくわけではなく、必要に応じてファイルを探索しながら動きます。渡し方を少し工夫するだけで、返答の質はかなり変わります。
あくまで筆者の環境での運用に基づく内容のため、お使いの環境やバージョンによって異なる場合があります。また、2026年4月時点の情報である点にご留意ください。
この記事のターゲット
Claude Codeの会話が長くなったときの対処法を知りたい方
@ファイル参照の使い方を整理したい方
Figma MCPをClaude Codeに接続したい方
会話のコンテキストは最も重要なリソース
Claude Codeの会話には、やり取りのメッセージだけでなく、読んだファイルの中身、コマンドの出力、設定ファイルの内容なども全部入っています。会話が長くなるほど返答の精度が落ちます。
使用量に応じた目安はこちらです。
0~50%: そのまま作業を続ける
50~70%: /compact で圧縮を検討
70~85%: /compact を実行する
85~95%: エラーが増えてくる。95%で自動圧縮が走る
/context で今どのくらい使っているか確認できます。/clear は会話をまっさらにリセットするコマンドで、別の作業に移るときやコミット後に使います。/compact は長い会話を要約してサイズを縮小します。/compact 認証モジュールと現在のテスト失敗に集中 のように、残してほしい情報を指定するとより効果的です。
@でファイルを直接渡す
@ の後にファイルパスを入力すると、そのファイルの中身が会話に読み込まれます。Tabキーで補完できます。@file.ts#5-10 のように行番号を指定することもできます。Shiftを押しながらドラッグ&ドロップでも追加できます。
@参照したファイルのフォルダや親フォルダにCLAUDE.mdがあれば、Claudeはそれも自動で読み込みます。サブフォルダにCLAUDE.mdを置いておくと、関連ファイルを参照するだけでそのフォルダのルールが適用されます。
「Claudeに自分でファイルを探させる」よりも「直接渡す」ほうが効率的です。Claudeが自力で探す場合は、ファイルパターン検索・テキスト検索・ファイル読み込みの3段階の探索が走り、その過程も会話の容量を使います。どのファイルか分かっているなら直接渡すほうが速く、容量も節約できます。
Claudeのファイル探索の仕組み
Claude Codeはコードベースを事前には読み込みません。ファイルパターン検索(Glob)、テキスト検索(Grep)、ファイル読み込み(Read)の3つを使って、人間がコードを探すのと同じようにその都度探索します。
この仕組みを知っておくと、プロジェクト側でできる工夫がいくつかあります。説明的なファイル名をつけること、フォルダ構成をわかりやすく保つこと、READMEやCLAUDE.mdで全体の構成を説明しておくこと。Claudeはファイル名やフォルダ名を手がかりに探します。人間が読みやすい構成はClaudeにとっても探しやすいです。
長い作業を会話に収める工夫
会話に収まりきらない大きな作業には、分割の考え方があります。
途中でClaude Codeに進捗を .md ファイルに書かせてから /clear で リセットし、次の会話でそのファイルを @ で読み込んで続ける方法が効果的です。
公式に推奨されている進め方もあります。
Explore: まずファイルを読ませる。「コードは書かなくていい」と伝える
Plan: 実装の計画を立てさせる。プロンプトに「ultrathink」と書くと深く考えてくれます
Code: 計画のうち1〜2項目ずつ実装する
Commit: コミットしてドキュメントを更新し、/clear でリセット
さらに大きな作業では、サブエージェント機能(Taskツール)が使えます。メインの会話とは別の独立した会話を最大10個まで並列で走らせることができます。調査や探索をサブエージェントに任せ、結果だけ受け取ることでメインの会話の容量を節約できます。
目安として、1回の作業は会話の容量の50%以内で終わるサイズに分割すると良いです。
見せたくないファイルを除外する
2026年3月時点で、.claudeignore は公式にサポートされていません。Claude Codeはデフォルトで .gitignore を参照するため、たいていはこれで十分です。
特定のファイルへのアクセスを確実に遮断したい場合は、settings.jsonに設定します。
{ "permissions": { "deny": ["Read: .env", "Read: .env.*", "Read: secrets/**"] } }
ここに書いた禁止設定は、他の設定で許可しても上書きできません。以下の記事で説明しているsettings.jsonの仕組みと同じです。




