導入
ClaudeCodeを使っていると、突然「トークン上限に達しました」というエラーが表示されて作業が止まってしまうことはありませんか。エンジニアではない方からすると、「トークンって何?」「なぜ急に止まるの?」と戸惑うことも多いはずです。実はこのトークンという概念を理解し、いくつかの節約テクニックを身につけるだけで、ClaudeCodeを快適に使い続けることができます。本記事では、トークンの基本から、上限エラーが出た時の具体的な対処法、/compactコマンドの活用、効率的なプロンプトの書き方まで、初心者の方でも実践できる内容をやさしい日本語で解説します。読み終わる頃には、トークン上限を気にせずClaudeCodeを使いこなせるようになります。
結論
ClaudeCodeでトークン上限エラーが発生した時の最短解決策は、「/compactコマンドを使って会話を圧縮する」ことです。これだけで多くの場合、作業を中断せずに続行できます。それでも解決しない場合は、/clearで会話履歴をリセットし、本当に必要な情報だけを再度伝え直す方法が有効です。トークンを節約するためには、(1)長いログや不要なファイル全文を貼り付けない、(2)指示は短く明確に書く、(3)同じ会話で何でもやらずタスクごとにセッションを分ける、(4).gitignoreや.claudeignoreで読み込み対象を絞る、という4つの基本を守るだけで、消費トークン量は大幅に減ります。さらに、長期プロジェクトではCLAUDE.mdに共通指示を集約しておくことで、毎回同じ説明を繰り返す無駄を省けます。これらを組み合わせることで、上限エラーに遭遇する頻度を劇的に下げられます。
トークンとは何か?初心者向けに解説
トークンとは、ClaudeCodeをはじめとする生成AIが文章を処理する時の「最小単位」のことです。人間が文章を「文字」や「単語」で数えるのに対し、AIは「トークン」という独自の単位で数えています。英語の場合、おおむね1単語が1〜2トークン、日本語の場合は1文字が1〜2トークンと考えるとイメージしやすいでしょう。たとえば「こんにちは」という5文字の日本語は、トークン数にするとおよそ5〜8トークンになります。
なぜトークンという単位が重要かというと、ClaudeCodeには「1回のやり取りで処理できるトークンの上限」があるからです。これは「コンテキストウィンドウ」と呼ばれ、Claude Opusの場合は数十万トークン規模ですが、長い会話を続けたり大量のコードを読ませたりすると、簡単に上限に到達します。
例:トークン数のイメージ
「こんにちは」 → 約5〜8トークン
「Hello, world!」 → 約4トークン
「def add(a, b): return a + b」 → 約10トークン
トークンには「入力トークン」と「出力トークン」の2種類があります。入力トークンはあなたがAIに送った指示やコードの量、出力トークンはAIが返した回答の量を指します。料金プランによっては両方が課金対象になるため、節約することは「料金削減」にも直結します。非エンジニアの方が押さえておくべきポイントは、「長い文章=多くのトークン」「会話が長く続くほど累積トークンが増える」という2点です。
トークン上限エラーの代表的なパターン
ClaudeCodeでよく見るトークン関連のエラーメッセージには、いくつかのパターンがあります。それぞれ原因と対処法が少しずつ違うので、見分けられるようになっておきましょう。
1つ目は「Context length exceeded」というエラーです。これは現在の会話で扱える総トークン数を超えてしまった場合に出ます。長い議論を続けていたり、巨大なファイルを何度も読み込ませたりすると発生します。
2つ目は「Token limit reached」「Rate limit exceeded」というエラーです。これは「一定時間内に使えるトークン量の上限」に到達した場合で、契約プランごとに上限が決まっています。1時間あたり、または1日あたりで制限される仕組みです。
3つ目は「Message too long」「Input too large」というエラーです。これは1回の入力が大きすぎる場合に発生します。長大なログファイルやコード全体を一度に貼り付けると起きやすいです。
# よくあるエラー例
Error: This conversation has exceeded the context limit.
Please start a new conversation or use /compact to reduce context size.
# レート制限のエラー例
Error: You have reached the token rate limit for this hour.
Please wait before making more requests.
エラーの種類によって対処法が違うため、まずは表示されたメッセージをよく読むことが大切です。「context」と書かれていれば会話の長さの問題、「rate」「per hour」と書かれていれば時間あたりの利用量の問題と覚えておきましょう。
/compactコマンドで会話を圧縮する方法
ClaudeCodeには、長くなった会話を自動で要約・圧縮してくれる便利なコマンドがあります。それが/compactです。このコマンドを使うと、これまでのやり取りの要点だけを残し、不要な詳細を削ぎ落としてくれるため、トークン消費を大幅に減らせます。
使い方は非常にシンプルです。ClaudeCodeのプロンプト入力欄に/compactと入力してEnterを押すだけです。
> /compact
Compacting conversation... Done.
Reduced from 85,000 tokens to 12,000 tokens.
このように圧縮前後のトークン数が表示され、どれだけ節約できたかが一目で分かります。実行するタイミングとしては、(1)長い議論が一段落した時、(2)大きなファイルを読み込ませた直後、(3)エラーが出る直前で「もう少し作業を続けたい」時、が効果的です。
ただし注意点もあります。/compactはあくまで「要約」なので、細かいニュアンスや具体的なコード例が失われることがあります。重要な決定事項やコードスニペットは、別途CLAUDE.mdやメモに保存しておきましょう。
良い使い方の例:
1. ファイル群を読み込ませて設計を議論
2. 設計方針が決まったら /compact で圧縮
3. 圧縮後の文脈で実装を継続
/compactに任意の指示を加えることもできます。たとえば/compact 認証部分の議論だけ残してと書けば、その部分を優先的に保持して圧縮してくれます。重要な領域がある場合は、こうしたヒントを添えるとより良い結果になります。
コンテキストを分割して効率化する
長いプロジェクトを進める時の鉄則は、「1つの会話に詰め込みすぎない」ことです。会話を機能やフェーズごとに分割することで、各セッションのトークン消費を抑えられ、エラーに遭遇する頻度を大幅に減らせます。
具体的な分割の考え方は以下のとおりです。
- 機能ごとに分ける:「認証機能の実装」「決済機能の実装」「管理画面の実装」を別々のセッションで進める
- フェーズごとに分ける:「設計フェーズ」「実装フェーズ」「テストフェーズ」を別セッションに
- ファイル単位で分ける:複数の大きなファイルを扱う時は、1ファイル=1セッションを基本に
会話を分けると「前回までの内容を覚えていない」のではないかと心配になるかもしれません。その対策として有効なのがCLAUDE.mdの活用です。プロジェクトのルートにCLAUDE.mdというファイルを置いておくと、新しいセッションでも自動的に読み込まれ、共通の前提知識として使われます。
# CLAUDE.md の例
## プロジェクト概要
このアプリは社内向けの問い合わせ管理ツールです。
## 技術スタック
- Next.js
- Cloudflare Workers
- Cloudflare D1
## コーディング規約
- TypeScript必須
- コメントは日本語で
このようにプロジェクト共通の情報をCLAUDE.mdにまとめておけば、毎回のセッションで「うちのプロジェクトはNext.jsで…」と説明する必要がなくなり、その分のトークンを節約できます。
効率的なプロンプトの書き方
トークンを節約する最大のコツは、「短く明確に書く」ことです。非エンジニアの方が陥りがちなのが、「丁寧に説明しよう」として冗長になってしまうパターンです。AIへの指示は、人間相手と違って「省略してもOK」と覚えておきましょう。
悪い例と良い例を比較してみましょう。
悪い例(トークン多め):
「すみません、お手数なのですが、もし可能でしたら、
src/components/Header.tsx というファイルがあって、
そこに少し問題があるような気がしているのですが、
具体的にはレスポンシブ対応がうまくいっていない感じが
しているので、もし時間があれば見ていただけないでしょうか」
良い例(トークン少なめ):
「src/components/Header.tsx のレスポンシブ対応を修正して」
両者は伝えている内容はほぼ同じですが、トークン数は数倍違います。AIに対しては、礼儀や前置きを省き、要件だけをストレートに伝えるのが最適です。
他にも、以下のようなテクニックがあります。
- 箇条書きを活用する:長い文章より箇条書きの方がトークン効率が良い
- 不要な引用を避ける:「先ほど話した〜」と再掲せず、
/compactに任せる - ファイル全文ではなく該当箇所だけ渡す:行番号を指定して
src/app/page.tsx の 30-50 行目を直してのように指示 - ログは要点だけ:エラーログ全文ではなく、エラーメッセージの該当行だけを渡す
ログの渡し方の例(悪い):
(数百行のスタックトレース全部)
ログの渡し方の例(良い):
TypeError: Cannot read property 'name' of undefined
at UserCard (UserCard.tsx:15)
(ここだけ抜粋)
不要なファイル読み込みを防ぐ設定
ClaudeCodeは、デフォルトでプロジェクト内のファイルを読み込んで作業します。便利な反面、node_modulesや.next、ビルド成果物などの巨大なフォルダまで読み込んでしまうと、あっという間にトークンを消費します。これを防ぐには、読み込み対象を絞る設定が有効です。
最も基本的な方法は、.gitignoreに書かれているフォルダはClaudeCodeも自動で除外することです。Gitで除外しているフォルダは、ClaudeCodeでも基本的に対象外になります。
さらに細かく制御したい場合は、.claudeignoreというファイルをプロジェクトのルートに作成します。書き方は.gitignoreと同じです。
# .claudeignore の例
node_modules/
.next/
dist/
build/
*.log
*.lock
public/uploads/
.env*
上記のように書いておけば、ClaudeCodeはこれらのファイル・フォルダを無視するようになり、無駄なトークン消費を抑えられます。
加えて、.envファイルなどの秘匿情報を除外することは、トークン節約だけでなくセキュリティの観点でも非常に重要です。APIキーやパスワードを誤ってAIに読ませてしまうと、会話履歴に残るリスクがあります。
重要なポイント:
- 機密情報を含むファイルは必ず .claudeignore に追加
- 巨大なログファイルやデータダンプも除外対象に
- 画像や動画などのバイナリファイルも除外
レート制限とプランごとの上限
トークン上限には、「1回の会話の上限(コンテキスト)」と「一定時間あたりの上限(レート制限)」の2種類があります。前者は/compactで対処できますが、後者は時間が経過するまで待つしかありません。プランごとに上限が違うため、自分の契約内容を把握しておくことが大切です。
一般的な目安としては、無料プランや低価格プランほどレート制限が厳しく、上位プランほど余裕があります。ビジネス用途で頻繁に使うなら、上位プランへのアップグレードも検討の余地があります。
レート制限に達した時の対処法は以下のとおりです。
- 数分〜数時間待つ:時間が経てば自動で回復します
- 軽い作業に切り替える:制限が緩い時間帯に重い作業を集中させる
- プランを見直す:頻繁に当たるなら上位プランへの変更を検討
- 別のセッションで他の作業を進める:頭を切り替えるチャンスと捉える
レート制限が出やすい状況:
- 短時間に大量のファイル編集を依頼
- 巨大なファイルを連続で読み込ませる
- 並列で複数のClaudeCodeセッションを動かす
待ち時間中は、設計の見直しやドキュメントの整理など、AIを使わない作業に時間を充てるのがおすすめです。
トークン使用量を可視化する
「自分が今どれくらいトークンを使っているか」を把握できると、節約への意識が高まります。ClaudeCodeには使用量を確認するコマンドや表示機能があるので、ぜひ活用しましょう。
代表的なコマンドは/costまたは/usageです(バージョンにより名前が異なる場合があります)。
> /cost
Current session:
Input tokens: 45,000
Output tokens: 12,000
Total cost: $0.85
このように現在のセッションで消費したトークン数とコストが表示されます。定期的に確認することで、「思った以上に使っている」と気づけます。
また、ClaudeCodeの画面下部やステータスバーに、現在のコンテキスト使用率がパーセンテージで表示されるバージョンもあります。これが80%を超えたら/compactの合図、と覚えておきましょう。
使用率の目安:
- 0〜50%:安心して作業継続
- 50〜80%:そろそろ整理を意識
- 80〜95%:/compact を実行
- 95%以上:/clear で会話リセットも検討
可視化することで、無駄な発言を控えるようになり、自然と効率的なプロンプトが書けるようになります。
FAQ
Q1. /compactと/clearの違いは何ですか?
/compactは「会話の要約を残して圧縮」するコマンドで、過去の文脈は失われずに使い続けられます。/clearは「会話履歴を完全に消去」するコマンドで、過去のやり取りはすべてリセットされます。作業を続けたいなら/compact、まったく別のタスクを始めるなら/clearが適切です。
Q2. トークン上限エラーが出たら、それまでの作業内容は失われますか?
いいえ、エラーが出てもファイルへの変更などは保存されたままです。失われるのは「会話の続き」だけです。/compactや/clearで会話をリフレッシュすれば、すぐに作業を再開できます。
Q3. 日本語と英語、どちらの方がトークンを消費しますか?
一般的に日本語の方が同じ意味を伝えるのに多くのトークンを使います。これは日本語が1文字につき複数トークンに分解されやすいためです。ただし、業務で日本語のやり取りが必要なら無理に英語にする必要はありません。冗長表現を減らす方が効果的です。
Q4. プロンプトを短くしすぎてAIに伝わらない時はどうすればいいですか?
「短く」と「曖昧」は別物です。短くしても、必要な情報(対象ファイル、目的、制約条件)は必ず含めましょう。たとえば「ボタンを直して」だけでは伝わりませんが、「Header.tsxのログインボタンの色を青に変更して」なら短くても十分に伝わります。
Q5. 自動で/compactを実行する設定はありますか?
バージョンによっては、コンテキスト使用率が一定を超えると自動で圧縮が走る「Auto-compact」機能が用意されています。設定ファイルで有効化できます。手動で意識しなくて済むので、初心者の方には特におすすめです。
Q6. レート制限はどのくらいで回復しますか?
プランによりますが、多くは1時間ごとに枠がリセットされる仕組みです。日次の上限がある場合は翌日の同時刻に回復します。詳しくは契約しているプランのドキュメントを確認してください。
Q7. CLAUDE.mdに書く内容が多くなりすぎるのも問題になりますか?
はい、CLAUDE.mdは毎回のセッションで読み込まれるので、内容が膨大だと逆にトークンを浪費します。1,000〜3,000文字程度に抑え、本当に共通で必要な情報だけを書きましょう。詳細な仕様は別ファイルに分けるのがおすすめです。
まとめ
ClaudeCodeのトークン上限エラーは、仕組みを理解すれば怖くありません。重要なのは「/compactで圧縮する」「会話を機能ごとに分割する」「不要なファイルを除外する」「短く明確なプロンプトを書く」の4つです。これらを習慣化すれば、上限エラーに悩まされることなく快適にClaudeCodeを使い続けられます。トークンは「お金」と「時間」に直結する貴重な資源です。意識的に節約することで、より長く、より効率的にAIと協働できるようになります。今日から早速、/compactコマンドを実際に使ってみて、トークン使用量の変化を実感してみてください。