💰

Claude Codeのトークン消費を節約する

に公開

ClaudeやClaude Codeはエンジニアにとって非常に強力な開発支援ツールとなりますが、
月20ドルのProプランではすぐに上限に達してしまいます。
設定をしっかりすることで不要な出力をさせずに、トークン消費を節約します。
制限がありつつも1日の利用できる回数を増やします。

指示を工夫する

普段のチャットのように曖昧な指示はAIが混乱し、コードが冗長化され無駄にトークンが消費されてしまいます。具体的かつ明確な指示にします。

悪い例: ニュースサイトを取得して表示するサイトを作って

良い例:フロントエンドはReact、TypeScript、バックエンドはFastAPIを使用
Pydanticでリクエスト/レスポンスモデルを定義
記事が重複しないようにURLのチェックをする
通信のエラーハンドリングをする

一度に大量の指示をしない

一度にすべてを指示すると、タスクを立ててから順番に実装してくれるとはいえ
限界があります。必要な機能を洗い出し一つずつ実装させましょう。

最近GoogleからリリースされたAntigravityが良い挙動をしています。

Phase 1: Core Data & Search Enhancements
Phase 2: User Authentication & Management
Phase 3: Personalization (Bookmarks & Likes)
Phase 4: Advanced Features & Optimization

確認するファイルを指定する

ファイルを指定せずに修正してと言った指示をすると、プロジェクト全体を確認し始めます。
src/main.pyを見てと言ったようにファイル単位、フォルダ単位で指示するようにしましょう

また特定の関数を修正させる方法も有力です。

src/main.pyのrefresh_articles関数に更新機能を追加して

解説書を作成させない

Claude 4.5 Sonnetになってから、出力が冗長化する傾向にあり、必要以上なアウトプットを出すことがしばしばあります。

※Dockerfileのビルド手順のmdファイルを出力、デプロイ手順を解説など

必要な場合は良いがすでに知っていて不要な場合があるので積極的に出力しないように制御する。

1. settings.jsonでの制御

.claude/settings.json:

json{
  "permissions": {
    "deny": [
      "Write(./docs/**)",
      "Write(./documentation/**)",
      "Write(README.md)",
      "Edit(README.md)"
    ]
  }
}

これにより物理的にドキュメントファイルへの書き込みを制限できます。

2. hooksでの制御

.claude/settings.json:

json{
  "hooks": {
    "PreToolUse": {
      "Write": "if [[ \"$CLAUDE_TOOL_INPUT\" =~ (README|docs/|documentation/) ]]; then echo 'ドキュメント作成は禁止されています' && exit 1; fi"
    }
  }
}

.claude/instructions.mdファイルで明示的に出力させないようにします。
※記事下部

https://code.claude.com/docs/ja/settings

設定

場所: ~/.claude/settings.json

{
  "model": "claude-sonnet-4-5-20250929",
  "outputStyle": "Concise",
  "permissions": {
    "defaultMode": "acceptEdits",
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Read(./.aws/**)",
      "Bash(curl:*)",
      "Bash(wget:*)"
    ]
  },
  "env": {
    "DISABLE_NON_ESSENTIAL_MODEL_CALLS": "1",
    "DISABLE_COST_WARNINGS": "0"
  }
}

場所: .claude/instructions.md

# Python開発ルール

## 出力原則
- コード直接出力、説明最小化
- 手順説明・事前解説禁止
- エラー修正は即座にコードで対応
- **タスク分解時にドキュメント作成タスクを含めない**

## タスク管理ルール

### 禁止タスク
以下のタスクは作成しない:
- ドキュメント作成
- README更新
- コメント追加
- docstring追加(コード作成時に同時に含める)
- 使用方法説明文書

### 許可タスク
- コード実装(docstring含む)
- テスト作成
- バグ修正
- リファクタリング
- 設定ファイル作成

### タスク分解の原則
1. コードとdocstringは常に1つのタスクとして扱う
2. ドキュメントが必要な場合は、コード実装タスク内で完結させる
3. 「ドキュメント」「README」「説明」などの単独タスクは作成しない

## コーディング規約

### 必須事項
- PEP8厳守(79文字制限)
- `from __future__ import annotations` 使用
- 型ヒント必須(小文字型: `list`, `dict`, `any`)
- Googleスタイルdocstring必須(コード作成と同時)
- **全コメント日本語**

### import規則
from __future__ import annotations

# 標準ライブラリ
import os

# サードパーティ
import numpy as np

# ローカル
from .module import function

### 禁止事項
- 遅延import(関数内import)
- bare except
- マジックナンバー
- 大文字型ヒント(List, Dict等)
- コードとドキュメントの分離タスク化

## 応答パターン
- 通常: コード即出力(docstring込み)
- 不明点: 1質問→即コード
- 修正: 修正コード+変更点1行

## テンプレート
"""モジュール説明"""

from __future__ import annotations

# 定数
MAX_ITEMS = 100


def function(param: str) -> dict[str, any]:
    """関数説明
    
    Args:
        param (str): 説明
        
    Returns:
        dict[str, any]: 説明
    """
    # 処理
    result = {"value": param}
    return result

## タスク作成例

### ❌ 悪い例
タスク1: ユーザー管理機能の実装
タスク2: ユーザー管理機能のドキュメント作成
タスク3: README更新

### ✅ 良い例
タスク1: ユーザー管理機能の実装(docstring・コメント含む)
タスク2: ユーザー管理機能のテスト作成

さいごに

Claude Codeは非常に強力なコーディングサポートツールですが
まだまだ限界はあります。できることできないことを理解し
うまく指示をすることで、理想に近い挙動をしてくれます。
モデルがアップデートされることで挙動が変わることがしばしばありますが
その都度向き合って正しい設定を見つけましょう

Discussion