Claude Code に「サブエージェントを並列に立てて分担させる」と、速くなりそうに思えます。実際にはどうか。互いに独立した4つの課題を1つのリポジトリに置き、自分で順に解く(直列) と 4つのサブエージェントに同時に任せる(並列) を、Sonnet 5.5 で計32回比べました。Claude Code 2.1.303、claude -p、2026-10-19 実施です。
結論
- 課題が小さいと、並列は遅くて高い。 直列なら計33秒で終わる4課題では、並列の所要時間は 1.29倍(中央値 33秒→43秒)、費用は 2.37倍(0.107→0.254ドル)でした
- 課題が重くなると、並列が速くなる。 直列で61秒かかる4課題では、並列は 0.74倍(61秒→45秒)、費用は 1.54倍(0.188→0.289ドル)
- 出来はどちらも同じ。 32回すべてで、4課題とも隠しテストに合格しました
- 並列の所要時間は、課題の重さが変わってもほぼ 43〜45秒で動きませんでした。起動と待ち合わせの固定の時間があり、直列の合計がそれを超えたときだけ並列が得をします。この環境では、その分かれ目は直列で40〜60秒のあたりでした
- 費用は並列が常に高い。サブエージェントは1つずつ、前置き(システムプロンプト)を読み直し、課題を読み直し、テストを回し直します
測り方
課題
隠しテストで合否が決まる小さな Python の課題を4つずつ、1つのリポジトリの別々のディレクトリに置きました(各ディレクトリに TASK.md と見えるテスト1〜2件)。4つは互いに依存しません。
| 組 | 中身 | 直列の所要時間(中央値) |
|---|---|---|
| 軽い組(T2〜T5) | 区間の併合/TTL つき LRU キャッシュの修正/式の評価/npm 風 semver の範囲判定 | 33秒 |
| 重い組(T3〜T6) | TTL キャッシュの修正/式の評価/semver の範囲判定/厳密な JSON パーサ(誤りの位置・入れ子 5000 段) | 61秒 |
2つの条件
指示文は、違いを最小にしました。
直列:This repository contains four independent tasks in the directories T2, T3, T4 and T5, each described by its TASK.md. Complete all four tasks yourself, one after another. When done, reply with a one-line summary.
並列:This repository contains four independent tasks in the directories T2, T3, T4 and T5, each described by its TASK.md. Use the Task tool to launch four subagents in parallel (all four in a single message), one per directory, each told to complete the task in its directory. After they finish, run each directory's tests yourself and fix anything left. When done, reply with a one-line summary.
起動はどちらも同じで、直列の条件だけサブエージェントの道具を外しています。
claude -p "<指示文>" --model claude-sonnet-5-5 --output-format json \
--allowedTools Bash,Read,Edit,Write,Glob,Grep,Task --permission-mode acceptEdits \
--setting-sources project --strict-mcp-config --disable-slash-commands < /dev/null
# 直列の条件だけ:--disallowedTools Task
- 合否:4つのディレクトリそれぞれに隠しテストを当て、4つとも全部通れば成功
-
時間:起動から終了までの壁時計。費用:出力 JSON の
total_cost_usd(定価換算、サブエージェントの分を含む) -
並列で本当に4つ立てたか:出力 JSON の
subagent_stats.spawned。並列の16回はすべて 4 でした。サブエージェントのモデルは主と同じ Sonnet 5.5(modelUsageに Sonnet と、Claude Code が内部で使う Haiku のごく小さな分だけ) - 回数:軽い組 各10回、重い組 各6回。直列と並列を1本ずつ同時に走らせ、時間帯の差を打ち消しました
- 測り方と予想は走らせる前に書いて固定しました。重い組は、軽い組の結果を見てから足したもので、足す前に予想を書いています
結果
| 組 | 条件 | 回数 | 4課題とも成功 | 所要時間(中央値) | 最小〜最大 | 費用(中央値) | 主のターン数 |
|---|---|---|---|---|---|---|---|
| 軽い(T2〜T5) | 直列 | 10 | 10 | 33.2秒 | 28〜45秒 | 0.107ドル | 5 |
| 軽い(T2〜T5) | 並列 | 10 | 10 | 42.8秒 | 39〜57秒 | 0.254ドル | 2 |
| 重い(T3〜T6) | 直列 | 6 | 6 | 61.1秒 | 47〜73秒 | 0.188ドル | 8.5 |
| 重い(T3〜T6) | 並列 | 6 | 6 | 45.1秒 | 42〜48秒 | 0.289ドル | 2 |
並列の時間は、ほとんど動かない
並列は軽い組で 42.8秒、重い組で 45.1秒。課題が重くなっても2秒しか伸びていません。直列は 33秒→61秒と、課題の重さの分だけ伸びます。
並列の所要時間は「一番遅いサブエージェント」+「起動と結果の受け取りと最後の確認」で決まります。今回の4課題では、一番重い課題(semver の範囲判定や JSON パーサ)を Sonnet 5.5 が単独で解く時間は、中央値でそれぞれ36秒・35秒でした(同じ課題を1つだけ解かせた別の実測、各4回)。そこに7〜10秒の手間が乗って、43〜45秒になっていると読めます(内訳を測ったわけではありません)。
費用は、いつも並列が高い
-
軽い組で 2.37倍、重い組で 1.54倍
理由の内訳は測っていませんが、仕組みから考えられるのは次のとおりです。 -
直列は1つのセッションで4課題を続けて解くので、前置きの読み込みは1回分で済み、2つ目以降の課題は会話の続きとしてキャッシュから安く読める
-
並列は、サブエージェントごとに前置きを読み、課題を読み、テストを回し、結果を主に返す。主はそれを読み、もう一度テストを回す
-
課題が重くなると、解く部分の費用が増えて、この上乗せの割合が下がる。重い組で倍率が下がったのは、これと合っています
出来は同じ
32回すべて、4課題とも隠しテストに合格しました。今回の課題の大きさでは、「分担させると雑になる」も「分担させると丁寧になる」も見えませんでした。
予想はどれだけ外れたか
| 予想(走らせる前) | 結果 |
|---|---|
| 軽い組:並列は時間 0.4〜0.6倍、費用 1.2〜1.6倍 | 時間 1.29倍、費用 2.37倍。どちらも外れ |
| 重い組:並列は時間 0.6〜0.9倍、費用 1.5〜2.5倍 | 0.74倍、1.54倍。当たり |
| 成功率の差は小さい | 差なし(どちらも100%) |
「並列は速い」を、起動の手間を勘定に入れずに考えていました。
いつ並列にするか
この実測から言えるのは、次のところまでです。
- 1つずつの仕事が数十秒で終わるなら、並列にしない。 速くならず、費用は2倍を超えます
- 1つずつが重く、直列だと合計が1分を大きく超える仕事なら、並列で速くなる。 ただし費用は5割ほど上がります。待ち時間を買う、という判断になります
- 費用を下げたいなら直列。 同じセッションで続けて解く方が、キャッシュがよく効きます
- 並列にするなら、最後に主が全体を確かめる指示は入れておく。今回は全部通りましたが、主がテストを回し直す分の費用は、出来を保つための保険です
限界
- 課題は小さな Python(1〜2ファイル、仕様が明確、互いに独立)です。調査・大きなリファクタリングのように、1つずつが数分〜数十分かかる仕事では、並列の得はもっと大きくなるはずですが、今回は測っていません
- 回数は条件ごとに6〜10回です
- このクラウド版 Claude Code では、サブエージェントはバックグラウンドで起動され、主は結果の通知を待つ形でした(
subagent_stats.started_in_backgroundが 4)。手元の環境で起動の仕方が違えば、固定の時間も変わります - サブエージェントの種類(general-purpose など)とモデルは指定せず、既定のまま(主と同じ Sonnet 5.5)でした。サブエージェントだけを Haiku にすれば費用は下がるはずですが、測っていません
- 費用はキャッシュが温まった状態の値です(同じ前置きを1時間以内に何度も使う)。最初の1回はもっと高くなります
サブエージェントに渡す指示の土台になる CLAUDE.md の下書きは、質問に答えるだけで作れる無料ツールで作れます:https://acerola-tools.acerola.workers.dev/?from=qiita-claude-code-subagent-parallel
本記事は Zenn にも掲載しています:https://zenn.dev/acerola_jp/articles/claude-code-subagent-parallel