AIコーディング 2026.06.03

Claude Code「Rate limit exceeded」の原因と対処法|無料枠・API制限・リトライ戦略【2026年版】

タグ:Claude Code / APIエラー / Rate Limit / API制限 / 開発効率

Claude Codeで「Rate limit exceeded」が出るのはなぜか

Claude Codeを使っていると、突然「Rate limit exceeded」というエラーが表示されることがあります。このエラーは「使用量の上限に達した」という意味で、APIへのリクエストが一時的に拒否された状態を示します。

指定時間内にAPIに送信できるリクエスト数には上限があり、その上限を超えると発生するエラーです。個人開発から商用利用まで、幅広いシーンで遭遇する可能性があります。

このエラーが出ると開発が止まってしまうため、原因を素早く特定し、適切に対処することが重要です。

「Rate limit exceeded」の3つの主な原因

1. 無料枠・プランの使用量上限に達した

Claude CodeやClaudeのAPIには、料金プランに応じた1日あたりの使用量制限があります。無料プランを使っていたり、課金していない状態では、比較的短い時間で上限に達する可能性が高いです。

特にClaudeを短期間に何度も使う開発スタイルだと、制限に引っかかりやすくなります。

2. 短時間での大量リクエスト送信

使用量の合計が制限以下でも、1分間・1時間単位での「リクエスト数」が制限されていることがあります。ループ処理や自動化スクリプトで立て続けにAPIを呼び出すと、このレート制限に引っかかります。

例えば、100個のファイルを同時にClaudeで分析する処理などがこれに当たります。

3. 複数のプロジェクト・チームで同じAPIキーを共有

1つのAPIキーを複数人で使い回していたり、複数のプロジェクトで並行利用していると、短時間で使用量が積み重なり、制限を超えやすくなります。

対処法1: 使用量と上限を確認する

アカウント画面で現在の使用状況を確認

Claude CodeやClaudeのAPIダッシュボードでは、現在の月間使用量を確認できます。

  1. Claude公式のAPI利用管理画面にログイン
  2. 左メニューから「Usage」(使用量)を選択
  3. 今月の累計リクエスト数やトークン数を確認

無料プランの場合、1日あたりのリクエスト数や月間の上限がある可能性があります。そこに到達していないかチェックしましょう。

プラン別の制限内容を理解する

Claudeの利用プランによって、制限内容が異なります:

  • 無料プラン: 1分間に3リクエスト、1日数十リクエストの上限
  • 有料プラン: 月単位の使用量制限(ドル換算)

詳細はAnthropic公式ドキュメントで公開されています。

対処法2: 少し待ってからリトライする

「Rate limit exceeded」が出た場合、最も簡単な対処は「待つ」ことです。

1分待ってからリクエストを再送

無料プランの場合、1分間のリクエスト数制限がかかっていることが多いです。1分待つだけで、制限がリセットされ、再度リクエストを送信できるようになります。

# シェルスクリプトで1分待機してから再実行
sleep 60
# ここに再度のリクエスト処理を書く

エクスポーネンシャルバックオフを実装する(推奨)

本格的に自動化処理を組む場合、「最初は数秒待機 → だめなら10秒 → だめなら30秒」というように、待機時間を段階的に延ばしていく「バックオフ」戦略が効果的です。

Pythonを使う場合の実装例:

import time
import anthropic

def call_claude_with_retry(prompt, max_retries=5):
    client = anthropic.Anthropic()
    wait_time = 1  # 初期待機時間(秒)
    
    for attempt in range(max_retries):
        try:
            message = client.messages.create(
                model="claude-3-5-sonnet-20241022",
                max_tokens=1024,
                messages=[
                    {"role": "user", "content": prompt}
                ]
            )
            return message.content[0].text
        except anthropic.RateLimitError:
            if attempt < max_retries - 1:
                print(f"Rate limited. Waiting {wait_time} seconds...")
                time.sleep(wait_time)
                wait_time *= 2  # 待機時間を倍にする
            else:
                print("Max retries exceeded.")
                raise

# 使用例
result = call_claude_with_retry("Hello, Claude!")
print(result)

このコードは、APIが「Rate limit exceeded」を返したら、自動的に待機時間を増やしながら再試行します。

対処法3: APIキーを個別に発行・管理する

複数人で同じAPIキーを使い回している場合、個人やプロジェクト単位でAPIキーを分けることで、制限のリセットタイミングをずらせます。

