CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/API & SDK
API & SDK/2026-05-23上級

Claude API のジョブキューに優先度と公平性を組み込む設計 — 5,000万DL個人開発で実装したバックプレッシャーの実践

Claude API を本番運用すると必ず詰まる「長文1リクエストが短文100リクエストを止める」問題に、3層プライオリティキューと DRR で公平性を入れた実装の話です。アーティスト・個人開発者の廣川政樹が5,000万DLアプリで運用してきた構成を、コードと運用メトリクスとともに共有します。

claude-api81priority-queuefair-schedulingbackpressureproduction87

プレミアム記事

Claude API を組み込んだ機能を本番で動かし始めて1年が経ったあたり、自分のサーバが落ちる原因のほとんどは「Claude が遅い日」ではなく「リクエストが詰まる順序」にあると気付きました。きっかけは、私が個人で運営しているアプリのレビュー自動返信ワーカーで、ある朝だけ App Store の英語レビューが大量に届き、その背後で日本語レビューが90分待たされていた、という小さな事故です。

レビュー件数を数えると、その朝は英語側に 1 件あたり 18,000 文字を超える長文レビューが 3 件入っていて、それぞれの Claude API 呼び出しに 12〜18 秒かかっていました。一方で日本語側は 1 件あたり 600 文字前後で、本来なら 1.5 秒で返るはずのジョブが、先にキューに入った長文 3 件の後ろに並んだまま動けなくなっていたのです。FIFO(先入先出)で処理する素朴なワーカー設計が、ピーク時に短文ユーザーを犠牲にしていました。

この記事は、そこから半年かけて自分のワーカーに優先度と公平性を入れていった設計の話です。Claude の公式 SDK には「並列リクエスト数を絞れ」「リトライを設計しろ」と書いてありますが、複数テナント・複数優先度・長文と短文の混在を本番で 1 年捌くと、それだけでは足りないことが見えてきます。今日は、私が実際に組んだ 3 層プライオリティキューと、DRR(Deficit Round Robin)でテナント間の公平性を保証する仕組みを、コードと運用メトリクスごと共有します。

なぜ「リクエスト順」で処理してはいけないのか — 詰まる構造の正体

最初の素朴な設計は、Redis の LIST に enqueue して、ワーカー 4 並列で BRPOP するだけの FIFO でした。Claude API の messages.create は同時実行 4 本までという自分のレート上限に収まっていて、平常時はこれで何の問題もありません。

ところが、入力トークン量が極端に偏ると、この設計は機能しなくなります。具体的には次のような状況が起きます。

  • 長文ジョブ(18,000 文字 = 約 9,000 入力トークン)の処理時間は中央値 12.4 秒、p99 で 21.8 秒
  • 短文ジョブ(600 文字 = 約 300 入力トークン)の処理時間は中央値 1.5 秒、p99 で 3.2 秒
  • 4 並列ワーカーが全て長文を掴むと、その後に来た短文ジョブは最大 22 秒待たされる

平常時に「短文 100 件のスループット」と「長文 3 件のスループット」を比較すると、後者が前者を完全に支配します。これは Head-of-Line Blocking と呼ばれる典型的な問題で、ネットワーク機器やデータベースの世界では古典的に解かれていますが、Claude API ワーカーでも全く同じことが起こります。

私の場合、最も顕在化したのは「ユーザーが Discord で『なんで返事こないの?』と聞いてきた」という形でした。レビュー返信は SLA を持たない非同期処理だと思っていたのですが、実際にはユーザーは数分待つだけで不安になります。FIFO は公平に見えて、最も多数の短文ユーザーを継続的に犠牲にする設計だったわけです。

設計の3つの目標 — レイテンシ・スループット・公平性のトレードオフ

詰まりを直すために、私は次の 3 つを設計目標に置き直しました。順番が大事で、上から優先します。

  1. クリティカル経路の即時応答: ユーザー操作起点のリクエスト(例: アプリ内の「AI に聞く」ボタン)は p99 で 2 秒以内に返したい
  2. テナント間の公平性: あるテナント(私のアプリ群でいうと「あるアプリ ID」)が大量投入しても、他のテナントの平均待ち時間を 1.5 倍以内に抑える
  3. バッチスループットの最大化: 夜間に走る一括処理は、上 2 つを侵害しない範囲で全力スループットを出す

この 3 つは互いにトレードオフです。1 を完璧にやろうとすると 3 が止まり、2 を強くすると 1 のテール(長文の遅延)が増えます。本番で 1 年回した結果、私はこの 3 つを以下のように工学的に分担させました。

  • 1 は「3 層プライオリティキュー」で、critical キューを他に優先する形で解決
  • 2 は「DRR(Deficit Round Robin)」で、テナント単位のクォータを毎ラウンドで補充する形で解決
  • 3 は「batch キューに最低保証スループットを与える」と「message_batches API を併用する」の二段構えで解決

ここから先は実装の話です。コードは Python の asyncio ベースですが、Node.js や Go でも同じ構造で書けます。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
3層プライオリティキュー(critical/standard/batch)と DRR を組み合わせた具体的な実装コード(Python・約180行)
p99 レイテンシを 11.2 秒 → 1.8 秒に短縮した実測値と、その背景にある飢餓回避の設計判断
429 / Retry-After を尊重しながら『予算超過テナント』を自動降格する仕組みと、本番で踏んだ4つの落とし穴
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

API & SDK2026-07-13
Claude API の同時実行を束ねる — シングルフライトで重複推論とキャッシュ・スタンピードを防ぐ
同一プロンプトが同時に何度も Claude へ飛ぶ重複推論を、シングルフライト(request coalescing)で束ねる設計です。プロセス内・分散環境の実装、ジッター付きリトライ、負のキャッシュまで実測付きでまとめました。
API & SDK2026-07-03
同時リクエスト数はいくつまで持つのか — Little の法則と実測メモリで決める Claude API 本番デプロイのインフラ要件
同時リクエスト数・待ち行列長・メモリはいくつに設定すべきか。Claude API 本番デプロイのインフラ要件を Little の法則と実測ハーネスで数字から導く手順を、夜間バッチで OOM を踏んだ経験をもとに整理しました。
API & SDK2026-06-28
弱いモデルへ静かに落ちる方がエラーより怖い — Claude API のモデル降格に「下限」を設ける設計
無人運用のパイプラインでモデルが使えなくなったとき、弱いモデルへ自動で落ちる実装は危険です。タスクごとの能力契約と降格予算で「どこまで落ちたら止めるか」を決める設計を、個人開発の自動運用の実体験から解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →