32blogby StudioMitsu
claude-code14 min read

Claude Codeのトークン消費を50%削減した方法

Claude Codeの月額が怖い人へ。.claudeignore・Plan mode・CLAUDE.md最適化・MCPサーバー管理で実際にトークン消費を50%削減した方法を具体的なコマンドとともに公開。

claude-codeコスト削減トークン最適化Plan modeclaudeignore
目次

Claude Codeを使い始めた月、APIの請求が予想の3倍来た。僕が何がトークンを食っているのか調べて対策したら、翌月から半分以下になった。その手順を全部公開する。

この記事を読むと、「どこでトークンが消えているか」の特定方法から、.claudeignore・Plan mode・プロンプト改善・MCPサーバー管理まで、実際に効いた対策が具体的なコマンド付きでわかる。

トークンを消費する「5大犯人」とは何か?

やみくもに節約しようとする前に、まず敵を知る必要がある。トークン消費の主な原因は5つに絞られる。

1. 巨大なコンテキスト読み込み Claude Codeはタスクに関係ないファイル(node_modules.git、ビルド成果物)も読み込もうとする場合がある。これが最大の無駄だ。

2. あいまいな指示による往復 「いい感じにして」という指示は、Claude Codeが確認・再確認を繰り返すことになる。1回の指示で終わるべき作業が3〜4往復になる。

3. 常時起動のMCPサーバー 接続中のMCPサーバーは、会話ごとにコンテキストをツールリストとして消費する。使わないMCPを繋ぎっぱなしにすると積み重なる。

4. 肥大化したCLAUDE.md プロジェクト説明、コーディング規約、過去の決定事項を全部書いていると、セッション開始のたびに全文をコンテキストに載せる。

5. 長いセッションの放置 会話が長くなるほど、履歴全体がコンテキストとして累積される。区切りを作らないと指数的に消費量が増える。

まず /usage コマンドで消費量の傾向を見て、どの原因が大きいか確認しよう。

.claudeignoreで無駄な読み込みを止めるには?

最も即効性のある対策は .claudeignore の設置だ。.gitignore と同じ書式で、Claude Codeがコンテキストに読み込まないパスを指定できる。

プロジェクトルートに .claudeignore を作成する。

bash
# .claudeignore

# ビルド成果物
.next/
dist/
build/
out/

# 依存関係
node_modules/
.pnp/
.pnp.js

# キャッシュ
.cache/
.turbo/
*.tsbuildinfo

# ログ・デバッグ
*.log
npm-debug.log*

# テスト成果物
coverage/
.nyc_output/

# 環境変数(セキュリティ上も重要)
.env
.env.local
.env.*.local

# データベースファイル
*.db
*.sqlite
prisma/migrations/

# メディア・バイナリ
public/images/
*.png
*.jpg
*.gif
*.mp4

設定後、claude を再起動すると即座に効く。体感として、Next.jsプロジェクトで .next/ を除外するだけでコンテキストが30〜40%削減される。

ポイントは「Claude Codeが読む必要のないファイルをすべて除外する」という発想だ。ドキュメント、テスト fixtures、生成済みの型定義ファイルなども積極的に除外していい。

Plan modeでトークン消費を半分にできるのはなぜか?

Plan mode(Shift+Tab でトグル)は、実行前に計画だけを立てさせるモードだ。これがトークン節約に絶大な効果を持つ理由がある。

通常モードでは、Claude Codeは試行錯誤を繰り返す。「やってみてエラーが出たら直す」というアプローチなので、実行・確認・修正のループがトークンを食う。

Plan modeでは、まず「何をどの順序でやるか」の計画だけを出力する。その計画を確認してから実行に移すので、無駄な試行錯誤が激減する。

# Plan modeの使い方
Shift+Tab で Plan mode をオンにする
→ タスクを指示する
→ 計画が表示される(ファイルの変更なし)
→ 計画を確認・修正する
→ Shift+Tab で通常モードに戻して実行

具体的な数値で言うと、「ユーザー認証機能を追加して」という指示をPlan modeなしで出すと、Claude Codeは手探りで実装してエラーを修正して、という流れになる。Plan modeを使うと、先に「どのファイルをどう変更するか」の計画が出るので、「3番目のステップはいらない」とフィードバックしてから実行できる。

大きなタスクほど、Plan modeの節約効果が大きい。

「あいまいな指示」はどれだけトークンを消費するのか?

指示の精度がトークン消費に直結する。以下の例を見てほしい。

悪い例(トークンを4倍消費する):

「ログイン機能を追加して」

この指示だと、Claude Codeは以下を全部確認してくる。

  • 使う認証ライブラリは何か
  • セッション管理の方式は(Cookie? JWT?)
  • どのファイルにロジックを書くか
  • UIコンポーネントはどこに置くか

良い例(1往復で終わる):

「NextAuth.js v5 を使って Google OAuth のログインを追加して。
セッションはJWT。/app/auth/ ディレクトリに実装して。
既存の middleware.ts に認証ガードも追加する。」

指示を書くときの原則は「5W1H を自分で答えてから投げる」だ。What(何を)、Where(どこに)、How(どのライブラリ・方式で)が揃っていると、往復がなくなる。

