Anthropic 公式ブログ「Maximizing the value of your Claude Code sessions」(2026年8月14日・Lydia Hallie 著)をもとに、初心者の方がそのまま実行できるように再構成した学習用テキストです。専門用語はすべて本文中と巻末の用語集で説明します。
むかし、プログラムを書く道具(エディタ)は、買い切りか無料でした。1日にテストを1個直しても50個直しても、道具の値段は同じ。つまり「作業1回あたりの値段」という考え方自体がなかったのです。
ところが Claude Code のような AIエージェント型のコーディングツールでは話が変わります。使った分(=トークンの量)だけ支払う仕組みなので、まったく同じ修正作業でも、やり方によって値段が変わるのです。
公式ブログでは、こんな対比が紹介されています。
Claude がテストファイルと対象ファイルの2つだけを読み、修正して、数ターンで終了。読んだのは必要な2ファイルだけ。
Claude がまずリポジトリ全体を検索(grep)し、関係ない十数個のファイルを開いてから、ようやく同じ2ファイルにたどり着く。しかも、そのあいだ毎ターン、朝から会話に溜まった全部の履歴を引きずったまま。結果は同じ修正なのに、消費トークンは何倍にもなります。
「節約」とは、トークンの総量を減らすことではありません。使うトークンを、本当に頼んだ作業のためだけに使わせることです。ムダな検索・ムダな履歴・ムダな出力を減らせば、同じお金でより多くの作業ができます。
AIは文章を1文字ずつではなく、「トークン」という小さなかたまり単位で読み書きします。英語なら単語の一部、日本語なら1〜2文字程度が1トークンになるのが目安です。Claude Code の料金(または利用枠の消費)は、このトークンの数 × 種類ごとの単価で決まります。
請求書には「トークン数」と書かれますが、実際に買っているのは推論(inference)の時間、つまり GPU などの計算機がモデルを動かす時間です。だから「大きいモデルほど高い」「出力は入力より高い」といった価格差が生まれます。ここは第2章で詳しく見ます。
初心者が最初に驚くポイントがここです。Claude が読んだファイルや、実行したコマンドの出力は、会話に追加された瞬間から、そのセッションが終わるまで毎ターン、モデルに送り直され続けます。
たとえるなら、会議のたびに過去の議事録を全部音読してから本題に入るようなものです。キャッシュ(後述)のおかげで再送は安くなりますが、タダではありませんし、モデルが毎回「考えなくていい情報」に気を取られる原因にもなります。
影響します。同じセッションを続けている限り、そのログは 30 ターン目のリクエストにも含まれて送信されます。だからこそ「不要になった履歴は捨てる」(第6章の /clear や /compact)が効くのです。
1トークンあたりの値段は、次の3つで決まります。
大きいモデルは、入力を読むのも出力を書くのも多くの計算をします。難しい・曖昧な問題には大きいモデル、決まりきった作業には小さいモデルが原則です。以降で学ぶすべての節約テクニックは、最終的にモデルの単価が掛け算されます。つまり「モデル選び」は節約の土台です。
リクエストは2段階で処理されます。まずプリフィル(prefill):システムプロンプト、CLAUDE.md、あなたのメッセージ、それまでに読んだファイルやコマンド出力……つまり「入力」をまとめて読み込む段階。次にデコード(decode):思考・ツール呼び出し・回答文といった「出力」を、1トークンずつ順番に生成する段階です。
200トークンの返答は、モデルを200回連続で動かすことを意味します。1トークンあたりのGPU占有時間がずっと長いため、出力は入力の約5倍の価格になっています。
出力トークンの多くは「思考(thinking)」に使われます。1ターンあたりどれだけ考えるかは /effort コマンドで調整でき、選んだ値は次のセッションにも引き継がれます。
直前に見たリクエストと先頭からまったく同じトークン列なら、サーバーは前回の計算結果を使い回せます。これがプロンプトキャッシュです。キャッシュからの読み出しは通常入力の 0.1 倍という激安価格。書き込みは最大 2 倍かかりますが、書き込みは1回きり、読み出しは以降の全ターンで発生するので、トータルでは圧倒的に得です。第3章でじっくり見ます。
新しいセッションを開いたら、まず次の2つを打って「いま自分が何に乗っているか」を確認しましょう。どちらも前回選んだ値を覚えているので、無自覚に高い設定のまま走らないためのチェックです。
/model ← いまのモデルを確認(例:軽作業なのに大型モデルになっていないか) /effort ← いまの思考量レベルを確認
さらに、単純作業だと最初から分かっているセッションなら、起動時に思考を切る方法もあります(Fable 5 を除く)。
MAX_THINKING_TOKENS=0 claude ← そのセッションだけ thinking をオフ。/effort low のさらに下
この章がこの教科書の心臓部です。「fix the failing test in utils.test.ts(utils.test.ts の失敗テストを直して)」と入力したとき、裏側で何が起きるかを1リクエストずつ追いかけます。
Claude Code はキャッシュを全自動で管理します。何かをオンにする必要はありません。あなたがすべきことは「キャッシュを壊さない使い方」を覚えることだけです(第4章)。
Claude Code は、システムプロンプト(ツール定義を含む)+ CLAUDE.md + あなたのメッセージをまとめて送信します。キャッシュはまだ空なので、全部がフル価格でプリフィルされ、同時にキャッシュへ書き込まれます。
モデルは「見たことのないテストは直せない」ので、少し考えて utils.test.ts の Read(読み取り)を要求します(ここは出力トークン)。Claude Code がファイルを会話に追加して、全体をもう一度送信。ただし今度は、リクエスト1の分はキャッシュから 0.1 倍の価格で読み出され、フル価格なのは新しく増えた部分(Read 呼び出しとファイル本文)だけです。
同じパターンの繰り返しです。リクエスト1〜2の内容はキャッシュから、2つめのファイルだけがフル価格。
モデルが Edit(編集)を返し、Claude Code が適用して結果を追記、また全体を送信。新しいのは Edit とその結果だけ。それより前は全部キャッシュ読み出しです。
npm test を実行し、その出力を追記して送信。テストが通れば、モデルは短いまとめを返して終了。ツール呼び出しがなければ次のリクエストは発生しません。
たった1つの小さな修正で5回のリクエストが飛び、そのどれもが「会話の全履歴」を含んでいました。典型的なターンは極端に偏っていて、入っていくのは数万トークン、出てくるのは数百トークン。それでもフル価格で処理されるのは「そのターンで新しく増えた部分」だけです。
| 項目 | 価格 | 発生するもの |
|---|---|---|
| 過去の履歴 | 0.1倍(キャッシュ読み出し) | 毎ターン、履歴全体 |
| そのターンの新規部分 | フル価格(入力) | 新しく読んだファイル、コマンド出力など |
| モデルの返答 | 約5倍(出力) | 思考・ツール呼び出し・回答文 |
定額プラン(Pro など)では価格を直接見ることはありませんが、同じ仕組みで利用枠(リミット)が消費されます。節約テクニックはそのまま「リミットが長持ちする」に置き換えて読んでください。
キャッシュはリクエストの先頭から順に一致していないと使えません。送信順はいつも「ツール定義 → システムプロンプト → 会話(先頭に CLAUDE.md)」。この列の前のほうが変わると、そこから後ろが全部フル価格で再計算になります。会話の末尾に追記されるツール結果が理想形(後ろに何もないから)で、逆に前方を変える操作が危険です。
| 操作 | 何が起きるか |
|---|---|
/model(途中でモデル変更) | モデルごとにキャッシュが別なので、次のターンで会話全体がフル価格で再プリフィル。plan モードの出入りで毎回モデルが切り替わる opusplan も同じ。 |
/effort(途中で思考量変更) | effort もキャッシュのキーの一部。変更すると同じく全再計算。だから途中変更時に確認を求められる。 |
| fast mode を途中でオン | これもキーの一部。しかも再プリフィルは fast mode 価格。使うならセッションの最初からオンに。(オフに戻すのはキャッシュ的には無料) |
/compact(会話の要約圧縮) | 会話が短い要約に置き換わるので、以前の会話とは一致しなくなる(前にあるシステムプロンプトは生き残る)。要約の作成自体は、元の会話がまだキャッシュにあるうちなら安い。 |
| 時間経過(放置) | キャッシュの有効期限はサブスクで1時間、APIキーで5分(ENABLE_PROMPT_CACHING_1H=1 で1時間に延長可)。毎ターンで時計はリセットされるが、それ以上空けて戻ると次のターンで全再プリフィル。古いセッションの再開(resume)もほぼ確実にキャッシュ切れ。 |
誤解しないでください。モデルや effort を変えてはいけない、という話ではありません。変えるのが安い瞬間と高い瞬間がある、という話です。
セッションの開始直後、または /clear の直後。まだキャッシュに大した量が入っていないので、壊れても被害が小さい。
長い会話のど真ん中。数万トークンの履歴が全部フル価格で再計算されます。
/rewind「直近の数ターン、変な方向に行っちゃったな。ここだけ無かったことにしたい」——そんなときに /compact で全体を要約し直すのはもったいない。/rewind なら会話の末尾を切り落とすだけなので、それより前のキャッシュはそのまま生きていて、コストはゼロです。
# 使い分けの目安 /rewind ← 直近の失敗ターンだけ捨てたい → キャッシュ無傷・コストゼロ /compact ← 会話全体を短くまとめたい → 必ずいくらかコストがかかる
昼休みや外出など、1時間以上キーボードを離れる前に /compact を打つ習慣をつけましょう。理由:要約を作る作業は「元の会話がまだキャッシュにあるうち」なら格安ですが、キャッシュが切れた後だと会話全体をフル価格で読み直してから要約することになるからです。同じ操作でも、打つタイミングで値段が変わります。
fast mode はキャッシュのキーの一部なので、会話全体が再プリフィルになり、しかもその再計算は fast mode 価格で請求されます。fast mode を使うと決めているなら、セッションの最初からオンにしましょう。ちなみにオフへ戻す方向はキャッシュ的には無料です。
セッションの総コストは、突き詰めるとこの3つで決まります:①コンテキストに何トークン入るか、②それが何ターン居座るか、③同時にいくつのコンテキストを走らせるか。この章は①、次章が②、第7章が③です。
/context で棚卸しあなたが1文字も打つ前から、コンテキストにはツール定義・システムプロンプト・CLAUDE.md・起動時に読み込まれる各種設定が入っています。まずこれを見える化しましょう。
新規セッションで /context を実行してください。「何も頼んでいないのに、すでに何が載っているか」が一覧できます。そのうえで:
① CLAUDE.md はスリムに ― 具体的で常時必要な指示だけを残し、特定作業でしか使わない手順は スキル(skills)に移す。スキルは使うときだけ読み込まれるので、普段のコンテキストを圧迫しません。
② 使わない MCP サーバーはオフ ― このセッションで不要な MCP サーバーがあれば /mcp で無効化。ツール定義の分だけ毎ターンが軽くなります。
セッション中にコンテキストへ入るものの大半はツールの結果、つまり Claude が読んだファイルと、実行したコマンドの出力です。Claude がどれだけ読むかは、あなたの指示がどれだけ具体的かでほぼ決まります。
| 指示の仕方 | Claude の動き | コスト |
|---|---|---|
| 「テストが失敗してる」 | どのテストか分からないので grep で検索 → 候補ファイルを何個も開く → やっと特定。開いた無関係ファイルは全部その後も居座る。 | 高い |
「utils.test.ts の失敗テストを直して」 | 検索は不要。ただしファイルを読むための Read 呼び出しが1回。 | 中 |
「@utils.test.ts の失敗テストを直して」 | @メンションすると送信前にファイルが添付されるので、Read 呼び出しすら不要。最初のリクエストに最初から入っている。 | 最安 |
ファイル本文がコンテキストを占める量は、どの方法でも同じです。そして同じ会話で同じファイルを2回 @メンションすると、2部目のコピーが添付されてしまうのが一般的な挙動です。@メンションは1会話につき1回で十分。一度入れたファイルはずっとそこにいます。
もうひとつコンテキストを埋めるのが、コマンドの出力です。テスト・ビルド・git log ……画面に出たものは、読んだファイルと同じように会話へ追記され、同じだけの期間居座ります。
面白いことに、巨大すぎる出力はむしろ安全です。30,000文字を超えると Claude Code が自動で出力をファイルに書き出し、会話には短いプレビューとファイルパスしか入れません(しきい値は BASH_MAX_OUTPUT_LENGTH で変更可)。
危険なのはしきい値未満の「中途半端に長い」出力です。たとえば「400件のテストがすべて合格」を1行ずつ律儀に印刷するテストランナー。この400行は自動退避の対象外なので、残りの全ターンにくっついてきます。
毎日使う2〜3個のコマンドを、静音フラグ込みの完成形で CLAUDE.md に書いておきましょう。たとえば:
# CLAUDE.md に書く例
テストを1ファイルだけ実行するときは次のコマンドを使うこと:
npx vitest run <file> --reporter=dot
--reporter=dot は結果を「.」の羅列で表示する静音オプションです。これだけで、毎セッション数百行ぶんの出力と、Claude が試行錯誤するターンが1つ消えます。Claude 自身がフラグや tail で出力を絞ってくれることも多いですが、任せきりにしたくない場合は、実行前にコマンドを書き換えるフック(hook)の例が公式ドキュメントにあります。
同じ量の仕事なら、1本の長いセッションより、数本の短いセッションのほうが安くつきます。しかも想像以上に差が出ます。なぜなら40ターン目のリクエストは、その前の39ターンぶんの履歴も一緒に読み直しているからです。
原則はシンプル:1つのタスクの文脈を、次のタスクへ持ち込まない。
/clear ← 新しい別のタスクを始めるとき(会話を空にする) /compact ← 同じタスクの前半が終わり、要点だけ残して続けたいとき /rewind ← 直近の失敗ターンだけ捨てたいとき(第4章参照・コストゼロ)
/clear する前に /renameあとでそのセッションに戻る可能性があるなら、消す前に分かりやすい名前を付けておきましょう。
/compact には「残してほしいもの」を伝える要約時に何を残すか指示できます。毎回同じ指示になるなら、CLAUDE.md に「Compact instructions」というセクションを作って書いておけば自動で効きます。
コンテキスト100万トークンのモデルでは自動 compact の発動が遠くなります。以前の位置に安全網を戻したいなら /autocompact 200k(Claude Code v2.1.221 以降)。
/loop(自動繰り返し)キーボードを触っていない間に走るターンにも注意しましょう。/loop は設定したセッションの中でフルターンとして発火し、そのたびに会話全体を引きずります。さらに前回のターンから1時間以上空いていれば、キャッシュミス(全再プリフィル)まで重なります。
ループを回したいときは、別のターミナルで新しいまっさらなセッションを開いて、そこから実行する。履歴ゼロのセッションなら、毎回引きずる荷物がありません。
自分のコンテキストに入れたくない作業を、別のコンテキストで実行してもらう仕組みがサブエージェントです。サブエージェントは自分専用のコンテキストウィンドウを持ち、システムプロンプト・ツール・あなたの CLAUDE.md は引き継ぎますが、あなたの会話履歴は持っていきません。自分のターンを回して作業し、メインの会話に返ってくるのは最終的な答えだけ。途中で読んだものは、終わったら全部捨てられます。
| 場面 | 判定 | 理由 |
|---|---|---|
| 巨大なログを調べて原因の1行を見つける | ◎ 得 | ログ全文はサブエージェント側で消化され、メインには結論だけが返る。メインのコンテキストが汚れない。 |
| 小さな1回きりの作業 | △ 損 | 会話履歴を知らないので、メインがすでに読んだものを読み直すことがあり、その分のターン代も払う。ただのオーバーヘッド。 |
Claude はログ調査のような作業では自分からサブエージェントを使うことが多いですが、使ってくれないときは自分で頼めます。
# 頼み方の例(日本語でOK)
このログをサブエージェントで調べて、エラーの原因だけ報告して
メインセッションが受け取るのはサブエージェントが報告しようと選んだ内容だけです。詳細が必要なら「〜も含めて報告して」と最初に指定しましょう。
何度も投げる決まった雑務(ログ整形、定型チェックなど)があるなら、サブエージェント定義を作って model: haiku(または sonnet)を指定しておきましょう。指定しないと、メインセッションと同じ(高い)モデルで走ってしまいます。雑務を小型モデルに固定するだけで、恒常的な節約になります。
| タイミング | やること | 効果 |
|---|---|---|
| タスクの切れ目 | /clear を打つ | 前のタスクの無関係な履歴を送り続けない |
| セッション開始時 | モデルと effort を先に決める(/model /effort で確認) | 途中変更によるキャッシュ全壊を防ぐ |
| ファイルを指すとき | ファイル名を書かず @ファイル名 で添付(1会話1回) | Read 呼び出しや検索のターンを丸ごと省略 |
| コマンド実行時 | 静音フラグを付ける/サブエージェントで実行 | 数百行の出力が全ターンに居座るのを防ぐ |
| 新規セッションで一度 | /context で棚卸し(CLAUDE.md・MCP の整理) | 「打つ前から重い」状態を解消 |
| 離席の前 | /compact を打つ | キャッシュ失効(1時間)前なら要約が格安で済む |
記事の締めくくりは「どこから手を付けるか」でした。優先順位はおおむね次のとおりです。
すべての単価に掛け算される土台。難しい問題にだけ大きいモデルを。
途中の /model・/effort・fast mode、1時間超の放置。
@メンション・静音フラグ・/context 棚卸し・サブエージェント。
タスクごとに /clear、区切りで /compact、失敗ターンは /rewind。
総量を減らすことではなく、使うトークンを、頼んだ作業そのものに向けること。ムダな検索・履歴・出力を削るのが本質です。
出力は1トークンずつ逐次生成されるから。200トークンの返答=モデルを200回連続で回すことなので、GPUの占有時間が入力処理よりはるかに長くなります。
キャッシュの有効期限(サブスクで1時間)を過ぎているため、次のターンで会話全体がフル価格で再プリフィルされました。離席前に /compact しておけば、短い要約だけの再読み込みで済んだはずです。
2回目の @メンションで同じファイルの2部目のコピーが添付されがちです。一度添付したファイルは会話に残り続けるので、2回目以降は普通に「main.py のここも」とファイル名だけで指せば十分です。
/mcp でオフに。model: haiku 指定で安く運用できる。/effort で変更。前回の値が次セッションにも引き継がれる。本テキストは以下の記事の内容を、初学者向けに再構成・翻訳・補足したものです。数値(0.1倍・約5倍・1時間/5分・30,000文字など)はすべて原典に基づきます。仕様は今後変更される可能性があるため、最新情報は原典と公式ドキュメントを確認してください。
・Lydia Hallie, “Maximizing the value of your Claude Code sessions” (Claude Blog, 2026-08-14)
https://claude.com/blog/maximizing-the-value-of-your-claude-code-sessions
・関連記事:“Choosing a Claude model and effort level in Claude Code”
https://claude.com/blog/claude-model-and-effort-level-in-claude-code