STERFIELD
ビジネス2026.09.18

使い込むほど増えるClaudeの「固定費」の削り方

Claudeの利用量には、2種類の上限があります。ひとつは5時間ごとの枠で、使い切っても時間が経てば戻ります。もうひとつが週単位の上限です。こちらに引っかかると、週の枠がリセットされるまで待つしかありません。作業の途中でも止まります。

使った量はトークンという単位で数えます。日本語の文章なら、おおよそ1文字が1トークン弱です。

私は毎週のようにこの上限に当たっていました。特別に長い質問をしているつもりはありません。使い方が荒いのだろう、と考えていました。

測ってみると、原因は違いました。会話を開いた時点で、まだ一文字も入力していないのに約24,000トークンが消費されています。質問の中身とは関係なく、会話を開くたびに毎回です。

しかもこの固定費は、使い込むほど増えます。自分の仕事に合わせて指示を書き足し、覚えておいてほしいことをメモさせ、便利なツールをつなぐ。その一つひとつが、次からの会話すべてに上乗せされます。AIを自分用に育てる作業は、そのまま固定費を積み上げる作業でもあります。 放っておいて減ることはないので、下げる仕組みは自分で持つしかありません。

内訳を出して削ったところ、52,239バイトが19,550バイトになりました。63%減です。

この記事の主役は、ターミナルを使わない方(Cowork中心)です。エンジニア向けのClaude Code記事はもう十分にあるので、ここではWindowsとMacの両方の手順を書きます。

手順はそのまま再現できるように書いてあります。このページのURLをClaudeに貼れば、あなたの環境に合わせて同じことをやってくれます。読むより先に試したい方は「Claudeに丸投げする」まで飛ばしてください。

1. 結論

  • 消費の主因は、質問の長さではなく**「毎回読まれる固定費」**です
  • 固定費は使い込むほど増えます。自分用に育てる作業が、そのまま固定費を積む作業になっています
  • 固定費の正体は、①指示ファイル ②同じ内容の複製 ③AIに覚えさせたメモ、の3つです
  • 測る → 分ける → 重複を消す。この順でやります。消すのは最後です

2. 会話を開くたびに読まれているもの

会話を開くたびに、指示ファイル・複製・記憶・スキル説明・ツール定義が毎回読み込まれる図

AIとの会話は、毎回まっさらな状態から始まるわけではありません。あなたが話しかける前に、こういうものが読み込まれています。

読まれるもの具体例
指示ファイルCLAUDE.md、プロジェクト指示
記憶・メモ「こう指示された」「これは間違えた」を溜めたファイル
スキルの説明文使わないスキルの分も全部
ツールの定義繋いでいるコネクタ(メール・カレンダー・ドライブ等)の全機能

これが固定費です。一度払えば済むものではありません。会話を開くたびに、同じ額を繰り返し払います。 「今何時?」と聞いただけでもかかります。

増え方には偏りがあります。指示は足されても消されません。メモは溜まる一方です。使わなくなったスキルやコネクタも、外さない限り読まれ続けます。どれも「足す」操作しか用意されていないためで、私の場合は行動ルールのメモが1本で45KBまで育っていました。

この構造はClaudeに限りません。ChatGPTのカスタム指示やメモリ、Geminiの保存情報も、話しかける前に前提として読み込まれます。自分用に育てるほど前提が増える点は同じです。

違うのは確かめ方です。Claude Codeには /context があり、何がどれだけ読まれているかをバイト単位で見られます。ChatGPTは内訳を表示しないので、設定画面でメモリとカスタム指示を眺めて減らすところまでしかできません。またOpenAIは、保存したメモリは全部が毎回入るのではなく、関連するものが選ばれて使われると説明しています(Memory FAQ)。指示ファイルの全文が必ず読まれるClaudeとは、そこが違います。

3. 実測

まず測り方です。Claude Codeなら /context を打つと、何が読み込まれているかの内訳が出ます。Memory files の欄に指示ファイルが並びます。Coworkの場合は、指示ファイルと記憶ファイルのサイズを直接見てください。

セッションのたびに読まれるファイルの合計。52,239バイトが19,550バイトへ、63%減

セッションのたびに読まれるもの
CLAUDE.md(指示ファイル。起動時に自動で読まれる)7,2406,678
行動ルール mistakes.md(スキルの指示で、実質毎回読まれていた)44,99912,872
合計52,239 byte19,550 byte

日本語混じりのMarkdownは、おおむね2〜3バイトで1トークンです。ざっくり24,000トークンが9,000トークンになった計算になります。

