3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code のトークン消費を抑える実務テクニック5選 — Skills / .claudeignore / Subagentの使い分け

3
Posted at

はじめに

Claude Code を業務で毎日使っていると、避けて通れないのが トークン消費の問題 です。

MAX プラン(月 $100)でも、無計画に使うとあっという間にレート制限に達します。最近、rtk-ai/rtk のように LLM トークン消費を 60〜90% 削減するツールが話題になっていますが、ツールに頼る前に 「自分のプロンプト・コンテキストの渡し方」を見直す だけでも、消費はかなり抑えられます。

この記事では、現役 CTO として Claude Code を毎日使い倒している立場から、コードの質を落とさずにトークン消費を抑える実務テクニック5つ を整理します。

1. .claudeignore で「読まなくていいもの」を明示する

Claude Code はプロジェクト全体をコンテキストに含めようとするため、node_modulesdist などを毎回読みに行ってしまうと、それだけで膨大なトークンを消費します。

.claudeignore で除外設定を入れるのが第一歩です。

# .claudeignore
node_modules/
.next/
dist/
build/
*.log
*.lock
package-lock.json
yarn.lock
.env
.env.*
**/__pycache__/
coverage/

特に package-lock.jsonyarn.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 等)の導入を検討する前に、まずは自分の使い方を見直してみるのをおすすめします。


関連: 教材で手を動かして学ぶ

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?