Claudeのトークンとは何か、どう機能するのか? 38億トークンを数えてみました

トークンは単語の断片で、Claudeは入力、キャッシュ書き込み、キャッシュ読み取り、出力の4種類を数えています。私たち自身のClaude Codeセッション30日分、38億トークンを数えたところ、98%はキャッシュから読み直された会話で、Claudeが書いたものは0.3%でした。種類ごとのコスト、ターンを重ねるごとにセッションが重くなる理由、そして5時間ウィンドウが何を測っているのかを解説します。

Claudeのまわりでは、この言葉をどこでも目にします。料金表に、上限のメッセージに、/usageに、節約をうたうあらゆる記事に。それなのに、トークンとは何かを説明している人はほとんどおらず、みんなが見ている数字が本当に重要な数字であることもまれです。Claudeが書き返す部分は、コーディングセッションでカウントされる量の1%にも満たないのです。

そこで、自分たちの分を数えました。1台のMacで動かしたClaude Codeセッション30日分、2026年9月10日から10月9日まで。388セッション、モデルへの19,668リクエスト、38億トークンです。トークンとは何か、Claudeがそれを数える4つの方法、そしてそれらの数字が実際の作業でどう見えるかを紹介します。

トークンはテキストの断片で、断片の大きさは変わる

モデルは文字も単語も読みません。読むのはトークンです。固定された語彙から取り出したテキストの断片で、短い単語まるごとのこともあれば、たいていは単語の一部、見たことのないものなら1文字や1バイトのこともあります。すべてはこの断片で数えられます。あなたが送るもの、Claudeが書くもの、ターンとターンの間に保持するものです。

1トークンに収まるテキストの量は、モデルと言語によって変わります。Anthropicの用語集では、Claude 4.7より前のモデルで1トークンあたり英語約3.5文字とされ、Claude 4.7以降は新しいトークナイザーを使い、同じテキストでトークン数が約30%増えるとしています。正確な数は、使う予定のモデルを指定してトークンカウント用エンドポイントに問い合わせたときにしか得られません。

私たちは自分たちのテキストで比率を測りました。私たちのエージェントはフランス語で回答するので、思考なし、ツール呼び出しなし、コードブロックなし、80単語以上の、テキストのみの回答を集めました。Opus 5、Opus 5.5、Fable 5.1、Sonnet 5.5にまたがる296件です。中央値は1トークンあたり2.3文字、1単語あたり約2.6トークンでした。コード、JSON、ラテン文字以外の文字体系では比率が変わります。大事なのは正確な数字ではありません。トークンは単語より小さく、手で数えることは決してない、ということです。

すべてのリクエストは4つのカウンターで数えられる

Claude Codeはすべてのセッションを~/.claude/projects/配下のJSONLトランスクリプトに書き出します。モデルからの各回答にはusageブロックが付いています。私たちのトランスクリプトから取った実際の例を、役に立つフィールドだけ残して示します。

"usage": {
  "input_tokens": 2,
  "cache_creation_input_tokens": 51836,
  "cache_read_input_tokens": 24882,
  "output_tokens": 315,
  "output_tokens_details": { "thinking_tokens": 54 },
  "cache_creation": {
    "ephemeral_1h_input_tokens": 51836,
    "ephemeral_5m_input_tokens": 0
  }
}

カウンターは4つあり、値段はそれぞれ違います。

  • input_tokens:プロンプトのうち、キャッシュに書き込まれもせず、キャッシュから読み取られもしない部分で、基本の入力価格で課金されます。Claude Codeではほぼ常に数トークンです。ほとんどすべてがキャッシュを通るからです。
  • cache_creation_input_tokens:次のリクエストが再利用できるようにキャッシュに保存されるプロンプトの部分です。キャッシュ書き込みは、5分キャッシュなら入力価格の1.25倍、1時間キャッシュなら2倍かかります。私たちのトランスクリプトでは、書き込みの97%が1時間キャッシュでした。
  • cache_read_input_tokens:キャッシュから再生されるプロンプトの部分です。キャッシュ読み取りは、ほとんどのモデルで入力価格の0.1倍、Opus 5.5とSonnet 5.5では0.05倍、Fable 5.1では0.025倍です(Anthropicのプロンプトキャッシュのページ、2026年10月10日に確認)。
  • output_tokens:Claudeが書くもので、思考も含みます。出力は現行のすべてのモデルで入力価格の5倍です。100万トークンあたりOpus 5.5で20ドル、Opus 5で25ドル、Fable 5.1で50ドル、Sonnet 5.5で10ドルです。

最初の3つを足すと、そのリクエストでモデルが読んだコンテキストになります。4つ目が回答です。

