Context Window(コンテキストウィンドウ)

仕組み・概念
Context Window
コンテキストウィンドウ
Claudeが一度に頭に入れておける情報の総量。会話の履歴・読んだファイル・コマンドの出力・CLAUDE.md・覚え書き・読み込んだスキル・内部の指示が、この中に積み上がっていく。作業机の広さのようなもので、進めるほど埋まっていく

Claude Codeで長時間作業して会話が長くなり、動作が重くなってきた人向け

Claude Codeで長く作業して反応が重くなったり、最初に出した指示が忘れられ始めたら、まず /context を叩いて何が机を占領しているか確認し、埋まっていれば /compact で会話を要約して空ける。別のテーマに丸ごと移るなら /clear で新しい会話を始める

料理ブログをClaude Codeで何時間も作っていると、だんだん返事が遅くなったり、最初に出したはずの指示を忘れたりします。これはClaude Codeの「作業机の広さ」が決まっていて、会話が進むほど机の上が紙で埋まっていくからです。コンテキストウィンドウは、その机の広さ、つまりClaudeが一度に頭に入れておける情報の総量を指します。

会話の履歴、Claudeが読んだファイルの中身、コマンドの出力、CLAUDE.md、覚え書き、読み込んだスキル、それから私たちには見えない内部の指示まで、全部この机の上に積み上がっていきます。

噛み砕くと

新しい職場に出社した初日のホワイトボードを想像してみてください。最初はまっさらで、いくらでも書き込めます。打ち合わせが進むにつれて、決定事項やメモがどんどん書き足されていく。やがてボードは文字で埋まり、新しいことを書くスペースがなくなります。

そうなったら、人間なら古い走り書きを消すか、要点だけ別の紙にまとめ直して、ボードを空けますよね。Claude Codeも同じことをします。机が埋まりかけると、まず古い作業ログを消し、それでも足りなければ会話そのものを要約して圧縮する。ここが大事です。

要約されると、細かい話は消えます。だから「ずっと覚えていてほしいルール」を会話の中で言い続けるのは、消えやすいボードの隅に書くようなもの。後で説明しますが、それはCLAUDE.mdという別の場所に書いておくのが正解です。

大事な前提:トークン数は「だいたい」で、固定ではない

公式のシミュレーションでは机の広さを20万トークンとして表示しています。ただ、ページには「数字はあくまで目安。実際の値はCLAUDE.mdの長さやつないでいるサーバー、読んだファイルの長さで変わる」と注記があります。

つまり「ちょうど20万トークンで固定」ではありません。モデルや設定によって、もっと広い場合もあります。なので私は数字を1の位まで気にするより、「全体の何割が埋まったか」をざっくり見る方が実用的だと思っています。

「料理ブログ作り」を例に、実際の中身を見る

では、私がClaude Codeで料理ブログを作っている最中のセッションを例に、机の上がどう埋まっていくかを順に追います。

ステップ1: 起動した瞬間、机にはもう何枚か紙が乗っている

まだ何も頼んでいないのに、起動した時点でいくつかの情報が自動で積まれます。公式の内訳(数字は目安)はこうです。

システムの内部指示      約4,200トークン(私たちには見えない)
覚え書き(MEMORY.md)     約680トークン(先頭200行か25KBまで)
作業環境の情報          約280トークン(作業中のフォルダ・OSなど)
MCPツールの名前だけ     約120トークン(中身は使うまで読まない)
スキルの説明一覧        約450トークン(中身は使った時だけ読む)
全プロジェクト共通の設定 約320トークン
このプロジェクトのCLAUDE.md 約1,800トークン

ここで初心者がやりがちな勘違いがひとつ。「MCPツールやスキルをたくさん入れると机がすぐ埋まる」と思いがちですが、そうではありません。名前の一覧が載るだけで、中身は実際に使うまで読み込まれない仕組みになっています(公式で deferred)。名前だけなら100〜450トークン程度で、ほぼ無視できる軽さです。

