32blogby Studio Mitsu

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

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

by omitsu21 min read
Claude Codecost reductiontoken optimizationPlan mode.claudeignore
目次

Claude Codeを使い始めたらAPIの請求が想定以上に来た——これはRedditでもよく見る悩みだ。トークンの消費を分析して対策すれば、大幅に削減できる。その手順を全部公開する。

この記事を読むと、「どこでトークンが消えているか」の特定方法から、.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. 長いセッションの放置 会話が長くなるほど、履歴全体がコンテキストとして累積される。区切りを作らないと指数的に消費量が増える。

まず /context コマンドでコンテキスト使用量の内訳を視覚的に確認し、/cost で現在のセッションの支出を見る。この2つを組み合わせると、どの原因が最もコストに効いているか特定できる。

原因特定/cost, /context計測ノイズ除去.claudeignoreフィルタプロンプト改善Plan mode + 具体指示最適化50%削減月額半減

.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メッセージあたり数百トークンの固定コストがかかる。

接続中のMCPサーバーは、Claude Code内で /mcp コマンドを打てば一覧表示される。ここからサーバーのオン・オフを切り替えられる。

コマンドラインからの管理はこうだ。

bash
# サーバーを追加
claude mcp add postgres -- npx -y @modelcontextprotocol/server-postgres postgresql://localhost/mydb

# 作業が終わったら削除
claude mcp remove postgres

# 接続中のサーバー一覧
claude mcp list

使い分けの方針はシンプルだ。毎セッション使うサーバーだけ常時接続し、データベース・GitHub・Slack等の専門サーバーは必要な時だけ追加して終わったら外す。

MCPサーバーはデフォルト0個にしておくのがおすすめだ。DBを叩く時だけPostgresサーバーを追加して、タスクが終わったら外す。こうすることでトークン消費を抑えられる。

/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には「Agent」ツールでサブエージェントを起動する機能がある。メインのコンテキスト窓を温存しながら、調査や検索を別プロセスに委任できる。

サブエージェントが有効なケース:

  • ファイル探索(「この関数どこで使われてる?」)
  • 複数ファイルの横断検索
  • 依存関係の調査
  • テスト実行と結果の要約

サブエージェントはメインのコンテキスト窓とは別のウィンドウで動く。10ファイルを読む調査をメインで実行すると、全ファイルの内容がコンテキストを圧迫する。サブエージェントに委任すれば、結果の要約だけがメインに返ってくる。

CLAUDE.mdでサブエージェント活用を促す例:

markdown
# コスト最適化
- 3ファイル以上の探索はサブエージェントに委任する
- テスト実行はサブエージェントで行い、結果のみ報告する
- コードレビューは対象ファイルごとにサブエージェントを並列起動する

よくある質問

Claude Codeの月額は実際いくらかかる?

使い方による。API課金の場合、中規模プロジェクトでガッツリ使うと1日$5〜15くらいになることもある。AnthropicはClaude Maxというサブスクプランも提供していて、月額定額でClaude Codeを使える。この記事の最適化はどちらの課金方式でも有効だ。トークン消費が減れば、API課金なら請求が減るし、サブスクならレート制限の余裕が増える。

.claudeignoreを設定すると回答の質は落ちる?

落ちない。ビルド成果物、node_modules、バイナリファイルはClaude Codeにとってノイズだ。除外することでむしろ回答精度が上がる。Claude Codeが本当に必要なソースファイルに集中できるからだ。リスクがあるとすれば「除外しすぎ」で、Claude Codeに読ませたいソースファイルまで除外してしまうケースだけ。

/compactと/clearはどう使い分ける?

/compact は会話履歴を要約して圧縮する。文脈を保ったまま続行できる。/clear は完全リセット。同じタスクの途中で会話が長くなったら /compact、タスクが完全に切り替わったら /clear を使う。他のコマンドも知りたければ Claude Codeコマンドチートシート を参照。

Claude Codeに月額の上限を設定できる?

API課金の場合、Anthropic Console のBilling設定でハードリミットと通知閾値を設定できる。サブスクプランの場合はプランのレート制限が実質的な上限になる。

MCPサーバーは使わなくてもトークンを消費する?

する。接続中のMCPサーバーは、ツールを呼び出さなくても毎メッセージでツール定義がコンテキストに注入される。使わないサーバーを外すだけで、無条件に節約できる。

Plan modeを使うと作業が遅くなる?

実時間で言うと、計画を確認するステップが1つ増える。しかし合計時間はほぼ確実に短くなる。Claude Codeが間違った方向に進んでからやり直す手戻りがなくなるからだ。変数のリネーム・typo修正のような小さな変更にはPlan modeは不要。3ファイル以上に影響する変更では使った方がいい。

CLAUDE.mdが長すぎるかどうかの判断基準は?

新しいセッションを開始した直後に /context を打つ。CLAUDE.mdがコンテキストの10〜15%以上を占めていたら、削る価値がある。CLAUDE.md設計パターンの記事で5つの軽量化パターンを紹介している。目安は200行以内。詳細は docs/ 配下に分けてClaude Codeに必要な時だけ読ませる。

サブエージェントを使うと本当にトークンが節約できる?

タスクの規模による。サブエージェントの起動自体にオーバーヘッドがあるので、1〜2ファイルの単純な読み込みでは逆に無駄になる。しかし3ファイル以上にまたがる調査——依存関係の追跡、横断検索、テスト実行——ではサブエージェントが有効だ。結果の要約だけがメインに返ってくるので、メインのコンテキスト窓を圧迫しない。大量のファイル探索をサブエージェントに委任すると、メインで直接実行するよりトークン消費が大幅に減る。


まとめ

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

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

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

関連記事: