2
1

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のTasks機能でマルチエージェント開発を実現する方法

2
Last updated at Posted at 2026-01-26

TL;DR

  • 従来のTodoWriteがTasks機能に進化し、ファイルベースの永続化・セッション間共有が可能になった
  • Planは「設計・承認」、Tasksは「進捗追跡」という役割分担
  • マルチエージェントでTask共有するにはCLAUDE_CODE_TASK_LIST_ID環境変数、またはsettings.jsonenvキーを使用
  • Plan承認時に「Taskを作成したら停止して」と指示することで、並列実行の準備ができる

解決したい課題

Claude Codeで大規模な実装を行う際、1つのセッションで順次処理するのは非効率です。
複数のターミナルで並列に作業を進めたいが、タスクの進捗共有や重複作業の防止が課題になります。

背景

Ver 2.1.16で従来のTodoWriteがTasks機能に置き換わりました。
この新機能により、セッション間でのタスク共有が可能になり、マルチエージェント開発のワークフローが現実的になりました。

前提条件

  • Claude Code v2.1.16以降
  • 基本的なClaude Codeの操作に慣れていること
  • Planモードの使用経験があること

注意事項

私の検証環境ではWindows11, Powershellで実施しました。
そのためBash/WSLのコマンドは動作未確認であり、誤っている可能性がありますのでご容赦ください。

Todos から Tasks への進化

従来のTodoWrite

従来のTodoWriteには以下の制限がありました。

項目 制限
永続性 セッション内のメモリにのみ保存
セッション間共有 不可能
依存関係管理 なし
マルチエージェント 非対応

新しいTasks機能

Tasks機能では以下が改善されました。

項目 改善点
永続性 ~/.claude/tasks/にファイル保存
セッション間共有 環境変数で同一リストを参照可能
依存関係管理 blockedBy/blocksフィールドで定義可能
マルチエージェント 複数セッションで協調作業可能

利用可能なツール

ツール 用途
TaskCreate 新しいタスクを作成
TaskGet 特定のタスク情報を取得
TaskUpdate ステータスや情報を更新
TaskList 全タスクを一覧表示

確認方法

ターミナルでCtrl+Tを押すとタスクリストの表示を切り替えられます。

Plan と Tasks の関係

PlanとTasksは補完的な関係にあります。混同しやすいので、役割を明確にしておきましょう。

役割の違い

Plan  = 「何をどうやるか?」を決める(設計・承認フェーズ)
Tasks = 「どこまで進んだか?」を追跡(実行・追跡フェーズ)
観点 Plan Tasks
フェーズ 実装前 実装中
目的 アプローチの選択・承認 作業の進捗管理
ユーザー関与 承認が必要 進捗確認
成果物 計画ファイル(PLAN.md等) タスクリスト

典型的なワークフロー

Planファイル参照の注意点

重要: ClaudeはTask着手時にPlanファイルを自動的に再読み込みしません。

長いセッションやコンテキスト圧縮後は、Planの内容が失われている可能性があります。
未検証ではありますが、以下のような対策が考えられます。

  1. TaskのdescriptionにPlanの要点を含める
TaskCreate:
  subject: "AuthServiceの実装"
  description: |
    - JWT検証ロジックをvalidateToken()に実装
    - user-serviceのUserRepositoryを使用
    - エラー時はUnauthorizedExceptionをthrow
    - 詳細: PLAN.md セクション2.1参照
  1. CLAUDE.mdにルールを追加
## Task実行ルール
複雑なTaskに着手する際は、関連するPlanファイルを再読み込みすること。

マルチエージェントTask共有マニュアル

ここからが本記事の本題です。
複数のClaude Codeセッションでタスクを共有し、並列開発を行う手順を解説します。

前提条件

  • 同一マシン上で複数ターミナルを開ける環境
  • 各ターミナルで同じプロジェクトディレクトリにアクセス可能

全体フロー

Step 1: Plan作成セッション

最初のターミナルで、Task List IDを指定してClaude Codeを起動します。

PowerShell(Windows)の場合:

# ターミナル1
$env:CLAUDE_CODE_TASK_LIST_ID = "learning-docs"; claude

Bash / WSL の場合:

# ターミナル1
CLAUDE_CODE_TASK_LIST_ID=learning-docs claude

1-set-task-list-id.png

起動後にユーザがPlanモードで作業(計画作成)を依頼すると、Claudeは通常通り計画を作成します。

Step 2: Task登録で停止させる

ここが重要なポイントです。 Plan承認時に、以下のように指示します。

計画は承認します。
Tasksを作成したら実行せずに停止してください。
マルチエージェントで並列実行したいです。

2-approve-and-wait.png

Claudeは全タスクを登録した後、停止します。

Claude: [TaskCreate] で全タスクを登録
  - Task 1: ○○
  - Task 2: ○○
  - Task 3: ○○
  - Task 4: ○○

Claude: 「Tasksを登録しました。別ターミナルを開いてください。」