ステップ2: 「世界の料理を紹介する記事のひな形を作って」と頼む

私のお願いの文そのものは、これだけだと約45トークン。びっくりするほど軽いです。机の広さからすれば誤差みたいなものですね。

ところが、ここから一気に重くなります。

ステップ3: Claudeがファイルを読み始めると、ここで一気に埋まる

記事のひな形を作るために、Claudeは既存のテンプレートや過去記事のHTMLを次々に読みます。公式ドキュメントが明言しているとおり、机を最も食うのはこのファイル読み込みです。

例えば既存の記事HTMLが1本2,000トークン分あったとして、5本も読めばそれだけで1万トークン。さっきの私のお願い45トークンとは桁が違います。会話を長く続けて重くなる原因は、たいてい「読んだファイルの蓄積」だと思っておくといいです。

ステップ4: 埋まり具合を /context で覗く

今どれくらい埋まっているかは、会話の途中で /context と打てば見られます。色分けされた格子状の図で、何が机を占領しているかが一目で分かります。重いツールや膨らんだ覚え書きについて、減らし方の提案も出ます。

/context

/context のうしろに all と書き足すと、もっと細かい内訳まで広げて見られます。私は「なんか重いな」と感じたら、まずこれを叩いて原因を確認します。

ステップ5: 限界に近づくと、Claudeが勝手に片付けを始める

料理ブログの記事を10本20本と作り続けて机が限界に近づくと、Claude Codeは自動で片付けに入ります。順番が決まっていて、まず古い作業ログ(過去のコマンド出力)から消します。それでも足りなければ、会話そのものを要約して圧縮します。

このとき残るのは「私の要求と意図」「重要なコードのかけら」。逆に消えやすいのが「会話の早い段階で出した細かい指示」です。例えば最初に「見出しは必ず疑問形で」と口頭で言っただけだと、要約後にスッと抜け落ちることがあります。

ステップ6: 自分のタイミングで空けたいときは /compact

自動を待たず、区切りのいいところで自分から空けることもできます。/compact と打つと、それまでの会話を要約して机のスペースを空けつつ、同じ会話を続けられます。

/compact

しかも /compact のうしろに「料理カテゴリーの分類ルールに集中して要約して」のような指示を書き足せます。残してほしい論点を指定できるわけです。これは地味に便利で、私は長丁場のセッションでは意識的に使っています。

つまり Context Window は何をしてくれるのか

  • やってくれる: 会話・ファイル・設定をまとめて頭に入れて作業を進める。限界が近づけば古いログ削除→要約の順で自動的に空きを作る
  • やってくれない: 会話の細かい指示を永久に覚えること。要約で早い段階の指示は消えやすい。永続させたいルールはCLAUDE.mdに書く必要がある
  • 意味が薄い場面: ごく短いやり取りで終わる作業。机が埋まる前に終わるなら、埋まり具合を気にする必要はほぼない

使いどころ3シナリオ(料理ブログ作りで再現)

シナリオ1: 記事を量産していて返事が遅くなってきたとき

世界の魚料理シリーズを10本書いたあたりで、Claudeの反応がもったりしてきた。こういうときは /context で何が重いかを見て、原因が「読んだ記事HTMLの蓄積」なら /compact で要約して空けます。区切りのいい1本を書き終えた直後にやると、進行中の話を失わずに済みます。

シナリオ2: まったく別のテーマに切り替えるとき

魚料理シリーズが完成して、次は「世界のスープ」シリーズを新しく始める。前のシリーズの会話はもう要らない。こういう「別の話に丸ごと移る」ときは /compact ではなく /clear です。会話を空っぽにして新しいスタートを切れます。前の魚料理の会話が消滅するわけではなく、/resume からいつでも戻れます。ここを取り違える人が本当に多いので後でもう一度書きます。

シナリオ3: 重い下調べをしたいとき

