こんにちは、山上です。

Claude Codeを使っていると、こういう経験はないでしょうか。最初は完璧に指示を守っていたのに、長く作業させているうちに、急に的外れな返事をしたり、さっき決めたルールを無視し始める。

「賢くなくなった」と感じる、あの瞬間です。

原因の多くは、Claudeの性能ではありません。指示書である「CLAUDE.md」が太りすぎていることです。今日はその理由を、Claudeが何をどう見ているかという仕組みから説明します。コードを書かない方にも分かるように図にしました。そのうえで、では指示書をどう絞るのか、という具体策まで降ります。

まず、Claudeが「何を見て」動いているのか

Claudeに何かを頼むとき、Claudeは1枚の机の上で考えています。この机を「コンテキストウィンドウ」と呼びます。広さは決まっています。無限ではありません。

そして大事なのは、この机の上に「全部」が同時に乗っているということです。あなたの指示も、過去のやり取りも、読み込んだファイルも、指示書も、ぜんぶ同じ1枚の机を奪い合っています。

机に積まれる順番を図にすると、こうなります。

Claudeのコンテキストウィンドウに、システムプロンプト・ツール定義・CLAUDE.md・会話履歴・読んだファイル・いまの指示が上から順に積まれ、机が埋まると古い中身を要約して捨てる流れを示した図

ここで見てほしいのは、3番のCLAUDE.mdです。これは会話のたびに、毎回読み込まれます。1回だけ読んで覚えてくれるのではなく、あなたが何か頼むたびに、机の上で場所を取り続けます。

全部が「1枚の机」を奪い合っている

机の広さが決まっている、というのが効いてきます。

作業が進むと、読み込んだファイルや実行結果が4番5番にどんどん積み上がります。これは仕事をしている証拠なので、増えるのは当たり前です。

問題は、CLAUDE.mdが太っていると、その分だけ仕事に使える場所が最初から削られていることです。指示書に500行の散文が書いてあれば、その500行はずっと机の上に居座ります。会話を1往復もしないうちから、机はもう狭い。

CLAUDE.mdは、毎ターン払う「場所代」だと考えてください。書けば書くほど、固定費が上がる。そして固定費が上がった分、変動する作業領域が早く満杯になります。

机が埋まると、Claudeは「要約して捨てる」

満杯になったとき、何が起きるか。ここが「急に忘れる」の正体です。

机が埋まりきると、Claude Codeは古い会話を自動で要約して、場所を空けます。これがコンテキスト圧縮です。要約なので、当然こぼれます。さっき決めた細かいルール、読み込んだファイルの中身、途中の判断の経緯。こうした「効いていた文脈」が、ざっくりした要約に置き換わる。

ここで残酷なのは、何が生き残るかです。圧縮で削られるのは、主に4番5番の会話と作業の履歴です。一方でCLAUDE.mdは指示書として再び読み込まれ、机に残り続けます。

つまり、太ったCLAUDE.mdは満額の場所代を払い切り、あなたの実際の作業のほうが先に捨てられる。順番が、逆になっている。指示書を盛るほど、肝心の仕事の記憶が早く消える。

絵にすると、こういう差になります。

  太ったCLAUDE.md   ████████████░░░░   作業に残る場所はわずか
  絞ったCLAUDE.md   ███░░░░░░░░░░░░░   作業に残る場所はたっぷり

   █ = CLAUDE.mdが占める固定費
   ░ = 会話と作業に使える余白

左は早く満杯になり、早く圧縮が起きて、早く忘れる。右は長く粘れて、圧縮が遅れ、文脈が保たれる。同じClaude、同じ机なのに、指示書の重さだけでここまで変わります。

だから、CLAUDE.mdは「常に机に置く最小限」に絞る

仕組みが分かると、書き方の方針は一つに決まります。CLAUDE.mdには、常に、すべての作業で効いてほしい普遍的なルールだけを置く。それ以外は外に出す。

判断の軸はシンプルです。その行は「毎回」要るのか、「ときどき」要るのか。

毎回要るもの。たとえば言語やフレームワークの縛り、絶対に破ってほしくない禁止事項、コミットの作法。これは机に置きっぱなしでいい。

ときどき要るもの。特定の機能を触るときだけの手順、滅多に走らせないスクリプトの使い方、過去の経緯の長い説明。これは別のファイルに逃がして、CLAUDE.mdからは1行のリンクで指し示す。Claudeはそのリンクを、必要になったときだけ読みに行きます。普段は机に乗りません。

これが圧縮の本質です。全部を抱え込むのをやめて、必要なときに必要なものだけ取りに行かせる。

具体的に、どう絞るか

明日からできる手順に落とします。

ひとつ、仕分ける。いまのCLAUDE.mdを上から読み、各ブロックに「毎回」か「ときどき」の札を貼る。「ときどき」が思ったより多いはずです。

ふたつ、外に出す。「ときどき」のものは、docsフォルダなどに切り出す。CLAUDE.mdに残すのは、見出しと「詳しくはこのファイル」の1行だけ。

みっつ、重複を消す。同じ趣旨の注意が、言い回しを変えて3回出てくる。よくあります。1回に統合する。

よっつ、例を削る。良い例と悪い例を5個ずつ並べたくなりますが、机の上では重い。本当に誤解されやすい1個だけ残す。

いつつ、散文をやめる。「〜することが望ましいと考えられます」のような長い文は、命令形の箇条書きに変える。短いほど、薄まらず効きます。

長さの目安は、正確なトークン数を測るより「日本語で1文字がだいたい1個分の重さ」くらいの感覚で十分です。細かい数字より、長いものは重い、という原則だけ握っておけばいい。

道具の癖を知っている人が、道具を使いこなす

私たちが普段から意識しているのは、ここです。AIに丸投げして「賢いんだから察してよ」と願うのではなく、AIが内側で何を見て、どこで詰まるのかを知ったうえで、環境のほうを整えてやる。

CLAUDE.mdの圧縮は、その一番分かりやすい例です。Claudeの性能を引き上げる魔法ではありません。Claudeが使える机を広げてやる、それだけのことです。でも、この「それだけ」を知っているかどうかで、同じAIから引き出せる仕事の質はまるで変わります。

道具は、癖を知った人の手で本領を出す。AIも同じです。