スキルは、いつ使うかを書いた説明文と、実際の手順を書いた本文に分かれています。毎回読まれるのは説明文だけで、本文は呼び出したときに読まれます。使わないスキルの説明文も全部読まれます。 私の場合、説明文は18本で8,095バイトありました。本文のほうも整理し、朝の定例処理を回すスキルは 18,484 → 12,156 バイトにしました。

この数字は私の環境の、しかも削減作業を終えた直後の値です。 あなたの固定費が同じとは限りません。まず測ってください。

4. 削った4つ

4-1. 参照は「必要になってから」読ませる

全部入りの指示ファイルと、索引だけ残して参照を別ファイルへ出した場合の比較図

指示ファイルに何でも書くと、その全部が毎回読まれます。全セッションで効くものだけを残し、残りは別ファイルへ出します。

私の場合、CLAUDE.md に入れていた会社概要・案件と担当者・定例ミーティング・メールのラベル体系・プロジェクトキー一覧を外へ出しました。そのうえで、指示ファイルには「どこに何があるか」の表だけを置きました。

1| ファイル | 中身 | 開くとき | 2|---|---|---| 3| reference/profile.md | 会社概要、案件と担当者、定例MTG | 朝の確認、案件の相談 | 4| reference/contacts.md | 取引先の連絡先、メールのラベルID | メール検索、宛先確認 |

AIは必要になったときだけ開きます。外へ出したのは profile.md 3,161バイトと contacts.md 860バイト、あわせて4,021バイト分です。

ただし、指示ファイル自体は 7,240 → 6,678 バイトと、562しか減っていません。 同じ作業で「応答の作法」「読み込みの作法」「Compact instructions」「参照の索引」を新しく足したからです。外へ出した分と、足した分が相殺されています。

この節の効果は「指示ファイルが562バイト減ったこと」ではなく、**「4,021バイト分を、毎回読む対象から外したこと」**にあります。

目安として、指示ファイルは200行以内に収めます。それを超えた分は、たいてい「たまにしか要らないもの」です。

4-2. 同じことを2か所に書かない

CLAUDE.mdとAGENTS.mdが同内容の複製で、AGENTS.md側のパスが壊れていた図

AGENTS.mdCLAUDE.md とほぼ同内容の複製になっていました。しかも複製を作るときの一括置換が効きすぎていて、AGENTS.md の中のパスが全部、存在しない場所を指していました。

ここでひとつ訂正があります。 この記事を書きながら公式ドキュメントを確認したところ、こう書かれていました。

