タスク管理システム:依存関係の追跡と複雑なプロジェクトの整理
概要
Claude Codeの新しいタスク管理システム(Tasks)は、従来のTODOリストを大幅にアップグレードしたものです。TaskCreate、TaskUpdate、TaskList、TaskGetの4つのツールを使い、複雑なマルチステップ作業の管理、タスク間の依存関係追跡、複数のサブエージェント間での調整が可能になります。
使い方
基本的なタスク操作
タスクの作成(TaskCreate)
Claude Codeに複雑なタスクを依頼すると、自動的にタスクが作成されます。明示的に依頼することも可能です。
「このプロジェクトのリファクタリングをタスクに分解して管理して」タスクは以下のフィールドを持ちます:
- subject: タスクのタイトル(命令形: 例「テストを実行する」)
- description: 詳細な説明、受け入れ基準
- activeForm: 実行中に表示されるスピナーテキスト(現在進行形: 例「テストを実行中」)
タスクの一覧表示(TaskList)
現在のセッションのすべてのタスクを確認できます。
「現在のタスク一覧を見せて」出力例:
ID | Subject | Status | Blocked By
1 | データベーススキーマを設計 | completed |
2 | APIエンドポイントを実装 | in_progress |
3 | フロントエンドを実装 | pending | [2]
4 | E2Eテストを作成 | pending | [2, 3]タスクの更新(TaskUpdate)
ステータスの変更や依存関係の設定ができます。
「タスク2を完了にして」
「タスク4はタスク2と3に依存するように設定して」ステータスの遷移:
pending → in_progress → completed不要なタスクは deleted ステータスで削除できます。
タスクの詳細取得(TaskGet)
特定のタスクの完全な詳細(説明、依存関係など)を確認できます。
依存関係の設定
タスク間の依存関係(ブロック関係)を定義できます。
タスクA ──blocks──→ タスクB
(AがBをブロック、AなしにBは開始不可)ブロックしているタスクが完了すると、ブロックされていたタスクは自動的にブロック解除されます。
活用シーン
- 大規模リファクタリング: データベース変更 → API更新 → フロントエンド更新 → テスト、のような順序依存の作業を管理
- 新機能の実装: 設計 → 実装 → テスト → ドキュメントの各フェーズを追跡
- バグ修正の優先順位付け: 複数のバグを依存関係とともに整理し、効率的に修正
- マルチエージェント協調: 複数のサブエージェントがタスクを分担して並行作業
コード例
リファクタリングプロジェクトのタスク管理
ユーザー: 「認証システムをJWTからセッションベースに移行したい。
タスクに分解して進めて」
Claude: タスクを作成します。
TaskCreate:
1. "現在の認証フローを分析"
2. "セッションストアを設計・実装"
3. "認証ミドルウェアを書き換え"
4. "既存のAPIエンドポイントを更新"
5. "認証テストを更新"
6. "マイグレーションスクリプトを作成"
依存関係の設定:
- タスク2は、タスク1の完了後に開始
- タスク3, 4は、タスク2の完了後に開始
- タスク5は、タスク3, 4の完了後に開始
- タスク6は、タスク5の完了後に開始環境変数による制御
bash
# タスク管理システムを無効にし、従来のTODOシステムに戻す
export CLAUDE_CODE_ENABLE_TASKS=false
# 名前付きタスクリストでセッション間共有(実験的)
export CLAUDE_CODE_TASK_LIST_ID=my-project-tasks注意点・Tips
- セッションスコープ: タスクはセッションスコープであり、セッション終了時に永続化されません。長期的なタスク管理には外部ツール(GitHub Issues等)との併用をお勧めします。
- 自動タスク作成: 複雑なタスクを依頼すると、Claudeが自動的にタスクに分解して管理することがあります。3ステップ以上の作業が見込まれる場合に自動的に有効化されます。
- 依存関係の活用:
addBlockedByでタスク間の依存関係を設定すると、ブロックされたタスクは依存先が完了するまで着手されません。作業順序が重要な場合に活用してください。 - 従来のTODOとの違い: 従来のTodoWriteツールに比べ、依存関係の追跡、ステータス管理、メタデータ付与が可能になっています。
CLAUDE_CODE_ENABLE_TASKS=false: 新しいタスクシステムが不要な場合、この環境変数で従来のTODOリスト機能に戻すことができます。