CLAUDE.md のトークン数を実測した——4,696文字の内訳と削減ポイント 2026

結論
masatoman.net の CLAUDE.md は 4,696文字(115行)で、文字種別の推計では約 2,600〜4,200 トークンを毎リクエストで消費している。 重い順に「記事執筆原則セクション(1,350文字・全体の29%)」「コマンド一覧(803文字・17%)」「ターゲット定義(640文字・14%)」。
削除よりも「外部ファイルへの参照置換」の方が維持コストが低い。どのセクションを参照化するかは測定なしには判断できない、という認識が今回のスタートだった。
この記事の前提
- masatoman.net を Next.js + Supabase + Vercel で運用中
- CLAUDE.md は Claude Code のシステムプロンプトとして毎リクエストに自動附随する
- 2026-06-07 の新コンセプト確定以降、記事ルール・禁止パターン・ターゲット定義を CLAUDE.md に追記してきた
- 計測方法: Python で文字種別(日本語 / ASCII)に分類し、日本語 1.0〜1.8 トークン/文字・ASCII 1 トークン/4文字の公開推計式を適用。Claude の公式 countTokens API は未使用のため「推計」と明記する
読者のよくある詰まり
CLAUDE.md にルールを書き足していくと、こういうことが起きる。
- 「昨日まで守られていた禁止パターンが無視された」
- 「何かスリムにしたいが、何を消せばいいか分からない」
- 「行数を確認したら増えていた。でも、どこが重いかは不明」
CLAUDE.md が重いと直感しても、セクション別の負荷を計測したことがない。そのまま「全体的に書きすぎ」という感想で終わる。
今回の測定は「どこが重いか」を数字で見るための出発点として行った。
実際に起きたこと
ファイル全体
| 指標 | 値 |
|---|---|
| 総文字数 | 4,696文字 |
| 行数 | 115行 |
| 日本語文字(CJK・ひらがな・カタカナ) | 1,938文字(41%) |
| ASCII文字(英字・記号・スペース等) | 2,730文字(58%) |
| その他 | 28文字(1%) |
推計トークン数(文字種別推計式)
| 推計シナリオ | トークン数 |
|---|---|
| 低(日本語 1.0 tok/char) | 約 2,620 トークン |
| 高(日本語 1.8 tok/char) | 約 4,170 トークン |
| 中間値(参考) | 約 3,400 トークン |
推計には幅がある。ただし「数千トークンが毎リクエストに乗る」という規模感は確認できた。
セクション別文字数(H2見出し単位)
| セクション | 文字数 | 全体比 |
|---|---|---|
| 記事執筆時の絶対原則 | 1,350 | 29% |
| コマンド | 803 | 17% |
| ターゲット | 640 | 14% |
| ヒーロー画像フォント指定 | 429 | 9% |
| ディレクトリ構成 | 212 | 5% |
| 重要ルール | 127 | 3% |
| 技術スタック | 79 | 2% |
最も重いのは「記事執筆時の絶対原則」セクション。禁止パターン・推奨記事タイプ・標準記事構造・書く前の自問を含む複合セクションで、単体で全体の3割を占める。
原因分析
セクション別で見ると、トークン消費の内訳が見えた。
ルール系(記事執筆原則・重要ルール)が全体の32%を占める。 1つのルールを詳しく説明しようとするほど文字が膨らむ構造で、「ルールの背景説明」と「ルール本体」が混在している。
コマンド一覧(17%)は必要な長さ。 npm run コマンドと用途の組み合わせは削りにくい。ただし全てのリポジトリに使うコマンドとそうでないものが区別されていない。
ターゲット定義(14%)は参照先を書ける。 「詳細は SNAPSHOT.md」と書きながら、CLAUDE.md 本文にもターゲット属性を繰り返している。これは二重管理になっている。
判断軸
CLAUDE.md のトークンを減らすには、削除ではなく「参照置換」の方が維持コストが低い。
参照置換とは: 「詳細は docs/xxx.md を参照」1行に置き換えること。Claude Code は @docs/xxx.md 形式で参照ファイルを読み込めるため、必要なときだけ詳細が使われる構造にできる。
適用候補を確認した:
| セクション | 対処案 |
|---|---|
| 記事執筆時の絶対原則(1,350文字) | 執筆ルールとして docs/writing-guide.md に集約済みの内容と重複していないか確認。重複部分を参照化 |
| ターゲット定義(640文字) | SNAPSHOT.md が正準値と CLAUDE.md 自身に書かれている。本文側の詳細記述を削除して参照1行に |
| ヒーロー画像フォント指定(429文字) | 毎回必要ではない。コード例を docs/image-gen-guide.md に移して参照行に置換 |
コマンド一覧と重要ルールは Claude への直接命令に当たるため、参照化せず残す。
今日やること
- 自分の CLAUDE.md のセクション別文字数を計測する —
python3 -c "..."で文字種別に集計するか、wc -mで全体把握してから重いセクションを特定する - 「詳細は〇〇を参照」と書きながら本文にも同じ内容がある箇所を探す — grep で "詳細は" "参照" を検索して二重管理を見つける
- 最も重いセクション1つを参照化する — 削除より参照化。一気に全部やらない
CLAUDE.md が200行を超えると指示が消える説は本当か——自分の4リポジトリで確かめた記録
行数と指示遵守率の関係を4リポジトリで観察した記録。今回の「トークン数」視点と合わせて読むと補完になる。