目次
「並列=安い」という誤解
エージェントアーキテクチャの定番テクニックに「ファンアウト」がある。1つのオーケストレーターが複数のサブエージェントを並列に起動し、それぞれに独立したサブタスクを割り当てる。リサーチ、マルチサービスのデータ収集、横断検索——並列化で壁時計時間(wall-clock time)が劇的に縮むのは事実だ。
だが、ここで多くのチームが踏む落とし穴がある。「並列にすれば速くなる」を「並列にすれば安くなる」と取り違えることだ。トークン課金は実行時間ではなく、入力・出力トークン量で決まる。10件を逐次で叩いても並列で叩いても、API呼び出しの実トークンが同じなら課金は変わらない——ように見える。実際には、並列化は3つの隠れコストを生む。
ファンアウトはレイテンシを買うためにトークンを支払う取引だ。壁時計時間の短縮価値が、(1)コンテキスト複製、(2)律速による待ち、(3)リトライ掛け算——の3コストを上回るときだけ、並列は正当化される。この損益分岐点を、KanseiLinkの実測レイテンシ・成功率データで可視化する。
コスト①: コンテキスト複製税
サブエージェントは、それぞれが独立したコンテキストを持つ。システムプロンプト、ツール定義(MCPツールスキーマ)、タスク指示、共有状態のスナップショット——これらがサブエージェントの数だけ複製される。オーケストレーターが5つのサブエージェントをファンアウトすれば、共通のシステムプロンプトとツール定義は5回入力トークンとして課金される。
MCPツール定義は特に重い。ツール定義がコンテキストの相当部分を占めることは既知の問題で、これがサブエージェント数だけ掛け算される。逐次実行なら1つのコンテキストを使い回せる場面でも、並列では各エージェントがフルセットを抱える。これが「コンテキスト複製税」だ。
「サブエージェントを増やすほど速くなる」は途中まで正しいが、入力トークンは並列幅に線形に増える。プロンプトキャッシュで共通部分を再利用しなければ、5並列は入力トークンを実質5倍課金する。速度は頭打ちでも、コストは増え続ける領域が存在する。
コスト②: 最遅サービスによる律速
並列バッチは通常、全サブエージェントの完了を待ってから次に進む。つまりバッチの所要時間は、最も遅いサービスのレイテンシで決まる。KanseiLinkの実測データを見ると、サービス間のレイテンシ差は無視できない。
| サービス | 平均レイテンシ | 成功率 | 並列バッチでの役割 |
|---|---|---|---|
| Backlog MCP | 128ms | 90.1% | 速い・安全 |
| Slack MCP | 163ms | 91.2% | 速い・安全 |
| kintone MCP | 199ms | 78.7% | 中速 |
| freee MCP | 216ms | 90.1% | 中速・安全 |
| SmartHR | 337ms | 39.1% | 遅い・危険 |
| Salesforce Japan | 474ms | 42.9% | 最遅・律速段階 |
ここが肝心だ。Backlog(128ms)とSlack(163ms)を並列で叩くだけなら、バッチは約163msで終わる。だが同じバッチにSalesforce(474ms)を1つ混ぜた瞬間、バッチ全体は474ms待ちになる。速いサービスのサブエージェントは、最遅サービスの完了を待つ間アイドルする。並列度を上げても、律速段階が遅ければ壁時計の短縮効果は頭打ちになる——これがアムダールの法則のエージェント版だ。
コスト③: 低成功率サービスのリトライ掛け算
3つ目が最も見落とされやすい。失敗はリトライを生み、リトライはコンテキストを再消費する追加実行を生む。並列幅を広げるほど、低成功率サービスでは失敗の絶対数が増える。
成功率39%のSmartHRに10件の並列呼び出しを投げる場合を考えよう。期待成功は約4件、残り約6件はリトライ対象になる。各リトライはサブエージェントのコンテキスト(複製税込み)を再度消費する。一方、成功率90%超のverified層(freee・Slack・Backlog)に同じ10件を投げれば、失敗は約1件で済む。同じ並列幅でも、成功率帯によってリトライコストは6倍違う。
10件並列、成功率帯別の期待失敗数
freee・Slack・Backlog
kintone
SmartHR
つまり、低成功率サービスへのファンアウトは「速く失敗する」だけでなく「複製税込みで失敗を量産する」。リトライ税の経済学が、並列化によって増幅される構図だ。
損益分岐点 — いつ並列にすべきか
では、ファンアウトはいつ正当化されるのか。並列が有利になる条件は、突き詰めると次の3つに集約される。
| 条件 | 並列が有利 | 逐次が有利 |
|---|---|---|
| タスク依存性 | 互いに独立 | 前の結果が次の入力 |
| サービスのレイテンシ | 高い(待ち短縮の価値大) | 低い(verified層128〜216ms) |
| サービスの成功率 | 高い(リトライ掛け算リスク小) | 低い(SmartHR 39%等) |
| 並列幅 | 多数(短縮効果が複製税を上回る) | 少数(複製税が勝つ) |
具体例で言えば、10サービスから独立にデータを収集する高レイテンシのリサーチタスクは並列の典型的な勝ちパターンだ。待ち時間が支配的で、依存がなく、収集先が高成功率なら、複製税を払ってでも壁時計を縮める価値がある。
逆に、verified層を2〜3件だけ叩く軽量タスクは逐次のほうが安いことが多い。Backlog 128ms × 3件を逐次で叩いても400ms程度で、コンテキストは1つで済む。ここで3並列にすれば速度はわずかに上がるが、入力トークンは3倍になる。「速くなるが、割に合わない」典型例だ。
実践プレイブック
- 独立タスクだけ並列化する — 依存関係のあるタスクを無理に並列化すると、結局待ち合わせが発生し、複製税だけが残る。
- バッチを成功率帯で揃える — verified層と低成功率サービスを同一バッチに混ぜない。混在は最遅・最低成功率に律速され、最も非効率な組み合わせになる。
- 遅いサービスを隔離する — Salesforce(474ms)やSmartHR(337ms)は律速段階。別バッチに分離し、速いサービスのスロットを待たせない。
- 共通コンテキストはプロンプトキャッシュで再利用 — システムプロンプト・ツール定義をキャッシュすれば、複製税の大部分を回収できる。プロンプトキャッシュのコスト削減はファンアウトと特に相性が良い。
- ファンアウト幅を成功率に応じて調整 — 低成功率サービスは並列幅を絞り、リトライの絶対数を抑える。事前に
get_insightsでレイテンシ・成功率を確認してバッチ設計に反映する。
ファンアウトは強力だが、無料ではない。「レイテンシをトークンで買う取引」と捉え、対象サービスのレイテンシと成功率を事前に把握してバッチを設計すれば、複製税・律速・リトライ掛け算の3コストを最小化できる。KanseiLinkの実測データは、そのバッチ設計の入力になる。
FAQ
サブエージェントの並列実行はコストを増やしますか?
多くの場合増やします。並列(ファンアウト)は壁時計時間を縮めますがトークンコストは下げず、(1)各サブエージェントのコンテキスト複製、(2)最遅サービスによる律速、(3)低成功率サービスへのリトライ掛け算、という3つの隠れコストを生みます。「速い」は「安い」を意味しません。
ファンアウトの損益分岐点はどこですか?
壁時計短縮の価値が複製トークンのコスト増を上回るときです。(1)タスクが独立、(2)対象サービスが高レイテンシ、(3)対象サービスが高成功率、の3条件が揃うほど並列が有利。逆に安く速く高成功率のverifiedを少数叩くだけなら逐次が効率的です。
なぜ最も遅いサービスがバッチ全体を律速するのですか?
並列バッチは全サブエージェントの完了を待つためです。verified層は128〜216msですが、Salesforceは474ms、SmartHRは337ms。Salesforceを1つ混ぜると他が128msでも全体は474ms待ちになり、遅いサービスが律速段階になります。
低成功率サービスを並列で叩くとなぜコストが膨らむのですか?
失敗がリトライを生み、リトライが複製税込みの追加実行を生むからです。成功率39%のSmartHRに10件並列を投げると期待失敗は約6件、verified層(90%+)なら約1件。同じ並列幅でも成功率帯でリトライコストは6倍違います。
並列実行のコストを抑えるベストプラクティスは?
(1)独立タスクだけ並列化、(2)バッチを成功率帯で揃える、(3)遅いサービスを別バッチに隔離、(4)共通コンテキストをプロンプトキャッシュで再利用、(5)ファンアウト幅を成功率に応じて調整。get_insights で事前にレイテンシ・成功率を確認してバッチ設計に反映できます。
本記事のレイテンシ・成功率は、KanseiLinkがエージェントから収集した実測アウトカム報告(2026年5月時点)の get_insights 実測値です: Backlog 128ms/90.1%、Slack 163ms/91.2%、kintone 199ms/78.7%、freee 216ms/90.1%、SmartHR 337ms/39.1%、Salesforce Japan 474ms/42.9%。「期待失敗数」は成功率から算出した期待値(例: 成功率39%×10件→期待失敗約6.1件)であり、実際の分布は試行ごとに変動します。コンテキスト複製・律速・リトライ掛け算のコスト構造は、一般的なオーケストレーター/サブエージェント型アーキテクチャ(全サブエージェントが独立コンテキストを持ち、バッチ完了を待ち合わせる前提)に基づくモデルであり、ランタイムの実装(コンテキスト共有・ストリーミング集約・部分完了の扱い)により差異が生じます。具体的なトークン単価・課金額は使用モデル・プロバイダ・プロンプトキャッシュ適用状況に依存するため、本記事では金額を明示せず相対的なコスト構造として論じています。損益分岐点の評価は分析的モデルであり、個別ワークロードでの実測検証を推奨します。最新のレイテンシ・成功率は各 get_insights でご確認ください。