Claude Code reads CLAUDE.md, not AGENTS.md. (Claude Code Docs — Memory

Claude Code は AGENTS.md を読みません。 つまりこの7,224バイトは、トークンとしては払っていませんでした。最初に測ったときは合計に入れてしまっていたので、この記事の数字はそれを除いて計算し直したものです。

では無害だったかというと、そうではありません。害はトークンより先に「どちらが正か分からない」ことにあります。 他のAIツールと共用していれば、そちらは壊れたほうを読みます。人が見ても、どちらを直せばいいのか分かりません。

ポインタ1本に置き換えて 7,224 → 316バイトにしました。公式には、CLAUDE.md の先頭に @AGENTS.md と書いて取り込む方法も案内されています(ただし後述のとおり、取り込んだ分も読み込まれます)。

二重化は気づきにくいものです。ファイル名が違うと、同じ内容だとは思いません。そして**「複製があるから重い」とは限りません。** どのツールが実際に読んでいるのかを確かめてください。

4-3. 記憶は「ルール」と「経緯」に割る

41件の行動ルールを、ルール本体と経緯つき全文の2ファイルに割った図

いちばん効いたのがこれです。

AIに「同じ失敗を繰り返さないように」と記録を取らせていました。形式はこうです。

1YYYY-MM-DD: 何を間違えたか 2NG Action: 実際にやってしまったこと(長い経緯) 3Correct Action: 次回からの正しい対応 4Trigger: このルールが適用される状況

41件たまって45KBになり、毎回これを全部読ませていました。

ところが、AIが行動を変えるために必要なのは Correct ActionTrigger だけです。NG Action は、人間が「なぜこのルールがあるのか」を確かめたいときにしか要りません。

そこで2つのファイルに割りました。

  • mistakes.md — ルールだけ(毎回読む)
  • mistakes-archive.md — 経緯つきの全文(必要になったときだけ)

さらに41件を読み返すと、同じ間違いが何度も書かれていました。保存先のパスを間違えた話が4回、確認せずに報告した話が8回。テーマ別に9つへ統廃合しました。

結果は 44,999 → 12,872バイト何も捨てていません。

ここは誤解されやすいので補足します。統廃合したのはルール側のファイルだけで、アーカイブには元の全文がそのまま入っています。だからアーカイブは46,165バイトと、元の44,999バイトより大きくなります。減らすのが目的のファイルと、残すのが目的のファイルを分けた、というのがこの作業の中身です。

もうひとつ。この12,872バイトは作業直後の値で、いま測ると14,268バイトです。 同じ日に、この作業中にやらかした失敗のルールを1件足したからです。1件で1,396バイト増えました。放っておけば増えるという、この記事の前提がそのまま出ています。減らす作業より、増やさない運用のほうが効きます。

4-4. 大きい出力はスクリプトで畳む

進行表をAIに直接読ませる場合と、スクリプトで1.7KBに畳んでから渡す場合の比較図

これはターミナルを使う方向けです。

毎朝、進行表(スプレッドシート)をAIに読ませていました。1枚45〜100KBあります。AIが読み切れず、「期限切れなし」と誤って報告する事故が起きていました。

AIに直接読ませるのをやめ、必要な行だけを抜くスクリプトを挟みました。 正本シートの判定、中身が別案件になっていないかの照合、7日以内の締切だけの抽出、先方待ちの滞留日数。これを全部スクリプトがやって、1〜2KBのテキストだけを返します。

実測で 14.8KB → 1.7KB。しかも、誤報告が構造的に起きなくなりました。

同じ形のものを繰り返し読ませているなら、それはスクリプトにできます。

5. 環境別の手順

Cowork中心かClaude Code中心か、WindowsかMacかの4分岐マトリクス

4通りあります。 自分に当てはまるものだけ読んでください。

判断に迷ったら、ターミナル(黒い画面)を日常的に使わないなら Cowork 側と考えてください。

5-A. Cowork × Windows

  1. 測ります。 接続フォルダの指示ファイル(CLAUDE.md)と、AIに書かせている記憶ファイルのサイズを確認します。エクスプローラーで右クリック → プロパティで見られます
  2. 指示ファイルを分けます。 「毎回効くもの」だけ残し、参照情報は同じフォルダの reference\ へ移します。指示ファイルには置き場の表だけを書きます
  3. 重複を探します。 AGENTS.md README.md など、同じ内容の別名ファイルがないか確認します。あればポインタ1本にします
  4. 記憶ファイルを割ります。 「ルール」と「経緯」に分け、AIには前者だけを読ませます
  5. スキルとコネクタを絞ります。 使わないスキルは無効化します。メール・カレンダー・ドライブを繋ぎっぱなしにしません

Windows特有の注意

  • 主なパスは %USERPROFILE%\iCloudDrive\... または %USERPROFILE%\OneDrive\... です
  • AIにコマンドを出してもらうときは、PowerShell構文でお願いします。 rm -rf は動きません。Remove-Item -Recurse -Force "C:\..." です。&& も使えないので ;if ($?) に置き換えます

5-B. Cowork × Mac

手順は 5-A と同じです。パスだけが違います。

  • iCloud Drive の実体は ~/Library/Mobile Documents/com~apple~CloudDocs/ です
  • Obsidianをお使いなら ~/Library/Mobile Documents/iCloud~md~obsidian/Documents です
  • ~/Library は Finder で隠れています。 Finderで Command + Shift + G を押し、パスを貼り付けて開いてください

MacとWindowsの両方をお使いなら、指示ファイルと記憶をクラウド同期フォルダに置くと、片方の変更がもう片方にも効きます。ローカル設定(~/.claude/settings.json)は同期されません。

5-C. Claude Code × Windows

5-A に加えて、設定ファイルで効かせられます。

1// .claude/settings.json 2{ 3 "permissions": { 4 "deny": [ 5 "Read(./.env)", 6 "Read(./Artifacts/**)", 7 "Read(**/node_modules/**)" 8 ] 9 }, 10 "env": { "MAX_MCP_OUTPUT_TOKENS": "10000" } 11}

.claudeignore も併用します。

1.env 2Artifacts/ 3node_modules/ 4__pycache__/

# Compact instructions を指示ファイルに書いておくと、会話が圧縮されるときに何を残すかを指定できます。

1# Compact instructions 2圧縮時に残すもの:決定事項、変更したファイルのパス、未完のタスク、エラーの実文言、ユーザーからの訂正。 3捨てるもの:経緯の要約、成功したコマンドの再掲、探索の過程、ツール出力の生データ。

5-D. Claude Code × Mac

5-C と同じです。パスの書き方がUnix形式になるだけです。

注意点があります。settings.jsondeny.claudeignore も、Coworkでは効きません。 Coworkは別の権限モデルで動いているためです。両方をお使いなら、削減は「指示ファイル・スキル・記憶・スクリプト」に寄せてください。 そこだけが両方で効きます。

6. Claudeに丸投げする

ここまでの手順を自分でなぞるかわりに、Claudeにやらせる方法です。以下のブロックをそのままAIに貼ってください。 URLと一緒に貼れば動きます。

1このページの手順で、私の環境のトークン固定費を削ってほしい。 2https://sterfield.co.jp/blog/claude-token-fixed-cost/ 3 4進め方: 51. 私の環境を先に確認する。Cowork中心かClaude Code中心か、WindowsかMacか。 6 分からなければ私に聞く。推測で進めない。 72. 測る。毎セッション読まれるファイル(指示ファイル、その複製、記憶ファイル、 8 スキルの説明文)を列挙し、バイト数の表を出す。削る前の数字を必ず残す。 93. 提案する。何をどこへ移すか、何が重複しているかを一覧で見せる。 10 この時点では1ファイルも動かさない。 114. 私がOKしたものだけ実行する。 12 13厳守: 14- ファイルを消さない。移動と分割だけ。消したいものが出たら、 15 理由を添えて私に聞く。「内容を他へ統合したから元は不要」は消す理由にならない。 16- 移動するときは コピー → 中身の照合(md5など) → 元を削除 の順。 17 総数の一致だけで確認しない。 18- リンクを書き換える。フォルダを動かす前に、そのパスを指している箇所を 19 全部数えて、移動後に書き換える。数と場所を報告する。 20- 削る前と後のバイト数を必ず両方報告する。

この指示文でいちばん大事なのは「消さない」を明記している点です。統合は移動であって、削除ではありません。ここを曖昧にすると、AIは「内容を別ファイルに統合したから元は不要」と判断してしまいます。

7. 採用しなかったもの

私はCowork中心なので見送りましたが、Claude Code中心の方には有効、というものがあります。混ぜると判断を誤るので、3つに分けて書きます。

7-1. Claude Code なら有効(Coworkには無い)

手段何ができるか
.claude/rules/paths: 指定ルールをファイルの種類やディレクトリに紐づけ、Claudeがそのファイルを触ったときだけ読み込ませる。公式が「コンテキストの節約になる」と明記している分割方法
サブエージェントへの委任調査を別のコンテキストで走らせ、結果だけを受け取る
プランモード(Shift+Tab)調べさせるが、変更はさせない
/btw会話履歴に残さずに補足質問する
/compact <観点>観点を指定して部分的に圧縮する
/doctorCLAUDE.md の削れる箇所を提案してくれる
/context何が読み込まれているかの内訳を出す。削る前にまずこれ
settings.jsondeny / .claudeignore読ませないファイルを指定する(5-C参照)

.claude/rules/ はこう書きます。この例なら、ClaudeがTypeScriptファイルを触ったときだけ読み込まれます。

1--- 2paths: 3 - "src/api/**/*.ts" 4--- 5 6# API開発のルール 7- エンドポイントには必ず入力検証を入れる

もうひとつ小技があります。CLAUDE.md の中のHTMLコメント(<!-- 〜 -->)は、Claudeに渡る前に取り除かれます。 人間向けの注記は、トークンを使わずに書き残せます。

7-2. 効くと分かっているが、私の環境では見送ったもの

MCPサーバーをスキルに置き換える

MCP(外部ツール連携)は、繋いでいるだけでツール定義が毎回読み込まれます。さらに、AIとツールの間で何往復もすると、途中の結果が全部コンテキストに溜まります。処理をスキル(コード)側に寄せると往復が1回で済み、中間データは実行環境の中で捨てられます。PDF処理で 約8,500トークン → 約450トークン(95%減) という検証があります(DevelopersIO)。

私が見送ったのは、業務APIをMCPではなく自前のスクリプトで直接叩いていて、置き換える対象が少なかったからです。MCPを何本も繋いでいる方には、この記事のどの手法より効く可能性があります。

MCPサーバーの棚卸し

使っていないサーバーを切るだけでも効きます(Zenn・メドレー)。同じ理由で対象が少なく、見送りました。

Context Mode

大きなツール出力をローカルのSQLiteに逃がし、AIには要約と参照IDだけを返す仕組みです。開発元は、サンドボックスで実行したツール出力が315KB→5.4KB、Playwrightのスナップショットが56KB→299バイトという数字を出しています(mksglu/context-mode)。

見送った理由は2つです。ひとつは、検討した時点ではClaude Code向けの仕組みで、Cowork(私のメイン環境)には届かなかったことです。その後、Cowork向けの移植が公開されています(scottconverse/context-mode)。もうひとつは、業務の認証情報が通る経路に第三者のコードを挟むことになる点です。

やっていることは「大きい出力を要約して返す」ですから、4-4のスクリプトが同じ役割を果たします。 そしてこちらはCoworkでも動きます。

ローカルLLMでのRAG化

社内ドキュメントをベクトル化しておき、Claudeからローカルのモデルに問い合わせる構成です。効きますが、ローカルLLMを運用する手間と釣り合わないと判断しました。

7-3. 効きそうに見えて、実は減らないもの

@path インポートでのファイル分割

CLAUDE.md@path/to/file と書くと他のファイルを取り込めます。整理には有効ですが、固定費は減りません。 公式にこう書かれています。

Splitting into @path imports helps organization but doesn't reduce context, since imported files load at launch. (Claude Code Docs — Memory

減らしたいなら、4-1のように「開くときだけ開く」索引にするか、7-1の paths: 付きルールにする必要があります。ここを取り違えると、整理した気になって数字が動きません。

文体を削る(いわゆる「原始人口調」)

助詞や敬語を落として短くする方法です。削れるのは出力側だけで、量として支配的なのは入力側(指示ファイル・ツール定義・読み込んだファイル)です。そこを削らずに文体だけ削っても、総量はほとんど動きません。加えて日本語は助詞が文法上の役割を担っているので、落とすと意味が変わります。読み違えて確認が1往復増えれば、節約分は消えてしまいます。

「体言止め・敬語を落とす・前置きを書かない」までが安全な範囲だと考えています。これは指示ファイルに入れました。

8. 始める前に押さえておきたい4点

どれも、知らないまま進めると後で戻せなくなるところです。作業前に確認してください。

① 中身が同じだと思っているファイルこそ、開いて確かめる

複製ファイルは、作った当時のまま止まっていることがあります。片方だけ直された、一括置換が効きすぎてパスが壊れた、といったことが起きます。

確認:「同じ内容だから」と判断する前に、実際に両方を開いて差分を見てください。壊れた複製は、削減どころか毎回AIを迷わせます。

② フォルダを動かす前に、リンクを数える

メモ同士をリンクでつないでいる場合、そのリンクがフルパス形式だと、フォルダを動かした瞬間に全部切れます。私の環境では1,165件中1,114件がフルパス形式でした。

**確認:**移動の前に、動かすフォルダ名を含むリンクが何件あるかを数えてください。AIに「移動前にリンクを数えて、移動後に書き換えて」と伝えれば実行してくれます。数が報告されない場合は、やっていないと考えてください。

③ 「更新しないものは自然に下がる」は成立しない

案件メモが増えても、使わないものは自然に沈むから大丈夫、と考えがちです。実際にはフォルダ表示は名前順なので、何も沈みません。

**確認:**更新日順で並ぶ一覧(Obsidianならビュー、その他ならソート設定)を作ってから、増えるに任せてください。作らないうちは、古いものが常に目に入り続けます。

④ 記録と実物は食い違う

「これは要らないので消した」という記録があるのに、実物が残っていることがあります。取り消し操作の漏れや、同期のタイミングで起きます。

**確認:**削除の記録を見つけたら、そのファイルが本当に無いかを確かめてください。記録だけを信じて判断しないことです。

9. まとめ

  • まず測ります。 削る前のバイト数を残してください。測らずに削ると効果が分かりません
  • 分けます。 毎回要るものと、たまに要るものを切り離します
  • 重複を消します。 同じ内容の別名ファイルは二重払いです
  • 消すのは最後です。 迷ったら残してください。残すコストはほぼゼロですが、消すと気づくまで戻せません

設定でできることには限りがあります。いちばん効くのは運用側で、「タスクが変わったら新しい会話を始める」ことです。 惰性でひとつの会話を引きずるコストは、設定で稼いだ分より大きくなります。

参考にしたもの

公式ドキュメント(URLの /en//ja/ に変えると日本語版です)

運用の記事

MCP まわり

ツール・その他

WRITER

Yuji Mezaki代表取締役副社長

代表取締役副社長をやっています。 越境ECとWebマーケの営業担当しています。 なんでもカリカリにチューニングして生産性あげるのが好きで勉強したビジネスフレームワークの記事多め。 趣味はPC自作で会社のWindowsデスクトップはほぼ自分が組みました。 1985年生/2008年早大卒/

この著者の記事を見る

CONTACT

記事の内容について
相談したい方へ

実際の進め方は、状況を伺ってからご提案します。

2営業日以内にご返信します
資料ダウンロード無料相談に申し込む