結論: 7つのテクニックで月額$300→$144(52%削減)を達成しました
Claude Codeを本格運用して3ヶ月、月額$300を超えた請求書を見て本気でコスト最適化に取り組んだ結果、52%削減に成功しました。
特別なツールや有料サービスは一切使っていません。計測・圧縮・分割・除外・再利用という5つの観点から運用を見直しただけです。この記事では、私が実際に試した7つのテクニックを、具体的な設定例とBefore/After付きで共有します。
環境・前提条件
| 項目 | 内容 |
|---|---|
| Claude Code | v1.x(2025年6月時点の最新版) |
| 利用プラン | Claude Pro / API直接利用(従量課金) |
| プロジェクト規模 | TypeScript + React、約200ファイル |
| 1日の利用頻度 | 平均15〜20セッション |
| OS | macOS / Linux(WSL2でも動作確認済み) |
注意: トークン消費量はプロジェクト構成やプロンプトの書き方で大きく変動します。削減率はあくまで私の環境での実績です。
テクニック1: まず可視化する — トークン消費の内訳を記録する
最適化の第一歩は「何にトークンを使っているか」を知ることです。
Claude Codeはセッション終了時にトークン消費量を表示します。しかし、これを毎回手動で記録するのは現実的ではありません。私は以下のシェルスクリプトで日次ログを自動取得しています。
#!/bin/bash
# claude-cost-logger.sh
# Claude Codeのセッション終了後に実行する簡易ログ収集
LOG_DIR="$HOME/.claude-cost-logs"
mkdir -p "$LOG_DIR"
DATE=$(date +%Y-%m-%d)
TIME=$(date +%H:%M:%S)
LOG_FILE="$LOG_DIR/$DATE.tsv"
# セッション情報を手動入力(将来的にAPI連携で自動化可能)
read -p "タスク種別 (code/review/debug/doc): " TASK_TYPE
read -p "入力トークン数: " INPUT_TOKENS
read -p "出力トークン数: " OUTPUT_TOKENS
read -p "セッション時間(分): " DURATION
# コスト概算(Claude Sonnet 4の参考価格で計算)
COST=$(echo "scale=4; ($INPUT_TOKENS * 0.000003) + ($OUTPUT_TOKENS * 0.000015)" | bc)
echo -e "$TIME\t$TASK_TYPE\t$INPUT_TOKENS\t$OUTPUT_TOKENS\t$DURATION\t\$$COST" >> "$LOG_FILE"
echo "記録完了: $LOG_FILE (推定コスト: \$$COST)"
1週間記録してわかったこと
| タスク種別 | 全体に占める割合 | 平均トークン/回 |
|---|---|---|
| 新規コード生成 | 35% | 12,000 |
| デバッグ | 28% | 18,000 |
| コードレビュー | 22% | 8,500 |
| ドキュメント生成 | 15% | 5,200 |
デバッグが最もトークンを消費していました。 これは長いセッションの中でコンテキストが膨らむことが主因です。この発見がテクニック3(セッション分割)につながりました。
テクニック2: CLAUDE.mdのダイエット術 — 肥大化したコンテキストを構造化で圧縮
CLAUDE.mdはセッション開始時に毎回読み込まれます。つまり、肥大化したCLAUDE.mdはすべてのセッションでトークンを浪費する「固定コスト」 です。
Before(肥大化した状態: 約2,800トークン)
# プロジェクトについて
このプロジェクトはReact + TypeScriptで構築されたECサイトです。
バックエンドはNode.js + Expressで、データベースはPostgreSQLを使用しています。
認証にはJWTを使用しており、リフレッシュトークンの仕組みも実装済みです。
テストはVitestを使っています。E2EテストにはPlaywrightを使用しています。
CIはGitHub Actionsで構成されています。
(以下、100行以上の詳細説明が続く...)
After(構造化・圧縮後: 約950トークン)
# Project: EC-Site
## Tech Stack
- Frontend: React 18 + TypeScript 5 + Vite
- Backend: Node.js + Express
- DB: PostgreSQL 16 + Prisma ORM
- Auth: JWT (access + refresh tokens)
- Test: Vitest (unit), Playwright (E2E)
- CI: GitHub Actions
## Conventions
- Naming: camelCase(vars/funcs), PascalCase(components/types)
- Commits: Conventional Commits format
- Branch: feature/*, fix/*, chore/*
## Architecture
src/
├── components/ # Presentational (no business logic)
├── features/ # Feature modules (co-located logic)
├── hooks/ # Shared custom hooks
├── lib/ # External service wrappers
└── types/ # Shared type definitions
## Key Rules
- No `any` type. Use `unknown` + type guard.
- All API calls via `lib/api-client.ts`.
- DB migrations via `npx prisma migrate dev`.
削減効果: 約66%のトークン削減(毎セッション1,850トークン節約)。 1日20セッションなら、これだけで日に37,000トークンの節約です。
ダイエットの3原則
- 散文を箇条書きに変換する — 説明文は情報密度が低い
- 階層別にCLAUDE.mdを分割する — プロジェクトルート・サブディレクトリ・ユーザーホームの3階層を活用
- 「Claudeが知っている常識」は書かない — 「TypeScriptは型安全な言語です」のような記述は不要
テクニック3: セッション分割戦略 — 1タスク1セッションの原則
最大のコスト削減効果があったのがこのテクニックです。
Claude Codeのセッションは会話が長くなるほどコンテキストウィンドウが膨らみ、各リクエストのトークンコストが累積的に増加します。1つのセッションで複数タスクをこなすのは、コスト面で最悪のパターン です。
サブコマンドによるタスク委譲
Claude Codeでは、メインセッションからサブタスクを別プロセスに委譲できます。これにより、メインのコンテキストを汚さずに調査や小タスクを処理できます。
# メインセッションから
> このコンポーネントのテストを書いてください。
> ただし、既存テストのパターンを先に調査してから書いてください。
# Claudeがサブエージェントとして調査を別コンテキストで実行
# → メインセッションのコンテキスト増加を抑制
実測効果: セッション分割だけで月間トークン消費が約30%減少しました。
テクニック4: /compact と /clear の使い分け
この2つのコマンドは似ているようで用途がまったく異なります。
| コマンド | 動作 | コンテキスト | 使うタイミング |
|---|---|---|---|
/compact |
会話履歴を要約して圧縮 | 要約が残る | セッション中盤、コンテキストが膨らんできた時 |
/clear |
会話履歴を完全に削除 | 完全にリセット | タスク完了後、別タスクに移る時 |
/compact のカスタム指示
/compact にはカスタムの要約指示を渡せます。これにより、圧縮後に残す情報をコントロールできます。
/compact 現在のファイル変更内容と残りのTODOだけを保持してください
この一工夫で、圧縮後のコンテキスト品質が大幅に向上し、再説明のための追加トークン消費を防げます。
テクニック5: .claudeignore 完全活用 — 不要ファイルをコンテキストから除外
Claude Codeはプロジェクトのファイルを読み取ってコンテキストに含めます。.claudeignoreを適切に設定することで、不要なファイルの読み込みを防げます。
私の.claudeignore設定例
# ビルド成果物
dist/
build/
.next/
out/
# 依存関係(node_modulesは通常デフォルトで除外されるが明示的に)
node_modules/
# 大きなデータファイル
*.sql
*.dump
*.csv
fixtures/large-*.json
seed-data/
# ロック系ファイル(読んでも意味が薄い)
package-lock.json
yarn.lock
pnpm-lock.yaml
# 自動生成コード
generated/
__generated__/
*.generated.ts
prisma/migrations/
# メディアファイル
*.png
*.jpg
*.svg
*.ico
*.woff
*.woff2
# テストのスナップショット(大量かつ自動生成)
**/__snapshots__/
*.snap
# CI/CD設定(通常編集しない)
.github/workflows/
# ドキュメント(大きいが開発時は不要なことが多い)
docs/api-reference/
CHANGELOG.md
効果測定
.claudeignore導入前後で、ファイル探索時のトークン消費を比較しました。
| 指標 | Before | After |
|---|---|---|
| 1セッションあたりのファイル読み込み | 平均45ファイル | 平均18ファイル |
| ファイル探索のトークン消費 | 約8,200/回 | 約3,100/回 |
| 削減率 | — | 約62% |
ポイント: .claudeignoreは.gitignoreと構文が同じなので、既存の.gitignoreをベースに「Claudeに読ませる必要がないもの」を追加するだけです。
テクニック6: Skill設計でプロンプト再利用率を上げる
毎回同じような指示を書いていませんか? Claude Codeでは、CLAUDE.mdやプロジェクト設定にスキル(定型プロンプトパターン)を定義しておくことで、繰り返しの指示トークンを削減できます。
Before: 毎回フルで指示(約450トークン/回)
Reactコンポーネントを作成してください。
- TypeScriptで書いてください
- Props型を別途定義してください
- デフォルトexportを使ってください
- Storybookのstoryファイルも作ってください
- テストファイルも作成してください(Vitest + Testing Library)
- コンポーネントはsrc/components/配下に置いてください
- CSS Modulesでスタイリングしてください
- アクセシビリティ属性を忘れないでください
After: スキルとして定義 → 短い指示で呼び出し(約80トークン/回)
CLAUDE.mdに追加:
## Skills
### new-component
When asked to create a new React component:
1. Create `src/components/{Name}/{Name}.tsx` with Props type
2. Use default export, CSS Modules (`{Name}.module.css`)
3. Include aria-* attributes for accessibility
4. Generate `{Name}.stories.tsx` (Storybook CSF3)
5. Generate `{Name}.test.tsx` (Vitest + Testing Library)
利用時のプロンプト:
ProductCardコンポーネントを作成して。商品画像・名前・価格・カートボタンを含む。
スキルが定義されているので、これだけで6ファイル(コンポーネント・スタイル・Story・テスト)が規約通りに生成されます。
削減効果
| 指標 | Before | After |
|---|---|---|
| 指示プロンプトのトークン数 | 約450/回 | 約80/回 |
| 週あたりのコンポーネント作成 | 平均12回 | 平均12回 |
| 週の削減トークン数 | — | 約4,440トークン |
| 再指示・修正の発生率 | 30% | 5% |
再指示・修正の削減が特に大きいです。スキル定義により出力品質が安定するため、「やり直し」のトークン消費が激減しました。
テクニック7: 月次コスト推移と削減効果まとめ
すべてのテクニックを段階的に導入した結果の推移です。
各テクニックの削減貢献度(推定)
| # | テクニック | 削減貢献度 | 難易度 |
|---|---|---|---|
| 1 | コスト可視化 | 直接削減なし(前提) | ★☆☆ |
| 2 | CLAUDE.mdダイエット | 約8% | ★☆☆ |
| 3 | セッション分割 | 約30% | ★★☆ |
| 4 | /compact・/clear活用 | 約12% | ★☆☆ |
| 5 | .claudeignore | 約15% | ★☆☆ |
| 6 | スキル設計 | 約10% | ★★☆ |
| 7 | 総合運用定着 | 残り全体 | ★★★ |
※各テクニックの効果は重複するため、単純合算は52%を超えます。実際には相乗効果として52%削減を達成しています。
まとめ
- セッション分割が最大の削減効果(約30%)を持つ — 1タスク1セッションの原則を徹底し、コンテキストの肥大化を防ぐことが最重要です
- 「固定コスト」を減らす施策(CLAUDE.md圧縮・.claudeignore)は導入が簡単で即効性が高い — 設定ファイルを1回整えるだけで、全セッションに効果が波及します
- 可視化なくして最適化なし — まずトークン消費を記録・分析し、自分のプロジェクトにおけるボトルネックを特定することが出発点です
コスト最適化は一度仕組みを作れば、日々の運用負荷はほぼゼロです。月$150以上の節約は年間$1,800以上。浮いた予算でさらにAIツールを活用する好循環を作りましょう。