私たちのセッション30日分はこうなった

19,668リクエストを、1リクエストにつき1回ずつ数えました(1回のAPI呼び出しがトランスクリプトの複数行にまたがることがあります)。

カウンタートークントークンに占める割合APIの定価でのコストに占める割合
入力(キャッシュなし)114,4110.003%0.04%
キャッシュ書き込み74,834,0702.0%37.4%
キャッシュ読み取り3,710,054,70997.7%45.7%
出力12,727,1930.34%16.8%
合計3,797,730,383100%2,563ドル

コストの列は、各リクエストをそれ自身のモデルとそれ自身のキャッシュ期間で値付けしています。私たちがこの金額を払っているわけではありません。これらのセッションはサブスクリプションで動いていました。これは各カウンターの重みであり、AgentsRoomがプランのパーセンテージをプロジェクト間で配分するときに使うのと同じ重み付けです。

読み取れることは3つです。

ほぼすべてのトークンは、読み直されている会話です。 トークンの97.7%はキャッシュ読み取りです。リクエストの99.2%がキャッシュから何かを読んでいます。誰かがセッションで「5,000万トークン使った」と言うとき、見ているのはこれです。

Claudeが書く量はトークンではわずかでも、コストではわずかではありません。 トークンの0.34%で、請求額の16.8%です。出力がいちばん高いトークンだからです。その出力の29%が思考でした。

キャッシュ書き込みは高くつく意外な存在です。 トークンの2%で、コストの37%です。キャッシュの期限切れが原因だろうと予想していましたが、冷えたコンテキストを書き直す必要があったのは19,668リクエスト中16件だけで、そのうち7件は1時間以上何もしなかった後でした。書き込みの79%は、新しいメッセージやツール結果がそれぞれ一度だけ、入力価格の2倍で保存され、その後のターンのたびに読み直されているにすぎません。残りの20%は各セッションの最初のリクエストです。

ターンを重ねるごとにセッションが重くなる理由

モデルは2つのリクエストの間に何も保持しません。Claude Codeは毎回すべてを送り直します。システムプロンプト、ツール定義、CLAUDE.md、すべてのメッセージ、読んだすべてのファイル、すべてのコマンド出力です。キャッシュは繰り返される部分をトークンあたり安くするだけで、無料にはならず、小さくもなりません。

セッション内の位置ごとの、1リクエストあたりに読まれたコンテキストの中央値です。

セッション内のリクエストリクエスト数コンテキストの中央値
1件目3885万2,000トークン
2〜10件目3,2109万3,000トークン
11〜50件目8,54616万1,000トークン
51〜200件目6,41423万7,000トークン
201件目以降1,11034万2,000トークン

中央値のリクエストは、290トークンの回答を書くために17万9,000トークンのコンテキストを読んでいました。この比率が、コーディングエージェントにおけるトークンのすべてを物語っています。回答は短く、読む量は多く、そして読む量はセッションとともに増えていきます。

私たちの最初のリクエストは重く、誰も何も入力しないうちに5万2,000トークンあります。私たちのエージェントは長い役割説明と、ツール定義がプロンプトに入る4つのMCPサーバーを抱えて起動するからです。空のフォルダで素のClaude Codeセッションを始めれば、ずっと少なくなります。最初のメッセージの前に何を抱えているかは/contextで確認できます。

1セッションが使う量

3リクエスト以上の380セッションについて:

  • 中央値で33リクエスト、中央の半数で16〜61。
  • 中央値で出力トークン2万7,000、1万2,000〜4万8,000。
  • 中央値で処理トークン540万、中央の半数で150万〜1,070万、そのうち510万がキャッシュ読み取り。
  • 中央値で18万1,000トークンがキャッシュに書き込まれるか、キャッシュなしで送られました。本当に新しかった部分です。
  • APIの定価で中央値4.55ドル、中央の半数で1.81〜9.25ドル。

つまり「コーディングセッションは何トークン使うのか」への正直な答えは、おおよそ100万から1,000万の範囲で、そのほとんどが同じコンテキストの読み直しです。午後いっぱい1つの長いタスクを続けるセッションは範囲の上のほうに、バグを1つ直して終わるセッションは下のほうに位置します。

5時間ウィンドウと週が実際に数えているもの

ProプランやMaxプランでは、トークン残高が表示されることはありません。Anthropicのヘルプセンターによると、どちらのプランにも5時間のセッション上限と週次の上限があり、これらの上限はClaudeとClaude Code(IDEを含む)で共有され、Maxプランには別枠でFable用の週次上限があります。どの上限についてもトークン数は公表していません。/usageはそれぞれのウィンドウのパーセンテージと、リセットされる時刻を表示します。

