サブエージェントと Task で並列開発を回す

| ツール活用 | Claude Code

タグ: #Claude Code #並列処理 #サブエージェント #Flutter

メモ帳アプリにタグ機能を足すとき、UI 実装・テスト作成・ドキュメント生成を 4 つのサブエージェントに分けて並列で走らせてみました。逐次なら 4 時間想定の作業が 1.5 時間。向く作業と向かない作業がはっきり分かれたので、その線引きと親エージェントの役割をまとめます。

Claude Code のサブエージェント

Claude Code には「サブエージェント」があります。特定の役割に特化した子プロセスを起動する仕組みです。Task ツールで親から子を生やし、独立した文脈で作業を並行実行できます。

これを使うと、1 つの大きなタスクを複数の小タスクに分解して、それぞれ並列で進められます。

なぜ並列化したいか

個人開発で、1 つのリリースに 10 個の新画面を入れるとします。同じ AI に逐次でやらせると、画面 1 → 画面 2 →…と長いコンテキストを引きずります。後半は応答が遅く、そして雑になります(雑になるのは、こちらの投げ方のせいでもあります)。

それぞれをサブエージェントに切り出すと、各エージェントは自分の画面だけを見ればよくなります。応答の品質が安定しました。

Flutter マルチ画面実装で実際にやった例

メモ帳アプリに「タグ機能」を追加するリリースで試してみました。並列で走らせたのは次の 4 つです。

  • サブエージェント A: タグ一覧画面(TagListScreen)の UI 実装
  • サブエージェント B: タグ編集ダイアログ(TagEditDialog)の UI 実装
  • サブエージェント C: TagRepository のユニットテスト作成
  • サブエージェント D: タグ機能の使い方ドキュメント生成

親エージェントは先に「Drift の Tags テーブル定義」と「TagRepository インターフェース」を作って共有します。それを前提に、子エージェントを並列で走らせました。

# イメージとしては、親プロンプトの中で Task ツールを 4 回呼ぶ
Task(description: "TagListScreen 実装", prompt: "...")
Task(description: "TagEditDialog 実装", prompt: "...")
Task(description: "TagRepository テスト", prompt: "...")
Task(description: "タグ機能ドキュメント", prompt: "...")

逐次でやると 4 時間の想定でした。並列だと 1.5 時間程度で終わりました。

並列化が向く作業

判定フローはだいたい次の通りです。3 つの条件すべてに YES なら、迷わず並列化します。

## 並列化判定フロー
1. 各サブタスクは独立して完結するか?
   - YES → 次へ
   - NO  → 直列のまま実行

2. 入力(仕様)と出力(成果物)は事前に確定できるか?
   - YES → 次へ
   - NO  → 親エージェントで先に確定させてから並列化

3. 同じファイルを 2 つ以上のサブエージェントが触らないか?
   - YES → 並列化 OK
   - NO  → ファイル分担を見直す or 直列化
  • 独立性が高い作業(互いに依存しない)
  • 入力と出力が明確(インターフェースが先に定義されている)
  • 大量の繰り返し(多言語ファイルの 14 言語分更新など)

並列化が向かない作業

  • 同じファイルを複数エージェントが触る作業(コンフリクトする)
  • 設計判断が必要な作業(複数エージェントが別の方針を取ってしまう)
  • デバッグ系の作業(直列に状況を理解する必要がある)

向かない作業に無理やり投げると、あとで統合する自分がいちばん苦労します。

並列化のコツ

大事なのは親エージェントの役割です。

  • 共通の前提(型定義、インターフェース、規約)を先に固める
  • 各サブエージェントに渡すプロンプトは、独立した文脈で読めるように書く
  • 完成後の統合は親エージェントが担当(コンフリクト解消、整合性チェック)

この 3 つを守れば、並列化のうまみが出ます。

まとめ

  • サブエージェントは独立した文脈で並列実行できる
  • 役割を分けると、応答品質が安定する
  • 独立性の高い作業に向く。設計判断が要る作業には向かない
  • 親エージェントが「前提共有」と「統合」を担う

「やりたいことが多すぎて手が回らない」。そう感じたら、まず並列化できる部分を切り出してサブエージェントに任せます。それだけでリリースのペースが上がります。手が増えた気がして、ちょっとうれしい。