3-created-task-list.png

Step 3: 追加エージェントを起動

別のターミナルを開き、同じTask List IDを指定してClaude Codeを起動します。

環境変数は各ターミナル(シェルプロセス)ごとに独立しています。Step 1で設定した環境変数は、新しいターミナルには引き継がれません。そのため、各ターミナルで同じ値を設定する必要があります。

PowerShell(Windows)の場合:

# ターミナル2(同じIDを再度指定)
$env:CLAUDE_CODE_TASK_LIST_ID = "learning-docs"; claude

Bash / WSL の場合:

# ターミナル2(同じIDを再度指定)
CLAUDE_CODE_TASK_LIST_ID=learning-docs claude

4-start-other-agent.png

起動すると、CLAUDE_CODE_TASK_LIST_IDに基づいたTasksが起動直後に表示されています。

Step 4: 各エージェントに担当を割り当て

各ターミナルで担当するタスクを指示します。

メインエージェント
5.1-main-agent.png

追加エージェント
5.2-addtional-agent.png

並行作業が開始されると、複数エージェントが1つのTaskファイルを更新するため、進捗状況はある程度同期的に表示されます。
但し現時点では、リアルタイムに同期されるというわけではありません。
画像はメインエージェント、Ctrl+TでTasksツリーを展開した状態です。
6-tasks-syncro.png

実用的なプロンプト集

Plan承認時(停止させる)

計画を承認します。
Tasksを作成したら実行を開始せずに待機してください。
複数ターミナルで並列実行します。

追加エージェント起動時

TaskListを確認してください。
他のセッションで登録されたタスクから、ownerが未設定のものを選んで着手してください。
作業完了したら完了マークを付けてください。

進捗確認

TaskListで全タスクの進捗を確認してください。

現時点での制限事項

項目 現状
自動割り当て なし(手動で指示が必要)
競合制御 ownerフィールドで管理(楽観的ロック)
リアルタイム同期 TaskListで都度確認が必要
他Agentのタスク完了検知して開始 プロンプトの工夫で疑似的には可能だがポーリングが発生するので従量課金だとコスト面の課題あり

マルチエージェント機能は発展途上のため、今後のアップデートでより自動化される可能性があります。

設定リファレンス

CLAUDE_CODE_TASK_LIST_ID(タスクリスト共有)

タスクリストの名前を指定する方法は2つあります。

方法1: 環境変数で指定

CLAUDE_CODE_TASK_LIST_ID=my-project claude

用途: 一時的な使用、作業内容で動的に切り替えたい場合

方法2: settings(.local).jsonで指定

// .claude/settings.local.json(個人用)または .claude/settings.json(チーム共有)
{
  "env": {
    "CLAUDE_CODE_TASK_LIST_ID": "my-project"
  }
}

用途: プロジェクト固定、チームで共有したい場合

settings.jsonのenvキーで設定した環境変数は、すべてのセッションに自動適用されます。毎回環境変数を設定する手間が省けます。

保存先

~/.claude/tasks/my-project/

シェルエイリアスの定義(環境変数方式の場合)

シェルのプロファイルにエイリアスを定義しておくと便利です。

Bash / WSL (.bashrc / .zshrcに追記):

alias claude-auth="CLAUDE_CODE_TASK_LIST_ID=learning-docs claude"
alias claude-tasks="CLAUDE_CODE_TASK_LIST_ID=task-service claude"

PowerShell ($PROFILEに追記):

function claude-auth { $env:CLAUDE_CODE_TASK_LIST_ID = "learning-docs"; claude }
function claude-tasks { $env:CLAUDE_CODE_TASK_LIST_ID = "task-service"; claude }

CLAUDE_CODE_ENABLE_TASKS(Tasks機能の有効/無効)

動作
true(デフォルト) 新Tasks機能が有効
false 旧TodoWriteシステムに戻る

旧システムが必要な場合のみ設定します。

Bash / WSL:

export CLAUDE_CODE_ENABLE_TASKS=false

PowerShell:

$env:CLAUDE_CODE_ENABLE_TASKS = "false"

まとめ

Claude CodeのTasks機能により、以下が可能になりました。

  1. 永続的なタスク管理: セッション終了後も継続可能
  2. セッション間共有: 複数ターミナルでの並列開発
  3. 依存関係の明示: タスク間の順序を定義可能

マルチエージェント開発はまだ手動調整が必要ですが、大規模な実装作業の効率化に有効です。
今後のアップデートでさらに使いやすくなることが期待できます。

個人的な試行錯誤の過程で、かつてPlanが作成するTodosのタスクをそれぞれ個別のサブエージェントに担当させて並列実行するような構造を目指していた時期がありました。
しかし計画段階での制御、調整が複雑怪奇になり頓挫した過去があります。

Tasksのマルチエージェント対応は、シンプルにユーザの頭の中で「誰に何を担当させるか」を実行できる点が強力に感じます。

参考資料

2
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?