はじめに
Claude Code を業務で毎日使っていると、避けて通れないのが トークン消費の問題 です。
MAX プラン(月 $100)でも、無計画に使うとあっという間にレート制限に達します。最近、rtk-ai/rtk のように LLM トークン消費を 60〜90% 削減するツールが話題になっていますが、ツールに頼る前に 「自分のプロンプト・コンテキストの渡し方」を見直す だけでも、消費はかなり抑えられます。
この記事では、現役 CTO として Claude Code を毎日使い倒している立場から、コードの質を落とさずにトークン消費を抑える実務テクニック5つ を整理します。
1. .claudeignore で「読まなくていいもの」を明示する
Claude Code はプロジェクト全体をコンテキストに含めようとするため、node_modules や dist などを毎回読みに行ってしまうと、それだけで膨大なトークンを消費します。
.claudeignore で除外設定を入れるのが第一歩です。
# .claudeignore
node_modules/
.next/
dist/
build/
*.log
*.lock
package-lock.json
yarn.lock
.env
.env.*
**/__pycache__/
coverage/
特に package-lock.json や yarn.lock は数千行になることがあり、AI に読ませる意味がほぼないので必ず除外します。
.env 系は セキュリティの観点からも 除外必須です(AI が誤って外部に渡すリスクを排除)。
2. Skills を使って繰り返しタスクを「短い起動ワード」に圧縮する
毎回「○○を確認して、××のフォーマットで返して」という長い指示を打っていませんか?
そういう繰り返しタスクは、Claude Code の Skills 機能 で短く起動するように設計します。
.claude/skills/
daily-status/
skill.md
skill.md 内に詳細手順を書いておけば、起動側のメッセージは「daily-status やって」だけでよくなります。実際のところ、私は1日10回くらい使うコマンドはほぼ全て Skills 化しています。
これだけで 入力トークンが大幅に減ります。詳細は別の記事で書いたClaude Code の CLAUDE.md / Skills / Agents を3層で整備する設計パターンも参考にどうぞ。
3. Subagent でメインの会話履歴に余計な情報を残さない
「ファイル全件を grep して結果を要約してほしい」のような 大量の中間データ を扱う作業は、Subagent(Agent ツール)に投げます。
// メインスレッドで実行する場合(NG)
// → grep結果が全部メインのコンテキストに残る
const results = await runGrep("TODO", "src/**/*.ts");
// 続きの作業中、ずっとgrep結果がコンテキストを圧迫
// Subagent に投げる場合(推奨)
// → 結果の要約だけがメインに返ってくる
await Agent({
description: "TODO 一覧を集計",
prompt: "src/ 配下の全 TS ファイルから TODO コメントを grep し、ファイル別の件数だけ報告してください。",
});
Subagent の中で発生する大量の中間データは、メインスレッドのコンテキストを汚さずに完結します。
これは 長時間セッションでのトークン消費 に効きます。
4. CLAUDE.md は「プロジェクト固有のもの」だけに絞る
CLAUDE.md(プロジェクト指示ファイル)に 何でもかんでも書く のは逆効果です。
Claude Code は毎ターン CLAUDE.md を再読込するため、そこに書いた内容は 毎回トークンを消費します。
私が運用しているルールはこれです。
| 書くべき | 書くべきでない |
|---|---|
| プロジェクト固有のルール(例:「コミットメッセージは日本語」) | 一般的なベストプラクティス |
| ディレクトリ構造の概要 | コードの中身全部 |
主要ファイルへのポインタ(@rules/foo.md で参照) |
詳細手順の本文 |
詳細な手順は 別ファイルに切り出して @rules/...md のように import で読み込む形にすると、必要なときだけ読まれます。
# CLAUDE.md(短く保つ)
## プロジェクト概要
このプロジェクトは ...
## ルール
- コミットメッセージ: 日本語
- テスト実行: `npm test`
## 詳細
@rules/architecture.md ← 必要な時だけ読まれる
@rules/coding-style.md
5. 大きなファイルは「該当行だけ」読ませる
「ファイル全体を読んで」と頼むと、Claude Code は素直に全行読み込みます。
1000行のファイルを読ませると、それだけで数千トークンが飛びます。
代わりに、offset / limit を指定して 必要な範囲だけ 読ませます。
# NG: ファイル全部読み込む
src/utils/very-long-file.ts
# OK: 該当箇所だけ
src/utils/very-long-file.ts の 200〜250 行
または、grep で先に該当箇所を特定してから、その周辺だけ読ませる:
grep -n "handleSubmit" src/utils/very-long-file.ts
# → 215 行目だと判明
# → src/utils/very-long-file.ts の 200〜230 行を読んで
これだけで、1ファイルあたりのトークン消費を 1/10 以下 に抑えられます。
まとめ
トークン消費を抑える実務テクニックは、特別なツールがなくてもいくつもあります。
| # | テクニック | 効果 |
|---|---|---|
| 1 |
.claudeignore で除外 |
コンテキスト全体 ↓ |
| 2 | Skills で起動ワード短縮 | 入力 ↓ |
| 3 | Subagent で中間データ分離 | 長時間セッション ↓ |
| 4 | CLAUDE.md は短く保つ | 毎ターン ↓ |
| 5 | ファイルは該当範囲だけ | 大ファイル読み込み ↓ |
私のチームでは、この5つを徹底するだけで、MAX プランでもレート制限に達することがほぼなくなりました。
外部ツール(rtk-ai 等)の導入を検討する前に、まずは自分の使い方を見直してみるのをおすすめします。
関連: 教材で手を動かして学ぶ
- まず無料で試したい方: 教材の体験版を GitHub で配布中(
git cloneしてすぐ動かせます) → https://github.com/ayies128/next-ai-camp-trial - 全20セッション完全版+メンタリング → https://menta.work/plan/20251
- YouTubeチャンネル → https://www.youtube.com/channel/UC1rXVD9WYsQPQEWZyd-A1KA/