このパーセンテージを動かすものとして、Anthropic自身が挙げているのは次のとおりです。メッセージの長さ、添付ファイルのサイズ、現在の会話の長さ、ツールの使用、モデルの選択、推論の強度、そして複数ステップのタスク。上の表と照らし合わせると、コーディングセッションで支配的なのは「現在の会話の長さ」です。各リクエストで読まれるコンテキストは、50リクエストのうちに5万2,000トークンから23万7,000トークンまで増えます。ヘルプセンターは、プロジェクト内のキャッシュされたコンテンツは再利用時に上限への影響が小さくなるとも述べており、これはキャッシュ読み取りの価格と同じ考え方です。

Anthropicがトークンをウィンドウのパーセンテージにどう換算しているのかはわかりませんし、換算式をでっち上げるつもりもありません。データが示しているのは、長いセッションの後半のリクエストは、同じ質問でも序盤のリクエストの何倍にもカウントされる、ということです。

実際にカウントを変えるもの

私たちのデータで効いた順に、4つのレバーです。

  • 無関係なタスクの間には/clear。 Anthropicはこれを「品質とコストの両方にとって最も効果的なレバー」と呼んでいます。古いセッションで新しいタスクを始めると、リクエストのたびに古いタスクのコンテキスト分を払うことになります。
  • 長いセッションを続けるときは/compact。 履歴を短い要約に置き換えるので、その後のリクエストが読む量が減ります。
  • コンテキストに入るものに気を配る。 2万トークンのファイル読み込みやコマンド出力は、入力価格の2倍で一度書き込まれ、その後セッションが終わるまで、リクエストのたびに読み直されます。ファイル全体ではなく必要な行だけを読めば、二重に得をします。
  • モデルと推論の強度。 私たちの出力の29%は思考で、出力はいちばん高いトークンです。定型作業で推論の強度を下げれば出力が減り、安いモデルにすればすべての価格が一度に下がります。

私たちのデータで効かなかったもの:セッションを放置すること。私たちのトランスクリプトでClaude Codeが使っている1時間キャッシュでは、冷えた状態からの書き直しは30日間で16回でした。

ほかの節約方法については、Claude Codeのトークンコストを削減する方法を参照してください。

自分の分を数える

上の表は、依存関係のないスクリプトから作ったものです。マシン上のすべてのClaude Codeトランスクリプトを読み、各リクエストを1回ずつ数え、4つのカウンターとセッションごとの中央値を出力します。期間を区切りたいならo["timestamp"]にフィルターを追加してください。

import json, glob, os, statistics as st
from collections import defaultdict

FIELDS = ("input_tokens", "cache_creation_input_tokens",
          "cache_read_input_tokens", "output_tokens")
totals, sessions = defaultdict(int), []
for path in glob.glob(os.path.expanduser("~/.claude/projects/*/*.jsonl")):
    seen, session = set(), defaultdict(int)
    with open(path, errors="ignore") as fh:
        for line in fh:
            try: o = json.loads(line)
            except ValueError: continue
            msg = o.get("message") or {}
            usage = msg.get("usage") if isinstance(msg, dict) else None
            if o.get("type") != "assistant" or not usage: continue
            rid = o.get("requestId") or o.get("uuid")
            if rid in seen: continue   # one API call can span several lines
            seen.add(rid)
            session["requests"] += 1
            for f in FIELDS:
                n = usage.get(f) or 0
                totals[f] += n
                session[f] += n
    if session["requests"] >= 3: sessions.append(session)

grand = sum(totals[f] for f in FIELDS)
for f in FIELDS:
    print(f"{f:30s} {totals[f]:>15,} {100 * totals[f] / grand:6.2f}%")
for key in ("requests", "output_tokens", "cache_read_input_tokens"):
    print(f"median per session, {key}: {st.median(s[key] for s in sessions):,.0f}")

あなたの割合を私たちのものと比べてみてください。キャッシュ読み取りの行は読み直されている会話で、キャッシュ書き込みの行は新しかった部分です。この2行のほうが、出力の行よりも請求額について多くを語ります。

AgentsRoomでの表示場所

スクリプトでわかるのは1か月分です。作業中は、AgentsRoomが同じカウンターをエージェントごとに表示します。セッションが重くなると赤くなる、各セッションのコンポーザーにあるトークンバッジ、入力、出力、キャッシュ書き込み、キャッシュ読み取り、キャッシュヒット率を表示するセッションモニター、そしてセッションをターンごとに再生し、どのファイル読み込みやツール結果がコンテキストを埋めたかを示すセッショントレースです。使用量パネルは、プランが報告するパーセンテージをプロジェクトとエージェントの間で配分し、各セッションをAPI価格でかかる金額で重み付けします。上の表と同じ重み付けです。

