2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeのサブエージェントで開発タスクを5並列実行する実践ガイド

2
Posted at

はじめに

Claude Codeを使っていて「1つずつ順番に処理するのが遅い」と感じたことはありませんか?

実は、Claude Codeにはサブエージェント(Sub-Agent)という機能があり、複数のタスクを並列に実行できます。私は日常的に5つ以上のサブエージェントを同時に走らせて、開発タスクの処理速度を大幅に改善しています。

この記事では、サブエージェントの基本から実践的な並列実行パターンまでを解説します。

環境・前提

  • Claude Code (CLI版) または OpenClaw 等のエージェントフレームワーク
  • サブエージェント機能(sessions_spawn 相当のAPI)が利用可能な環境
  • 基本的なClaude Codeの操作経験

サブエージェントとは何か

サブエージェントとは、メインのAIセッションから独立した子セッションを生成し、タスクを委任する仕組みです。

メインセッション(あなたが会話しているセッション)
  ├── サブエージェント1: ファイルのリファクタリング
  ├── サブエージェント2: テスト作成
  ├── サブエージェント3: ドキュメント更新
  ├── サブエージェント4: API調査
  └── サブエージェント5: CI設定

各サブエージェントは独立した実行環境を持つため、互いにブロックすることなく並行して作業を進められます。メインセッションはオーケストレーター(指揮者)として、各サブエージェントの完了を待ち、結果を統合します。

直列 vs 並列の比較

直列実行の場合:

タスクA (3分) → タスクB (2分) → タスクC (4分) → タスクD (2分) → タスクE (3分)
合計: 14分

並列実行の場合:

タスクA (3分) ─┐
タスクB (2分) ─┤
タスクC (4分) ─┼→ 全完了
タスクD (2分) ─┤
タスクE (3分) ─┘
合計: 4分(最も遅いタスクの時間)

理論上、5並列なら最大5倍速になります。

基本的な使い方:runモード vs sessionモード

サブエージェントには大きく2つのモードがあります。

runモード(ワンショット実行)

タスクを投げて、完了したら結果を返して終了するモードです。ほとんどの場合はこちらを使います。

// 例: ファイルのリファクタリングを依頼
sessions_spawn({
  task: "src/utils/helpers.ts を読んで、重複している関数を統合してリファクタリングしてください。",
  mode: "run",
  label: "refactor-helpers"
})

特徴:

  • タスク完了後にセッションが自動終了
  • 結果がメインセッションに自動で返る
  • 一方通行の依頼に最適

sessionモード(永続セッション)

セッションが持続し、追加のメッセージを送れるモードです。対話的なやり取りが必要な場合に使います。

// 例: 調査タスク(追加質問が必要になるかもしれない)
sessions_spawn({
  task: "Next.js 15のServer Actionsについて調査してください",
  mode: "session",
  label: "research-nextjs"
})

// 後から追加の指示を送信
sessions_send({
  label: "research-nextjs",
  message: "キャッシュの挙動についても調べてください"
})

特徴:

  • セッションが持続するので追加指示が可能
  • 明示的に終了するまで生き続ける
  • 調査タスクや段階的な作業に最適

使い分けの目安

ケース 推奨モード
ファイル編集・生成 run
テスト作成 run
Web検索・調査 session(追加質問の可能性あり)
ドキュメント作成 run
対話的なデバッグ session

5並列実行の実践パターン

ここからは、実際に私が使っているパターンを紹介します。

パターン1: プロジェクト初期セットアップ

新しいプロジェクトを始める時、以下のタスクを一気に並列実行します。

// 5つのサブエージェントを同時に起動
sessions_spawn({ mode: "run", label: "setup-1",
  task: "package.jsonを作成し、Next.js 15 + TypeScript + Tailwind CSSの依存関係を設定"
})
sessions_spawn({ mode: "run", label: "setup-2",
  task: "tsconfig.json, .eslintrc.js, .prettierrc を作成(Next.js推奨設定)"
})
sessions_spawn({ mode: "run", label: "setup-3",
  task: "src/app/layout.tsx と src/app/page.tsx の雛形を作成"
})
sessions_spawn({ mode: "run", label: "setup-4",
  task: "GitHub ActionsのCI設定(.github/workflows/ci.yml)を作成"
})
sessions_spawn({ mode: "run", label: "setup-5",
  task: "README.md, .gitignore, .env.example を作成"
})

