Claude Codeのコンテキスト節約術|/compactと上手な使い方
Claude Codeでセッションを長く続けていると、応答が遅くなったり、途中で会話が要約されたり、コンテキストの上限に関する警告が出たりすることがあります。これはコンテキストウィンドウ(Claudeが一度に読める情報量)の上限に近づいているサインです。この記事では /context で現状を把握したうえで、/clear と /compact を軸にコンテキストを節約し、長時間の作業でも品質を落とさずに進めるための実践的なテクニックを紹介します。基本操作から体系的に押さえたい方は「Claude Codeの使い方完全ガイド」もあわせてご覧ください。
前提・動作環境
この記事はターミナル版Claude Codeの利用を前提としています。挙動やコマンドの詳細はバージョンによって変わることがあるため、最新の正確な仕様は公式ドキュメント(code.claude.com/docs)で確認してください。バージョンは以下のコマンドで確認できます。
claude --version
2.1.211 (Claude Code)
コンテキストウィンドウとは何か
コンテキストウィンドウとは、Claudeが一度のやり取りで参照できる情報の上限のことです。Claude Codeでは、システムプロンプト、CLAUDE.md、自動メモリ、MCPツールの一覧、これまでの会話やファイルの読み込み結果などがすべてこのウィンドウに積み上がります。モデルによって上限は異なり、標準では20万トークン、Sonnet 5など一部のモデルでは100万トークンまで拡張されています。
長いセッションほど、Claude Codeは毎回のリクエストでそれまでの会話をまるごと送信します。古いツール出力や関係の薄いやり取りが増えると必要な情報が埋もれてしまい、応答の精度が下がりやすくなります。さらにキャッシュの有効期限(サブスクリプションで1時間、APIキーなどでは通常5分)を過ぎてから再開すると会話全体を読み直すことになり、時間もコストも増えます。上限に近づくと自動でコンパクトが走りますが、放置するより日頃から節約を意識しておく方が快適です。
/context で現状を確認する
節約の第一歩は、いま何がコンテキストを占めているかを把握することです。セッション内で次のコマンドを実行します。
/context
/context を実行すると、システムプロンプト・システムツール・MCPツール・カスタムサブエージェント・メモリファイル(CLAUDE.mdなど)・スキル・会話メッセージといったカテゴリ別の内訳と、使用量を色分けしたグリッド表示が確認できます。どのCLAUDE.mdや自動メモリファイルが読み込まれているかもここで確認できるため、「思ったより重い」原因を探るときに便利です。あわせて /usage を実行すると、セッションの消費トークン数や、長いコンテキストやキャッシュミスが直近使用量の10%以上を占めていないかといった警告も確認できます。
今日から使える節約テクニック
現状を把握したら、以下のテクニックを組み合わせてコンテキストを節約します。
- ①話題が変わったら
/clearでリセットする: 関係のないタスクに移るときは/clear(別名/reset)で会話をまっさらにします。古い会話を引きずったまま次のメッセージを送ると無関係な文脈にトークンを使い続けるため、早めに切り替えるのがコツです。あとで戻りたい場合は/renameで名前を付けてから/clearし、/resumeで呼び出します。/clearと/compactの使い分けは「スラッシュコマンド一覧」でも整理しています。 - ②
/compactで要約圧縮する:/compactはこれまでの会話を構造化された要約に置き換え、コンテキストを解放します。/compact 認証まわりの実装方針だけ残してのように焦点を指定すると的確な要約になります。会話が短いと「Not enough messages to compact.」と表示されるだけです。/compact自体も会話全体を読み込んで要約するため、限界まで貯め込むと処理自体が重くなります。長い新しいタスクに入る前など早めのタイミングで使い、CLAUDE.mdに要約時の注意点を書いておくと方針を毎回指定せずに済みます。 - ③1タスク1セッションで運用する: タスクが変わるたびにセッションを分ける運用にすると、無関係な文脈が積み上がりません。並行作業をしたい場合は、タスクごとに
/clearするか別ウィンドウでセッションを分けましょう。 - ④CLAUDE.mdを簡潔に保つ: CLAUDE.mdはセッション開始時に必ず読み込まれ、
/compact後もプロジェクトルート直下のものは再読み込みされます。内容が長いほど毎回トークンを消費し続けるため、目安は200行程度に抑え、詳細な手順はスキルに切り出しましょう。書き方の詳細は「CLAUDE.mdの書き方」を参照してください。 - ⑤大きなファイルを丸ごと読ませない依頼をする: 「コードベース全体を改善して」のような曖昧な依頼は広い範囲のファイル探索を招きます。「
auth.tsのログイン関数に入力チェックを追加して」のように対象を具体的に伝えると、読み込むファイルが絞られます。巨大なログ出力などは、エラー行だけを抽出するHookをかませる方法も有効です。 - ⑥サブエージェントに調査を任せる: 大量のログ調査やドキュメント横断のような文脈を消費しやすい作業はサブエージェントに委任すると、詳細な読み込みは独立したコンテキストウィンドウで完結し、メイン会話には要約だけが返ります。
自動コンパクト(auto-compact)の挙動
コンテキストが上限に近づくと、Claude Codeは自動でコンパクトを実行します。まず古いツール出力から解放し、それでも足りなければ会話全体を要約するという順序で進み、仕組みは手動の /compact と同じです。圧縮後に何が残るかはロード方法によって異なり、システムプロンプトはそのまま維持され、プロジェクトルート直下のCLAUDE.mdと自動メモリはディスクから再読み込みされます。一方、パス指定ルール(paths: 指定のルール)やサブディレクトリのCLAUDE.mdは該当ファイルを再度読むまで失われ、呼び出し済みのスキル本文は1スキルあたり5,000トークン・合計25,000トークンを上限に再読み込みされ、超過分は古いものから削られます。
なお、1つのファイルやツール出力が非常に大きく要約してもすぐコンテキストが埋まる場合、無限にコンパクトを繰り返さず数回試行した時点でエラーを表示して停止します。該当の出力を分割するか、サブエージェントに処理を任せましょう。
使用制限(レート制限)との関係
コンテキストや自動コンパクトの警告は、プランの利用上限(セッション制限・週次制限)そのものではありません。ただし、長いセッションほど毎回のリクエストで会話全体を読み直すため、消費トークンが積み上がりやすくなります。結果として、節約せずに使い続けると同じ作業量でも利用上限に早く到達しやすくなります。/usage で長いコンテキストやキャッシュミスの割合を確認できるので、上限が気になる場合はあわせてチェックしましょう。
つまずきポイント/よくあるエラー
/compactを実行しても「Not enough messages to compact.」と表示される: 会話履歴がまだ少ない新しいセッションでは要約する対象がないため、そのまま表示されるだけで異常ではありません。- 巨大なファイルを読ませた直後に圧縮が止まる: 1回の要約では収まりきらないほど大きな出力があると、無限ループを避けるため数回の試行でエラーを表示して停止します。該当ファイルを分割するか、サブエージェントに委任してください。
/clearで作業内容が消えたように感じる:/clearは会話のコンテキストをリセットするだけで、実際に編集済みのファイルやGitの変更は消えません。- CLAUDE.mdを削っても軽くならない: サブディレクトリのCLAUDE.mdやパス指定ルールは対象ファイルを読んだときに読み込まれるため、プロジェクトルート直下だけ見直しても効果が薄いことがあります。
/contextで実際に読み込まれているファイルを確認しましょう。
よくある質問
/context と /usage はどう違いますか?
/context はいま何がコンテキストウィンドウを占めているかをカテゴリ別に可視化するコマンドで、/usage はセッションの消費トークン数やコスト、プラン利用状況を確認するコマンドです。原因を探るなら /context、上限を気にするなら /usage が向いています。
/clear と /compact はどちらを使えばよいですか?
話題が完全に変わるときは /clear で会話をまっさらにし、同じ話題のままコンテキストだけを圧縮したいときは /compact を使うのが基本の使い分けです。判断に迷う場合は「スラッシュコマンド一覧」も参考にしてください。
自動コンパクトに任せておけば節約を意識しなくても大丈夫ですか?
自動コンパクトは上限に達しそうなときの保険的な仕組みで、要約自体がそれまでの会話全体を読み込む重い処理です。任せきりにするより、/clear で早めにリセットしたり /compact に焦点を指定したりする方が、コストを抑えつつ必要な情報を残しやすくなります。
まとめ
Claude Codeのコンテキスト節約は、/context で現状を把握し、話題が変わったら /clear、同じ話題のまま圧縮したいときは /compact を使い分けることが基本です。加えてCLAUDE.mdを簡潔に保つ、大きなファイルを丸ごと読ませない依頼をする、調査はサブエージェントに任せるといった習慣を組み合わせれば、長時間のセッションでも品質を落とさずに作業を続けられます。Claude Code全体の使い方は「Claude Codeの使い方完全ガイド」、コマンドの詳細は「スラッシュコマンド一覧」、CLAUDE.mdの書き方は「CLAUDE.mdの書き方」をあわせてご覧ください。