これらのどれもトークン残高は示しません。あなたのプランにはそもそも残高がないからです。その疑問については、Claudeであと何トークン残っているかを参照してください。出力トークンが届く速さについては、Claude Codeの秒間トークン数を実測を参照してください。

よくある質問

Claudeのトークンとは何ですか?

Claudeがテキストを読み書きする単位です。単語の一部、ときには短い単語まるごと、ときには1文字や1バイトになります。Anthropicによると、サイズはモデルと言語によって変わります。Claude 4.7より前のモデルでは1トークンが英語で約3.5文字で、Claude 4.7以降は新しいトークナイザーを使い、同じテキストでトークン数が約30%増えます。Claudeが行うことはすべてトークンで計量されます。あなたが送るもの、Claudeが書き返すもの、そしてターンとターンの間にキャッシュに保持するものです。

Claudeの1トークンは何文字、何単語ですか?

言語とテキストによって変わります。AnthropicはClaude 4.7より前のモデルで1トークンあたり英語約3.5文字としており、Claude 4.7以降では同じテキストでトークン数が約30%増えます。2026年9月と10月に私たちのエージェントがフランス語で書いたテキストのみの回答296件では、1トークンは2.3文字、1単語あたり約2.6トークンでした。コード、JSON、ラテン文字以外の文字体系では比率が変わります。正確な数を知るには、Anthropicのトークンカウント用エンドポイントにテキストとモデルを渡します。

Claude Codeはなぜこれほど多くのトークンを使うのですか?

リクエストのたびに会話全体を送り直すからです。システムプロンプト、ツール定義、CLAUDE.md、それまでのすべてのメッセージとすべてのツール結果です。私たちの19,668リクエストでは、中央値のリクエストが290トークンの回答を書くために17万9,000トークンのコンテキストを運んでおり、コンテキストはセッション最初のリクエストの5万2,000トークンから、50リクエスト後には23万7,000トークンまで増えていました。キャッシュのおかげでこの読み直しはトークンあたり安くなりますが、それでもカウントはされます。

一般的なClaude Codeセッションは何トークン使いますか?

2026年9月10日から10月9日までに記録した、3リクエスト以上の380セッションでは、中央値で33リクエスト、出力トークン2万7,000、処理トークン合計540万で、そのうち510万がキャッシュ読み取りでした。セッションの半数は150万から1,070万トークンの間に収まりました。APIの定価なら、この中央値のセッションは約4.55ドルかかった計算です。ProプランやMaxプランでは、同じ作業が代わりに5時間ウィンドウと週次ウィンドウに計上されます。

思考トークンもカウントされますか?

はい。思考トークンはすべてのusageブロックでoutput_tokensに含まれており、出力のうちどれだけが思考だったかをthinking_tokensフィールドが示します。APIでは出力の価格で課金され、Anthropicはプランの使用量上限を早く消費させる要因の一つとして推論の強度を挙げています。私たちのコーパスでは、モデルが書いたもの全体の29%が思考でした。

キャッシュ書き込みとキャッシュ読み取りのトークンの違いは何ですか?

キャッシュ書き込みは、次のリクエストが再利用できるようにプロンプトの一部を保存するもので、通常の入力より高くつきます。5分キャッシュなら入力価格の1.25倍、1時間キャッシュなら2倍です。キャッシュ読み取りは保存済みの部分を再利用するもので、ずっと安く済みます。ほとんどのモデルで入力価格の0.1倍、Opus 5.5とSonnet 5.5では0.05倍、Fable 5.1では0.025倍です。私たちのセッションでは、キャッシュ読み取りがトークンの98%、定価ベースのコストの46%を占め、キャッシュ書き込みはトークンの2%、コストの37%でした。

AgentsRoomをダウンロード

すべてのAIエージェントを、すべてのプロジェクトで、ひとつのウィンドウから実行。

無料AgentsRoomをダウンロード

コンパニオンアプリ:外出先でもエージェントを確認

Claude、Codex、Antigravity CLI、またはその他の AI プロバイダーを使用します。

拡張機能を入手
Chrome Web Store

バグや要望を公開バックログに直接送信できます。

マルチプロジェクト
マルチプロバイダー
マルチエージェント
ライブステータス
ファイル差分
モバイルアプリ
ライブプレビュー
エージェントチーム
ブラウザテスト
バックログ駆動開発
プロンプトライブラリ
スキルライブラリ
すべての機能を見る

続きを読む