新しいAPIキーを発行する手順

  1. Anthropic Consoleにログイン
  2. 「API Keys」メニューから「Create Key」をクリック
  3. 任意の名前を付ける(例:「Project-A」「Developer-B」)
  4. 新しいキーをコピーして、環境変数に設定
# 環境変数に新しいキーを設定
export ANTHROPIC_API_KEY="sk-ant-xxxxxxxxxxxx"

# または .env ファイルに記載
echo "ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxx" >> .env

キーごとに使用量が分離されるため、1人が制限に達しても他の人は続行できるようになります。

対処法4: 有料プランへ切り替える

無料プランの制限が頻繁に引っかかる場合、有料プランへの切り替えが根本的な解決になります。

Claudeの有料プランの概要

Claudeは「従量課金制」で、使った分だけ料金が発生する仕組みです(従来の「定額プラン」ではない)。

  • 料金: 1,000トークン(おおよそ750日本語文字)あたり数円程度
  • 上限リセット: 月単位で使用量がカウントされ、月末にリセット
  • 無料枠: 登録直後は一定額までの試用期間あり

有料プランに切り替えると:

  • 1日あたりのリクエスト数制限が大幅に緩和される
  • 月間の総使用量制限が広がる
  • 複数のプロジェクトを並行利用しやすくなる

有料プランへの切り替え手順

  1. Anthropic Consoleで「Billing」を選択
  2. 「Add Payment Method」からクレジットカード情報を登録
  3. 課金が有効になると、すぐに新しい制限内容が適用される

つまずきやすいポイントと解決策

ポイント1: リトライしても何度もエラーが出る

原因: 実装したリトライロジックに問題がある可能性。

解決策:

  • バックオフの待機時間が十分に長いか確認する(最低でも30秒以上が目安)
  • 最大リトライ回数の上限を設けているか確認(無限ループを防ぐため)
  • エラーメッセージ自体をログに出力して、他の種類のエラーではないか確認
except anthropic.RateLimitError as e:
    print(f"Rate limit error: {e}")
    # このように詳細をログに記録
except anthropic.APIError as e:
    print(f"Other API error: {e}")
    # Rate limitではない別のエラー

ポイント2: 無料枠の上限が不明確

原因: Claudeの無料枠の仕様が公開ドキュメントに詳しく記載されていない場合がある。

解決策:

  • Anthropic公式FAQを確認
  • コンソールの「Usage」画面で実際の制限を確認
  • 小規模なテストで上限を探り当てる(例:1日10リクエストまで大丈夫か試す)

ポイント3: 古いコードやライブラリの問題

原因: 古いバージョンのAnthropicクライアントライブラリを使っていると、レート制限の処理が正しく実装されていない可能性がある。

解決策:

# Pythonの場合、最新版に更新
pip install --upgrade anthropic

# バージョン確認
python -c "import anthropic; print(anthropic.__version__)"

応用: 複数のLLM APIプロバイダーを切り替える戦略

より高度な対処法として、Claude Codeのレート制限に引っかかったときに、自動的にGPT-4やGeminiなど別のLLMに切り替える「APIルーティング」という手法があります。

参考ソースのDev.toの記事によると、実際に複数のプロバイダーのAPIレスポンス速度やコストを測定し、その時々で最適なプロバイダーに自動振り分けするシステムを構築している例が報告されています。

ただし、このアプローチは:

  • 複数のAPIキーと課金体制を管理する複雑さが増す
  • プロバイダーごとに応答品質が異なるため、出力の品質管理が必要
  • スモールスタートの段階では過度な最適化になる可能性

という課題もあるため、まずは「Claude Code1つで効率的に使い切る」ことを優先し、本当に必要になってから検討するのが現実的です。

まとめ

「Rate limit exceeded」エラーが出たときの対処は、優先順位が高い順に:

  1. すぐに実施: 1分待つか、バックオフリトライを実装する
  2. 短期的: APIキーを個別に発行して制限をリセットする
  3. 中期的: 有料プランへ切り替えて根本的に制限を緩和する
  4. 長期的: 複数のLLM APIを併用する仕組みを整える

開発の初期段階では対処法1・2で対応し、プロジェクトが成長して本格的にClaudeを活用するフェーズになったら、対処法3・4を検討するという段階的なアプローチがお勧めです。


あわせて読みたい

参考ソース