また、1タスク1メッセージの原則も重要だ。「ログイン機能を作って、テストも書いて、ドキュメントも更新して」を1メッセージに詰め込むと、Claude Codeは全部を一度に把握しようとしてコンテキストが膨らむ。分けて投げると合計トークンが減る。

MCPサーバーを必要な時だけ有効化するには?

MCP(Model Context Protocol)サーバーは強力だが、接続中は毎回のやり取りでツールリストがコンテキストに追加される。5つのMCPサーバーを常時接続していると、それだけで1メッセージあたり数百トークンの固定コストがかかる。

設定ファイルを確認する。

bash
cat ~/.claude.json | jq '.mcpServers'

使い分けの方針はシンプルだ。

json
{
  "mcpServers": {
    "filesystem": {
      "comment": "常時ON — ファイル操作は毎回使う",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
    },
    "postgres": {
      "comment": "DBタスク時だけON — 普段はコメントアウト",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
    },
    "github": {
      "comment": "PR作業時だけON",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"]
    }
  }
}

「毎日使うMCPだけ常時接続、それ以外は作業開始時に有効化して終わったら無効化」というルーティンにするだけで、じわじわと消費量が減る。

/compact と /clear はそれぞれいつ使うべきか?

Claude Codeには会話履歴を管理するコマンドが2つある。これを正しく使うかどうかで、長いセッションのコスト感が変わる。

/compact: 会話履歴を要約してコンテキストを圧縮する。会話の内容は保持しつつ、トークン数を削減する。

/clear: 会話履歴を完全にリセットする。新しいタスクを始めるときに使う。

使いどきの判断基準は以下のとおり。

/compact を使う場面:
- 同じタスクを継続中だが、会話が長くなってきた
- 「前のステップを踏まえて次を」という文脈が必要
- セッション中盤(500〜1000メッセージ前後)

/clear を使う場面:
- タスクが完全に切り替わる
- 前の会話内容がまったく不要になった
- 新しい機能の実装を始める
- 翌日作業を再開する

ミスが多いのは「長くなったコンテキストを何となく放置する」パターンだ。会話が長くなるほど、Claude Codeは古い文脈も参照しようとする。関係のないやり取りが邪魔をして、かえって回答精度が下がりコストも増えるという悪循環になる。

区切りが来たら迷わず /compact/clear を打つのがコツだ。

CLAUDE.mdを軽量に保つにはどうすればいいか?

CLAUDE.md はプロジェクトごとの指示書として機能するが、セッション開始のたびにフルコンテキストに乗る。肥大化すると固定コストになる。

削るべき内容:

  • 「〜の経緯」「〜という背景から」といった歴史的説明
  • 完了済みのタスクや過去の決定事項の詳細
  • 外部ドキュメントへのリンク(Claude Codeは読めない)
  • 長い免責事項や注意書き

残すべき内容:

  • 技術スタックの一覧(箇条書き、3行以内)
  • ディレクトリ構造の概要
  • コーディング規約(重要なものだけ)
  • 現在進行中のタスク

目安として、CLAUDE.md200行以内 に収める。それを超えるなら、詳細は別ファイルに分けてインポートする。

markdown
# CLAUDE.md(軽量版の例)

## Tech Stack
- Next.js 15 + TypeScript + Tailwind v4
- Prisma + PostgreSQL
- NextAuth.js v5

## Directory
- /app — App Router pages
- /components — UIコンポーネント
- /lib — ユーティリティ

## Rules
- コンポーネントはServer Componentsを基本とする
- データ取得はServer ActionsかRoute Handlers
- テストはVitest + Testing Library

## Current Task
- ユーザーダッシュボードの実装中
- 詳細: docs/current-sprint.md 参照

詳細は docs/ 配下に分けておき、必要な時だけ「このファイルを読んで」と指示する方が効率がいい。

月額コストは実際にどれくらい削減できるのか?

対策前後の消費量を実際の数字で比較する。前提は「Next.jsの中規模プロジェクトを毎日3〜4時間使う」ケースだ。

対策削減効果
.claudeignore 設置-30〜40%
Plan mode の活用-20〜30%
指示の精度向上-15〜25%
MCPサーバーの整理-5〜10%
/compact の活用-10〜15%
CLAUDE.md の軽量化-5〜10%

複合効果で計算すると、対策前と比較して40〜55%の削減が現実的な数字だ。「50%削減」というのは誇張ではない。

Claude Codeは使い方によってコストが大きく変わるツールだ。無駄を削れば、同じ月額でできる作業量が倍になる。最初の一手は .claudeignore の設置——それだけでも体感が変わるはずだ。

まとめ

Claude Codeのトークン消費を減らすには、以下の順番で対策するのが効果的だ。

  1. .claudeignore を設置する — 即効性が最も高い。node_modules.next/、バイナリファイルを除外する
  2. Plan modeを習慣にする — 大きなタスクを実行前に計画で確認する
  3. 指示を具体的にする — 5W1Hを自分で答えてから投げる
  4. MCPサーバーを整理する — 常時接続は必要最小限に
  5. /compact を使う — セッション中盤で積極的に圧縮する
  6. CLAUDE.md を200行以内に保つ — 詳細は別ファイルへ

合計で月額コストを40〜55%削減できる。まずは .claudeignore から始めてほしい。