順番にやると10〜15分かかる作業が、3分程度で完了します。

パターン2: コードレビュー&修正

PRで複数ファイルの修正が必要な時:

sessions_spawn({ mode: "run", label: "fix-auth",
  task: "src/lib/auth.ts のセキュリティ脆弱性を修正"
})
sessions_spawn({ mode: "run", label: "fix-api",
  task: "src/app/api/users/route.ts のエラーハンドリングを追加"
})
sessions_spawn({ mode: "run", label: "fix-types",
  task: "src/types/index.ts の型定義を更新"
})
sessions_spawn({ mode: "run", label: "add-tests",
  task: "src/lib/auth.test.ts を作成: 全関数のユニットテスト"
})
sessions_spawn({ mode: "run", label: "update-docs",
  task: "docs/api.md を更新: 新しいレスポンス形式を反映"
})

パターン3: 日次ルーティンの自動化

私の場合、毎朝のルーティンタスクを5並列で実行しています。

sessions_spawn({ mode: "run", label: "daily-notes",
  task: "今日のデイリーノートを生成してください"
})
sessions_spawn({ mode: "run", label: "sync-tasks",
  task: "Azure DevOpsの今週のSprintタスクを確認し、ステータスを更新"
})
sessions_spawn({ mode: "run", label: "check-email",
  task: "未読メールをチェックして重要なものがあれば報告"
})
sessions_spawn({ mode: "run", label: "check-calendar",
  task: "今日と明日のカレンダー予定を確認"
})
sessions_spawn({ mode: "run", label: "git-status",
  task: "全プロジェクトのgit statusを確認し、未コミットの変更があれば報告"
})

注意点とベストプラクティス

1. ファイルの競合に注意

複数のサブエージェントが同じファイルを編集すると、後から書いた方に上書きされます。

❌ 悪い例:
  サブエージェント1: src/index.ts の関数Aを修正
  サブエージェント2: src/index.ts の関数Bを修正
  → 競合する可能性あり!

✅ 良い例:
  サブエージェント1: src/utils/funcA.ts を修正
  サブエージェント2: src/utils/funcB.ts を修正
  → ファイルが分かれているのでOK

対策: タスクを分割する際は、編集対象ファイルが重複しないように設計してください。

2. 依存関係のあるタスクは直列に

タスクBがタスクAの結果に依存する場合は、並列にできません。

❌ 並列にできない:
  タスクA: DBスキーマ定義 → タスクB: そのスキーマを使うAPIエンドポイント

✅ 並列にできる:
  タスクA: DBスキーマ定義 + APIエンドポイント(セットで1タスク)
  タスクB: フロントエンドのUI実装(API未完でもモック可能)

3. タスク指示は具体的に

サブエージェントはメインセッションのコンテキストを引き継がないため、タスク指示には必要な情報をすべて含めてください。

// ❌ 曖昧
sessions_spawn({ task: "あのファイルを直して" })

// ✅ 具体的
sessions_spawn({
  task: "src/lib/auth.ts の validateToken関数で、期限切れトークンの場合にTokenExpiredErrorをthrowするように修正してください。"
})

4. 適切な数を見極める

並列数を増やしすぎると、APIレートリミットに引っかかったり、コンテキストの管理が難しくなります。

推奨: 3〜5並列が実用的な上限です。

まとめ

Claude Codeのサブエージェントを活用すると:

  • 独立したタスクを並列実行でき、開発速度が大幅に向上します
  • runモード(ワンショット)とsessionモード(永続)を使い分けましょう
  • ファイル競合を避け、タスク指示を具体的に書くのがコツです
  • 3〜5並列が実用的なスイートスポットです

私の場合、5ステップ以上の作業が発生した時点で「これは並列化できないか?」と考えるクセがつきました。この習慣だけでも、1日あたり30分〜1時間の時間節約になっています。

ぜひ、まずは2〜3並列から始めてみてください。

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?