CLAUDE LABEN
CODE — Claude Codeにリモート管理者向けTrusted Devicesが追加。リモートセッション前に端末を検証できますCODE — ストリーミング時のCPU使用が約37%削減され、長時間の自動運用がより安定しますCODE — フルスクリーンのマウスクリック操作と音声入力の修正、Linuxの音声検出改善が入りましたAUTH — 静的APIキーを、短命でスコープ付きのWIF資格情報へ置き換えられるようになりましたTEAM — SlackでClaudeを直接タグ付けし、作業しながらタスクを委譲できるようになりましたWORKFLOW — dynamic workflowsがリサーチプレビューで登場。込み入った作業を自分で手順に分解しますCODE — Claude Codeにリモート管理者向けTrusted Devicesが追加。リモートセッション前に端末を検証できますCODE — ストリーミング時のCPU使用が約37%削減され、長時間の自動運用がより安定しますCODE — フルスクリーンのマウスクリック操作と音声入力の修正、Linuxの音声検出改善が入りましたAUTH — 静的APIキーを、短命でスコープ付きのWIF資格情報へ置き換えられるようになりましたTEAM — SlackでClaudeを直接タグ付けし、作業しながらタスクを委譲できるようになりましたWORKFLOW — dynamic workflowsがリサーチプレビューで登場。込み入った作業を自分で手順に分解します
記事一覧/Claude Code
Claude Code/2026-06-28上級

ストリーミングを並行で束ねると、ノートPCの CPU が先に音を上げる — 実測値で並行本数を絞る適応スロットルの設計

ストリーミングのCPU使用が軽くなっても、複数セッションを1台で束ねるとホストのCPUが先に飽和します。固定セマフォの限界と、実測CPUに応じて並行本数を上下させる適応ゲートの実装を、動くコードと実測値で解説します。

Claude Code171並行処理ストリーミング9パフォーマンス2自動運用3

プレミアム記事

先日の Claude Code 更新で、ストリーミング時の CPU 使用が約37%削減されました。長時間回し続ける運用にとっては素直にありがたい底上げです。ただ、私自身が複数サイトの自動投稿を1台のマシンで並行させていると、この種の改善で楽になるのは「1本あたりの重さ」であって、「同時に何本も束ねたときに先に音を上げるのはどこか」という問題は別に残り続けます。

実際、私の手元では、各サイトの記事生成を並行で走らせた瞬間にファンが唸り出し、1本ずつ流していたときには気づかなかった遅延が p95 で跳ね上がる、という現象に何度もぶつかりました。メモリは余っているのに、です。ここで取り上げたいのは、その律速が「ホストの CPU」だったときの対処です。勘で決めた固定の並行数をやめ、実測 CPU に合わせて並行本数を自動で絞る仕組みを、動くコードと手元の実測値で組み立てていきます。

なぜメモリより先に CPU が音を上げるのか

ストリーミング応答は、サーバーから届く SSE イベントを1つずつ受け取り、差分の JSON をパースし、テキストを継ぎ足していく処理の連続です。1本だけなら大した負荷ではありません。ところが同じ処理を10本20本と並行させると、イベントループ上で「細かいパース+コールバック」の山が絶え間なく発生し、CPU が律速になります。

ここで効いてくるのが、各セッションが待ち時間の少ない忙しいコルーチンだという点です。ネットワーク待ちで眠っている時間より、届いたチャンクを捌いている時間の比率が高いワークロードでは、I/O 並行の常識(「待ちが多いからたくさん並べてよい」)が崩れます。メモリ使用は本数に対しておおむね線形で予測しやすい一方、CPU は本数を増やすと飽和点で急に崖を迎えます。だからこそ、メモリのウォッチドッグとは別に、CPU を見て並行数を決める層が要ります。

「同時に何本まで」を勘で決めない

多くのバッチ処理は、次のような固定セマフォで並行数を縛ります。

import asyncio
 
# 勘で決めた固定値。開発機では快適だったが…
sem = asyncio.Semaphore(12)
 
async def run_one(site, client):
    async with sem:
        async with client.messages.stream(
            model="claude-sonnet-4-6",
            max_tokens=4096,
            messages=[{"role": "user", "content": build_prompt(site)}],
        ) as stream:
            async for _ in stream.text_stream:
                pass
        return await stream.get_final_message()

このコードの問題は、12 という数字がある特定のマシンの、ある特定の瞬間に最適化されている点です。私の場合、開発に使っている性能の高い Mac では12本でも余裕でしたが、同じスクリプトを古いミニ PC のスケジュール実行に載せた途端、CPU が96%前後に張り付き、各ストリームの実時間が単独実行のときの2.4倍ほどに伸びました。逆に、他の処理が一切いない大きなマシンでは12本では使い切れず、遊ばせてしまいます。固定値は「速い側」にも「遅い側」にも合いません。

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

この記事の続きを読む

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

この記事で得られること
固定セマフォが「速いマシン基準」で決め打ちされ、非力な実行環境でCPUを飽和させる仕組み
ホストCPUをEWMAで実測し、目標使用率に対して並行本数を1本ずつ上下させる適応ゲートの実装
過負荷時に新規受付を止めて最低1本を守る背圧設計と、複数マシンで同じコードを使い回す運用の勘所
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Claude Code2026-06-25
レート上限が倍増しても自動運用の間隔は詰めない — 増えた余裕は429対策に回す
Claude Code のレート上限が引き上げられたとき、間隔を詰めたくなる気持ちを抑えて、増えた余裕を再試行枠に回した実例。スループットの余裕を安定性に変える自動運用の設計メモです。
Claude Code2026-03-19
Unity × Claude Code 実践ワークフロー — シェーダー自動生成からCI/CDまで【上級編】
Unity 開発に Claude Code を組み込んで半年運用した実体験から、URP シェーダー自動生成・エディタ拡張・GitHub Actions CI/CD・実機パフォーマンス測定の実装と、サンプルでは見えない運用上の落とし穴を、動くコードと実測値つきで整理します。
Claude Code2026-06-28
無人で回す自動処理に、静的 API キーを置きっぱなしにしない — WIF で短命資格情報へ切り替える
Claude Code が静的 API キーを WIF(Workload Identity Federation)の短命・スコープ付き資格情報へ置き換える方向に進んでいます。深夜に無人で回すスケジュール実行で、キー漏れの被害範囲を構造的に小さくする移行手順を、動くコードとつまずきどころ付きで整理します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →