Claude Codeのコンテキスト節約術 ― トークンを無駄にしない10の方法
コンテキストウィンドウを理解し、トークン消費を最適化するテクニック集
はじめに
Claude Codeを使っていて「急にレスポンスの質が落ちた」「セッションが重くなった」と感じたことはありませんか?その原因の多くはコンテキストウィンドウの枯渇です。コンテキストを賢く管理すれば、コストを抑えながら高品質な出力を維持できます。
この記事では、コンテキストウィンドウの仕組みから、トークンを無駄にしない10の実践テクニックまでを徹底解説します。
コンテキストウィンドウとは?
コンテキストウィンドウとは、AIモデルが一度に「記憶」できる情報量の上限です。人間の短期記憶のようなもので、会話の履歴、読み込んだファイルの内容、AIの応答すべてがこの枠内に収まる必要があります。
コンテキストウィンドウの基本
- Claude Sonnet 4:約200Kトークン(約15万〜20万語相当)
- Claude Opus 4:約200Kトークン
- 入力(プロンプト+履歴+ファイル)と出力の合計がこの枠に収まる必要がある
- 枠を超えると古い情報から「忘れて」いく(または処理できなくなる)
Claude Codeでは、ファイルの読み書きやコマンド実行の結果もコンテキストに含まれます。大きなファイルを読んだり、長いログ出力を受け取ったりすると、コンテキストが急速に消費されます。
コンテキストの構成要素
| 要素 | 消費トークン目安 | 備考 |
|---|---|---|
| ユーザーのプロンプト | 数十〜数百 | 短い指示なら少ない |
| 会話の履歴 | 蓄積で増大 | 長いセッションほど増える |
| 読み込んだファイル | 数百〜数万 | 大きなファイルは要注意 |
| ツール実行結果 | 数百〜数千 | コマンド出力やエラーログ |
| CLAUDE.md等の設定 | 数百〜数千 | 毎回読み込まれる |
| AIの応答 | 数百〜数千 | 長い応答も消費する |
トークンの仕組みを理解する
トークンはAIがテキストを処理する最小単位です。英語では1単語がおよそ1トークンですが、日本語は1文字が1〜3トークンになるため、同じ内容でも英語より多くのトークンを消費します。
トークン数の目安
| テキスト | 概算トークン数 |
|---|---|
| 英語100単語 | 約100トークン |
| 日本語100文字 | 約50〜150トークン |
| 一般的なPHPファイル(200行) | 約1,000〜2,000トークン |
| package.json(中規模プロジェクト) | 約500〜1,000トークン |
| npmの長いエラーログ | 数千〜数万トークン |
トークンとコストの関係
Claude CodeはAPIベースで動作するため、トークン消費量が直接コストに影響します。入力トークン・出力トークンそれぞれに料金がかかり、無駄な消費を減らすことはコスト削減に直結します。
コスト意識を持つべき理由
- 入力トークン:会話履歴が長くなるほど毎回のリクエストで消費が増大
- 出力トークン:入力より単価が高い(約3〜5倍)
- コンテキストが埋まると品質が低下し、やり直しが増えてさらにコスト増
なぜコンテキスト管理が重要なのか
コンテキスト管理は「コスト」と「品質」の2つの観点で重要です。
1. コストへの影響
セッションが長くなると、過去の会話履歴すべてが毎回のリクエストに含まれます。つまり10回目のメッセージを送るとき、過去9回分の会話もすべて入力トークンとして課金されます。コンテキストを効率的に使えば、同じ作業でもコストを大幅に削減できます。
2. 出力品質への影響
コンテキストウィンドウが埋まってくると、AIの「注意力」が分散します。重要な情報が大量の無関係な情報に埋もれ、指示を見落としたり、不正確な応答が増えたりします。適切なコンテキスト管理は、出力品質の維持に不可欠です。
コンテキスト管理は「部屋の整理整頓」と同じです。散らかった部屋(大量の無関係な情報)では必要なもの(重要な指示)を見つけにくくなります。
トークンを無駄にしない10の方法
方法1: 新しいタスクは新しいセッションで始める
最もシンプルかつ効果的な方法です。タスクが変わったら、新しいClaude Codeセッションを開始しましょう。
実践例
# タスクA: バグ修正が完了 → セッション終了
# タスクB: 新機能追加 → 新しいセッションを開始
claude
# 前のセッションの文脈を引きずらず、クリーンな状態で開始
> src/auth/login.phpにOAuth2認証を追加してください
なぜ効果的か
- 前のタスクの会話履歴(不要な情報)がリセットされる
- AIが新しいタスクに100%集中できる
- コンテキストの大半を現在のタスクに使える
方法2: /compactコマンドを定期的に使う
/compactは会話履歴を圧縮して、重要な情報だけを残すコマンドです。長いセッションでは定期的に使いましょう。
# コンテキストが増えてきたと感じたら
/compact
# カスタム指示を添えて圧縮することも可能
/compact 現在のタスクはログイン機能の実装。完了した部分と残りのTODOを保持して
方法3: 明確で簡潔なプロンプトを書く
曖昧で長いプロンプトはトークンを消費するだけでなく、AIの理解も妨げます。要件を明確に、簡潔に伝えましょう。
悪い例 vs 良い例
| 悪い例(冗長) | 良い例(簡潔) |
|---|---|
| えーっと、今ログイン機能を作っているんですけど、なんかうまくいかなくて、PHPでセッションを使ったログイン処理を書きたいんですが、データベースはSQLiteを使っていて、パスワードはハッシュ化したいなと思っているんですけど、どうすればいいですか? | PHPでセッションベースのログイン機能を実装してください。要件:SQLite3使用、パスワードはpassword_hash()でハッシュ化、CSRF対策込み。対象ファイル:src/auth/login.php |
方法4: CLAUDE.mdに繰り返す情報をまとめる
プロジェクトのルール、コーディング規約、技術スタックなどを毎回プロンプトで伝えるのは無駄です。CLAUDE.mdに書いておけば、自動的に読み込まれます。
# CLAUDE.md に記載しておく例
## コーディング規約
- PHPはPSR-12に従う
- SQLは必ずプリペアドステートメントを使用
- 出力はhtmlspecialchars()でエスケープ
- インデントはスペース4つ
方法5: ファイルパスで参照し、内容を貼り付けない
Claude Codeはファイルを自分で読めます。プロンプトにコードを貼り付けるのではなく、ファイルパスを伝えましょう。
比較
# 悪い例:コードを貼り付ける(トークン大量消費)
このコードを修正して:
<?php
function login($user, $pass) {
// ... 100行のコード ...
}
# 良い例:ファイルパスで参照(最小限のトークン消費)
src/auth/login.phpのlogin()関数にCSRF対策を追加してください
方法6: --printフラグでワンショット実行する
単発の質問やファイル生成には--print(-p)フラグを使います。対話セッションを開始せずに結果を得られるため、無駄なコンテキスト消費がありません。
# ワンショットで質問
claude -p "PHPでCSRFトークンを生成する関数を書いて"
# パイプで入力を渡す
cat error.log | claude -p "このエラーの原因と対策を教えて"
方法7: 大きなタスクを小さなセッションに分割する
「アプリ全体を作って」のような巨大なタスクは、コンテキストを使い果たします。自然な区切りで分割しましょう。
タスク分割の例
- セッション1:データベーススキーマの設計とマイグレーションファイル作成
- セッション2:認証機能(ログイン・ログアウト・セッション管理)の実装
- セッション3:CRUD APIエンドポイントの実装
- セッション4:フロントエンドのUI実装
- セッション5:テスト作成と全体の統合テスト
方法8: .gitignoreで不要なファイルの読み込みを防ぐ
Claude Codeはプロジェクト内のファイルをスキャンします。.gitignoreに適切なパターンを設定し、不要なファイルの読み込みを防ぎましょう。
# .gitignore に追加すべきパターン
node_modules/
vendor/
.git/
*.log
dist/
build/
*.sqlite
*.db
方法9: 不必要なやり取りを避ける
「ありがとう」「了解です」のような応答もトークンを消費します。効率的な作業のためには、指示を一度にまとめて伝えましょう。
非効率なやり取り(6回のやり取り)
User: ログイン機能を作って
AI: (応答)
User: バリデーションも追加して
AI: (応答)
User: エラーメッセージも表示して
AI: (応答)
効率的なやり取り(2回のやり取り)
User: ログイン機能を実装してください。要件:
1. メール/パスワードでのログイン
2. 入力バリデーション(空チェック、メール形式)
3. エラーメッセージの表示(日本語)
AI: (すべてを含む応答)
方法10: 簡単なタスクにはHaikuモデルを使う
Claude Codeでは使用モデルを切り替えられます。単純な質問やフォーマット変換などにはHaikuモデルを使えば、高速かつ低コストです。
# モデルを指定して実行
claude --model claude-haiku-4-5-20251001 -p "このJSONをCSVに変換して"
# 設定でデフォルトモデルを変更
claude config set model claude-haiku-4-5-20251001
トークン使用量のモニタリング
自分がどのくらいトークンを消費しているか把握することが、効率化の第一歩です。
モニタリング方法
- セッション内の表示:Claude Codeはセッション中にコンテキスト使用率を表示します。ステータスバーの表示を確認しましょう
- /costコマンド:現在のセッションのトークン消費量とコストを確認できます
- Anthropicダッシュボード:APIの使用量とコストを管理画面で確認できます
# セッション中のコスト確認
/cost
# 出力例:
# Session cost: $0.42
# Input tokens: 45,230
# Output tokens: 12,180
コンテキスト使用率の目安
| 使用率 | 状態 | 推奨アクション |
|---|---|---|
| 0〜30% | 余裕あり | 通常通り作業を継続 |
| 30〜60% | 中程度 | タスクの区切りで/compactを検討 |
| 60〜80% | 注意 | /compactを実行、または新セッションを検討 |
| 80%以上 | 危険 | 新セッションを開始すべき |
まとめ
コンテキスト節約の10の方法を振り返りましょう。
| # | 方法 | 効果 | 難易度 |
|---|---|---|---|
| 1 | 新タスクは新セッション | ★★★ | 簡単 |
| 2 | /compactの定期的な使用 | ★★★ | 簡単 |
| 3 | 明確で簡潔なプロンプト | ★★☆ | 中程度 |
| 4 | CLAUDE.mdの活用 | ★★★ | 簡単 |
| 5 | ファイルパスで参照 | ★★☆ | 簡単 |
| 6 | --printでワンショット実行 | ★★☆ | 簡単 |
| 7 | タスクの分割 | ★★★ | 中程度 |
| 8 | .gitignoreの整備 | ★★☆ | 簡単 |
| 9 | やり取りの最小化 | ★☆☆ | 簡単 |
| 10 | Haikuモデルの活用 | ★★☆ | 簡単 |
これらのテクニックを組み合わせることで、コストを50%以上削減しながら、出力品質を維持・向上できます。まずは「新タスクは新セッション」と「/compactの活用」から始めてみましょう。