Claudeのトークンとは?Codeの料金と仕組み
Claudeのトークンは約3.5文字です。Claude Codeの1ターンが80,000トークンになる理由と、5分放置後に次のターンが5倍になる仕組みを解説します。
Claude におけるトークンとは
トークンは、Claude が読み書きするテキストの単位です。単語の一部であり、英語ではおよそ 3.5 文字に相当します。この数値は Anthropic の公式用語集に基づくもので、スペースや句読点も数えると、1 単語あたり 1 トークンを大きく上回ります。そのため、文章 1,000 単語は 1,300 トークンを余裕で超えます。コードは 1 行あたりのトークン数がさらに多くなります。中括弧、演算子、アンダースコア、インデントによって、英語よりも 1 文字あたり多くのトークンに分割されるためです。数百行のソースファイルでは、通常、数千トークンになります。エージェントが読む 2,000 行のファイルは、新しいコードを 1 行も書かない段階で、5 桁のトークン数になります。
トークナイザーについては、2 つの点で誤解が生じやすくなります。1 つ目は、モデルごとに異なることです。2026 年 7 月時点では、Opus 4.7 以降、Sonnet 5、Fable 5 は新しいトークナイザーを使用しています。同じテキストでも、以前の Claude モデルよりおよそ 30% 多くのトークンを生成します。正確な増加率は内容によって異なります。トークン単価は上がっていなくても、トークン数で見積もる内容は変わります。2 つ目は、tiktoken です。多くのブログ記事が利用するこのライブラリは OpenAI のトークナイザーであり、通常のテキストでは Claude のトークン数をおよそ 15–20% 少なく見積もります。コードでは差がさらに大きくなります。信頼できる唯一のカウント方法は count_tokens エンドポイントです。詳細は以下で説明します。
コーディングセッションの料金が決まる仕組み
Claude の請求額は、API の請求書でもサブスクリプションの上限でも、1 つのメーターに集約されます。入力トークンと出力トークンです。料金ページでは、100 万入力トークンあたりの料金と、100 万出力トークンあたりの料金が示され、単純に見えます。しかし、エージェント型のコーディングセッションでは、入力側の使用量が直感より大幅に増えます。すべての会話が、ターンごとに再送信されるためです。私は 15 年間、従量課金インフラを販売してきました。その中で、使用量を増やしているものを顧客の大半が本当に説明できないメーターは、トークンが初めてです。ここでは、エージェント型セッションで入力と出力として数えられるもの、再送信ループの料金が高くなる理由、Prompt caching によって計算方法がどう変わるか、そして実際に使用量を左右する対策を説明します。
すべてが入力です。メーターが実際に数えているもの
Claude が書くコードに料金を支払っていると考えがちです。エージェント型のセッションでは、それは小さな項目です。入力トークンは単価が低い一方で、量がはるかに多く、次のものが含まれます。
- システムプロンプト。 Claude Code 自身のハーネス指示に加え、セッション開始時に読み込まれ、その後のすべてのリクエストに含まれる
CLAUDE.mdとメモリファイルです。 - ツール定義。 エージェントが呼び出せるすべてのツールスキーマです。接続する MCP サーバー が増えるたびに、この固定オーバーヘッドも増えます。ただし、Claude Code は現在、MCP ツールの完全な定義をデフォルトで遅延読み込みするため、ツールを初めて使用するまでコンテキストに入るのはツール名だけです。そのためコストは抑えられますが、なくなるわけではありません。
- エージェントが読み取るすべてのファイル。 ソースファイルの
Readを行うと、ファイル全体がコンテキストに入り、そのまま残ります。 - すべてのツール結果。 テスト実行結果、grep の出力、ターミナルの大量出力、ビルドログなど、すべてが入力トークンとして戻ります。テストスイートが失敗して 8,000 行を出力すると、短い本 1 冊分の料金が発生します。
- それまでの会話全体。毎ターン再送されます。 これは独立したセクションで扱う価値があります。
誰も価格に織り込まない再送
Claude API はステートレスです。リクエスト間でセッションを記憶することはなく、そのような機能はありません。したがって、2 ターン目では、クライアントが 1 ターン目の内容とその応答に新しいメッセージを加えて送信します。50 ターン目では、1 ターン目から 49 ターン目までの内容、読み取ったすべてのファイル、すべてのツール結果、すべての差分に加えて、50 ターン目の内容を再送します。モデルは毎回、トランスクリプト全体を読み直します。その読み直しに使われるトークンもすべて入力として課金されます。
その結果、1 ターンあたりのコストはセッションの長さにほぼ比例して増加し、セッション全体のコストはおおむね二次関数的に増加します。3 ターン目では 0.5 セントだったメッセージが、同じ 1 行の質問でも、60 ターン分の内容を伴うため、60 ターン目にはその 20 倍になることがあります。「なぜ請求額がこれほど高いのか」という問い合わせの大半は、この事実で説明できます。これは Claude 固有の挙動ではありません。ステートフルに見える LLM 製品もすべて、内部では再送ループを備えたステートレス API です。
出力: 表示される内容と、表示されない思考
出力トークンは、現在のラインアップでは入力の 5 倍の料金がかかります(2026 年 7 月時点で、Opus 4.8 は $5/$25、Sonnet 5 は $3/$15、Haiku 4.5 は $1/$5)。出力には、Claude が生成するテキストとコードに加えて、思考トークンも含まれます。これは、モデルが回答前に行う内部推論です。ここでは 2 つの点が重要です。思考トークンには出力料金が適用され、max_tokens にも加算されます。stop_reason: "max_tokens" で終了する API レスポンスや途中で切れた回答は、回答の生成前に思考が予算を使い切ったことを示している場合があります。また、現在のモデルでは推論の要約が表示されないことがあります。Opus 4.8、Sonnet 5、Fable 5 はデフォルトで要約を表示しません。ただし、思考は実行され、料金も発生します。見えないからといって無料ではありません。
Claude Code では、複数ステップの処理が測定可能なほど改善されるため、デフォルトで拡張思考が有効になっています。デフォルトの予算は、1 リクエストあたり数万トークンに達することがあります。単純なタスクでは、思考量を下げることができます。/effort を使用するか、/model で努力レベルを下げてください。または、/config で思考設定を調整します。これは迷信ではなく、実際にコストを抑えられる設定です。
プロンプトキャッシュで計算が変わる
プロンプトキャッシュがあるため、再送ループですべての利用者が破産せずに済みます。API は、プロンプト、システムプロンプト、ツール定義、会話履歴など、安定したプレフィックスをキャッシュできます。次のリクエストでは、その部分を通常の料金の一部で処理できます。2026年7月時点の倍率は、キャッシュの書き込みが基本入力料金の 1.25 倍(1時間版では 2 倍)、キャッシュの読み取りが 0.1 倍です。書き込みには割増料金がかかります。読み取りには 90% の割引が適用されます。1 回読み取るだけで、5分間の書き込みにかかる割増分を十分に回収できます。
Claude Code がキャッシュを管理するため、正常なセッションでは、この巨大な再送のほとんどがキャッシュから提供されます。ただし、デフォルトのキャッシュは最後の使用から5分間だけ保持されます。長めの休憩を取り、戻ってメッセージを送ると、キャッシュの有効期限が切れています。その結果、蓄積されたプレフィックス全体が 0.1 倍で読み取られる代わりに、1.25 倍で再書き込みされます。150K トークンのセッションでは、この 1 回のコールドターンに、ウォームターンを 12 回以上実行するより多くの費用がかかります。ここで理解しておくべき直感に反する結果は、アイドル状態になってから再開するリズムのほうが、継続して作業するより高くつく場合があることです。TTL を超えるアイドル時間が発生するたびに、次のターンが安価な読み取りから高価な再書き込みに変わるためです。作業は区切ってまとめて行ってください。巨大なセッションに対して、10分ごとに 1 メッセージずつ送る運用は避けます。
自分の VPS 上のアプリケーションから API を呼び出す場合、これらの仕組みは自動的には適用されません。典型的な自損要因は、システムプロンプトにタイムスタンプやリクエスト ID を埋め込むことです。これにより、リクエストごとにプレフィックスのバイト列が変わり、キャッシュがひそかに無効になります。見分ける手掛かりは、見た目が同じ呼び出しで usage.cache_read_input_tokens が一貫して 0 になっていることです。
数式と計算例
「1 セッションあたり $X」と一律の金額を示す説明は無視してください。セッション料金は 2 桁の範囲で変動します。成り立つのは次の数式です。
turn cost = (uncached input x base input price)
+ (cache writes x 1.25 x base input price)
+ (cache reads x 0.10 x base input price)
+ (output incl. thinking x output price)
session cost = sum over all turnsClaude Opus 4.8 を使った計算例です。2026 年 7 月時点で、料金は入力トークン 100 万件あたり $5、出力トークン 100 万件あたり $25 です。累積コンテキスト 80,000 トークンを含むセッション途中のターンを考えます。内訳は、キャッシュからの読み取り 75,000 トークン、新規書き込み 3,000 トークン、キャッシュされていない新規入力 2,000 トークン、thinking を含む出力 1,500 トークンです。
- キャッシュからの読み取り: 75,000 × $0.50/M = $0.0375
- キャッシュへの書き込み: 3,000 × $6.25/M = $0.019
- キャッシュされていない入力: 2,000 × $5/M = $0.010
- 出力: 1,500 × $25/M = $0.0375
このターンの料金は約 $0.10 です。同じターンを 50 回行うと、約 $5 になります。次に、キャッシュの有効期限が切れた後の同じターンを考えます。80,000 トークン全体を $6.25/M で再書き込みすると、出力分を含める前の時点で $0.50 です。これは、同じ処理を行うキャッシュが有効なターン全体の料金のおよそ 5 倍です。この差が、キャッシュによる料金差の全体像を 1 つの数値で示しています。この 4 行の計算は、ベンダーを比較する際にも唯一正確な方法です。表示された単価だけでは、キャッシュからの読み取りと thinking の料金が完全に反映されないためです。実際の 3 つのジョブで計算すれば、Claude の請求額が OpenAI より高くなるか低くなるかも確認できます。
1 回のターンではなく、請求単位そのものを把握したい場合は、100 万トークンがページ数、ファイル数、金額に換算してどの程度になるかで、同じ計算を 1 段階上の単位で行っています。これは予測ではなく、基準値として利用してください。Anthropic が公開している、企業における Claude Code の導入実績によると、2026 年 7 月時点の平均は、アクティブな 1 日あたり開発者 1 人につき約 $13、月額 $150–250 です。また、ユーザーの 90% は 1 日あたり $30 未満に収まっています。実際の料金は、モデルの選択、セッションの管理方法、コードベースの規模によって変わります。そのため、以下の調整要素が重要になります。
自分の使用状況を確認する
Claude Code では、コマンドは /usage です(/cost もエイリアスとして引き続き使用できます)。上部の Session ブロックには、現在のセッションのトークン統計とローカルで計算されたコスト推定値が表示されます。サブスクリプションプランでは、同じ画面にプラン上限のバーと、直近の使用量を skills、subagents、plugins、個々の MCP servers に割り当てた内訳も表示されます。API アカウントの正式な請求情報については、Claude Console の使用量ページが正となり、CLI の数値は推定値です。/context は、system prompt、tools、MCP definitions、files、history など、コンテキストウィンドウを占有しているものを色付きのグリッドで表示します。肥大化した CLAUDE.md や応答の多い MCP server を見つける最も簡単な方法です。all を指定すると、項目ごとの詳細な内訳をすべて表示できます。
API では、すべてのレスポンスから実際の処理内容を正確に確認できます。
response = client.messages.create(model="claude-sonnet-5", max_tokens=2048,
messages=messages)
u = response.usage
total_prompt = u.input_tokens + u.cache_creation_input_tokens + u.cache_read_input_tokens
print(f"uncached={u.input_tokens} written={u.cache_creation_input_tokens} "
f"read={u.cache_read_input_tokens} output={u.output_tokens}")input_tokens は キャッシュされていない残りの量 にすぎない点に注意してください。実際の prompt サイズは、3 つの入力フィールドの合計です。1 時間実行した agent に input_tokens: 4000 と表示されても、安価だったとは限りません。残りの 200,000 トークンはキャッシュから提供されています。送信前に見積もるには、トークン数計測 endpoint を使用します。呼び出しは無料で、専用の rate limit が設定されており、指定した model の tokenizer で計測されます。結果は近似値として扱ってください。請求額は実際のリクエストを反映します。
count = client.messages.count_tokens(model="claude-sonnet-5",
messages=[{"role": "user", "content": big_file}])
print(count.input_tokens)上記の理由により、tiktoken は絶対に行わないでください。
サブスクリプションプランと従量課金の違い
このガイドの仕組みはどの環境でも同じで、異なるのは料金の扱いだけです。API key を使用すると、Anthropic は公開料金に基づき、token 単位で従量課金します。上記の数値はすべて実際の費用です。多くの人が予想するより早く課金が始まります。代わりに利用できる無料枠はなく、signup 時の少額 credit と、課金されない一部の endpoint があるだけです。これは、カード情報を登録する前に新しい API account で実際に利用できる 内容です。Claude のサブスクリプション(Pro、Max、Team、Enterprise)では、Claude Code の使用量はプランに含まれる利用枠から差し引かれます。2026 年 7 月時点では、5 時間単位で移動する session window と weekly window があり、これらは model 間および claude.ai の chat で共有されます。/usage の dollar 表示は参考情報であり、請求額ではありません。window を使い切ると、リセット時刻とともに "You've hit your session limit" または "You've hit your weekly limit" と表示されます。/model で model を切り替えても利用できるようにはなりません。window は model 間で共有されているためです。これらの window は、使用している client ではなく account に紐付きます。そのため、Linux でネイティブに動作するものと、各環境を対象とするプランを確認中であれば、この点を把握しておくと便利です。実際に使い切った window によって、待ち時間と、その間に取るべき対応が決まります。そのため、タスクの途中で制限に達した場合の 選択肢を把握しておく価値があります。プランでは、オプションで usage credit を有効にできます。/usage-credits で管理し、上限を超えた利用に充当できます。プランの quota はあえて記載しません。このテーマ全体で最も変動しやすい数値だからです。claude.com/pricing と自分の /usage bar を確認してください。サブスクリプションでも token の仕組みは重要です。非効率な session は、料金を消費する場合と同じように window を消費します。サブスクリプションについては、自分の利用状況に適した Claude planを参照してください。
実際に効果のある調整方法
- エージェントが読み取る範囲を限定します。 「
auth.pyの検証バグを修正して」と指定すれば 1 ファイルを読み取りますが、「このコードベースを改善して」と指定すると 40 ファイルを読み取ります。CLAUDE.mdはすべてのセッションに読み込まれるため、必要最小限に保ち、ワークフロー固有の指示は必要なときだけ読み込む skills に移します。 - 明確かつ簡潔にします。 無関係なタスクの間で
/clearを実行すると、古いコンテキストが後続の各メッセージで再送信され、再度課金されます。1 つの長いタスクでは、/compact Focus on the failing tests and the diffが履歴を要約して短くするため、二次曲線的な増加を避けられます。 - モデルのサイズを適切に選びます。 Sonnet はほとんどのコーディングに対応します。2026 年 7 月時点の導入価格は 100 万トークンあたり $2/$10 です(通常価格は $3/$15、Opus は $5/$25)。Haiku は $1/$5 で、ログの振り分けのような機械的なサブエージェント作業に適しています。一方、Fable 5 は $10/$50 で、入出力の両方が Opus の 2 倍です。そのため、通常の作業で選択したままにする前に、その料金に見合う作業かどうかを確認してください。
/modelでセッション途中に切り替えられます。 - 冗長な出力を事前に絞り込みます。 テスト実行の結果を Claude が見る前に hook で失敗だけに絞り込むと、ツール結果を 20,000 トークンから 300 トークンに減らせます。そのターンが今後再送信されるたびに、この効果が得られます。
- 対話が不要な処理をまとめて実行します。 独自の API パイプライン、分類、大量レビュー、夜間ジョブでは、Batches API を使うと非同期配信と引き換えに同じモデルを 50% 引きで実行できます。
- キャッシュの有効時間を意識します。 作業は連続して行ってください。VPS 上の tmux でデタッチした Claude Code セッションはアイドル中の費用がかからず、ターンを実行したときだけトークンを消費します。ただし、アイドル時間によってウォームキャッシュが失われるため、次のターンでは内容の再書き込みにコストがかかります。
FAQ
Claude Code のコーディングセッションでは、トークンをいくつ使用しますか?
固定された数はありません。ファイルや履歴が蓄積すると、セッション途中の1回のターンだけで数万の prompt tokens になることが一般的です。継続中のセッションでは数百万に達することもありますが、その大半は cache から提供され、基本料金の10分の1で処理されます。目安として、Anthropic が公開した2026年7月時点のエンタープライズ向け統計では、開発者1人あたりのアクティブ日1日分の平均費用は約$13で、ユーザーの90%は$30未満です。自分のセッションで /usage を実行してください。5分間の監視のほうが、公開された平均値より正確な判断材料になります。
画面に表示されない thinking tokens にも料金はかかりますか?
はい。thinking tokens は高い料金が適用される output tokens として課金され、max_tokens にも算入されます。現在のモデルでは、インターフェースに reasoning summary が表示されない場合でも課金されます。表示される回答が終わる前に stop_reason: "max_tokens" で応答が途中終了した場合は、thinking が予算を消費した可能性が高いです。Claude Code では、深い推論が不要なタスクの場合、/effort で effort level を下げてください。
Claude Code の長いセッションでは、なぜメッセージごとの費用が高くなるのですか?
API は stateless だからです。API は各ターンで、会話全体、読み込んだすべてのファイル、tool result、過去のやり取りを billed input として再送信します。そのため、50回目のターンには、1回目から49回目までの内容が含まれます。Prompt caching により、繰り返される prefix は基本 input 料金の約10分の1で処理されます。ただし、prefix 自体は増え続けます。また、cache TTL を超えてアイドル状態が続くと、次のターンは全内容を通常料金で再送信する処理になります。/compact で履歴を縮小し、/clear で履歴をリセットできます。
Claude のトークン使用量と費用を確認するにはどうすればよいですか?
Claude Code では、/usage によりセッションのトークン統計、ローカルでの費用見積もり、サブスクリプションのプラン上限バーを表示できます(/cost はその alias です)。/context では、window を埋めている内容を確認できます。API の正確な課金額を確認するには、Claude Console の usage page を使用してください。自分のコードでは response.usage を読み取り、input_tokens、cache_creation_input_tokens、cache_read_input_tokens を合計すると実際の prompt size を求められます。事前の見積もりには count_tokens endpoint を使用し、tiktoken は使用しないでください。