「世界各国の代表的な調味料を50種類リストアップして」みたいな、大量のファイルを読む下調べ。これをメインの会話でやると、読んだ内容で机が一気に埋まります。そこでサブエージェントに投げる。公式の例では、サブエージェントが6,100トークン分のファイルを読んでも、メインに返ってきたのは420トークンの結果だけでした。下調べの汚れがメインの机に乗らないわけです。

初心者が踏みやすい落とし穴

  • 「コンテキストウィンドウ=Claudeの完璧な記憶」だと思い込む。会話が埋まると早い段階の細かい指示は要約で消えやすい。ずっと守ってほしいルールは会話で言い続けるのではなく、CLAUDE.mdに書く。公式が何度も強調している一番大事なポイントです
  • トークン数を絶対値だと信じる。表示される数字は目安で、実際はCLAUDE.mdの長さ・つないでいるサーバー・読んだファイルの長さで変わる。割合でざっくり見るのが安全です
  • /compact と /clear を取り違える/compact は要約して机を空けつつ同じ会話を続ける。/clear は会話を空にして新しく始め、前の会話は /resume に残ります。話の続きをしたいのに /clear を叩いて流れを失う事故が多いです
  • 要約後に効かなくなるルールがある。対象ファイルを指定したルール、いわゆる path-scoped rules や、サブフォルダに置いたCLAUDE.mdは、要約後はそのファイルをもう一度読むまで効かなくなる。逆に、プロジェクト直下のCLAUDE.mdや覚え書きは要約後もディスクから読み直されます
  • ファイルを読ませすぎる。机を最も食うのはファイル読み込み。お願いを具体的にして読ませる範囲を絞る、重い下調べはサブエージェントに投げる、で大きく節約できます
  • 巨大すぎるファイルを1本投げる。1つのファイルや出力があまりに大きいと、要約してもすぐ満杯に戻ってしまう。Claude Codeは数回試して諦め、無限に繰り返さずエラーを出します(公式の thrashing)。重いものは分割して渡すのが安全です
  • スキル一覧が要約後も残ると思い込む。起動時のスキル説明の一覧は、/compact の後は再注入されません。実際に使ったスキルの中身だけが残ります。上限は1つ5,000トークン・合計25,000トークンです。要約後に「あのスキルどこ行った」となりがちです

書き方

/context        ← 今の埋まり具合を色分けの図で見る
/context all    ← もっと細かい内訳まで広げて見る
/compact        ← 会話を要約して机を空ける(同じ会話は続く)

やってみるとこうなる

入力

/context

出力例

起動直後で約7,800トークンほどが自動で埋まり(システムの内部指示・覚え書き・CLAUDE.mdなど)、作業を進めて読んだファイルが積み上がると、色分けの格子図でどの項目が机を占領しているかが表示される。重い項目には減らし方の提案も出る(数字はすべて目安で、設定やファイルの長さで変わる)

このページに出てきた言葉

トークン
文章を細かく区切ったかけらの単位。Claudeは文字数ではなくトークン数で「どれだけ机を使ったか」を数える
CLAUDE.md
プロジェクトごとに置く覚え書きファイル。会話が要約されても消えてほしくないルールを書いておく場所。公式は200行以内を推奨
要約(compaction)
机が埋まると会話を圧縮する処理。要求・重要なコードのかけらは残り、早い段階の細かい指示は消えやすい
deferred
MCPツールやスキルの中身を、名前だけ載せて実際に使うまで読み込まない仕組み。だから入れてあるだけなら机をほぼ食わない
サブエージェント
メインの会話とは別の机を持った下請けのClaude。下調べを任せると要約だけ返すので、メインの机が汚れない
thrashing
巨大なファイルのせいで要約してもすぐ机が満杯に戻る状態。Claude Codeは数回で諦めてエラーを出す(無限ループはしない)

関連項目

公式ドキュメント

https://code.claude.com/docs/en/context-window

-

← 戻る