はじめに
株式会社ネクストスケープ Chief Technology Office所属の小野塚です
1月22日にリリースされたClaude Code v2.1.16においてタスク機能が追加されました。
早速試してみたいと思います。
概要としては以下の通り。
・Claude Codeが作業フローに応じてタスクリストを自動生成
・複数のClaude Codeセッションやサブエージェント間でタスクを共有可能
・/tasks で進行中のタスクを確認
・タスクは最大10個まで
セッション間共有する場合は
以下のようにsettings.json に追記する方法と、
json{
"env": {
"CLAUDE_CODE_TASK_LIST_ID": "任意のフォルダ名"
}
}
起動時に指定する方法があります。
CLAUDE_CODE_TASK_LIST_ID=my-project claude
ただし、私はWindows環境なのですが、上の指定の方法ですとエラーになります。私と同様Windowsで動かしている方は以下のいずれかで実行してみてください。
方法1: PowerShellの場合
powershell$env:CLAUDE_CODE_TASK_LIST_ID="WebApplication1"; claude
方法2: コマンドプロンプトの場合
cmdset CLAUDE_CODE_TASK_LIST_ID=WebApplication1 && claude
実行
それでは早速実行してみましょう。Claude Code起動後に以下のプロンプトを投げてみます。
「ToDoリスト機能の仕様を作成してください。タスクの追加、完了チェック、削除機能を含めて、基本的なToDoアプリとして動作するようにしたいです。
Tasks機能でタスク管理しながら実装してください。」
そうすると以下のように早速タスク分割を行ってくれ、それに従って作業が進められていきます。

文字が小さいのでここだけ以下に書き出してみます。
ーーー
● ASP.NET Core 8.0のRazor Pagesプロジェクトですね。タスクを作成して、ToDoリスト機能の仕様作成と実装を進めます。
√ Task #1 created: ToDoリスト機能の仕様書を作成する
√ Task #2 created: ToDoItemモデルクラスを作成する
√ Task #3 created: ToDoサービスクラスを作成する
√ Task #4 created: ToDoリストのRazor Pageを作成する
√ Task #5 created: ナビゲーションにToDoリストへのリンクを追加する
● タスクの依存関係を設定します。
√ Task #2 updated: blockedBy
√ Task #3 updated: blockedBy
√ Task #4 updated: blockedBy
√ Task #5 updated: blockedBy
√ Task #1 updated: status → in progress
ーーー
というような形です。単純にタスクを作るだけでなく、タスク同士の依存関係というのも設定されてます(上の内容ですと依存関係がわかりにくいですが、後ほどの画面で改めてお見せします)
プラン管理
さて、まずは最初のタスク、仕様書作成に進みます。

まずはこの段階でタスクがどのように管理されているか確認してみましょう。
例えば プロジェクト名をWebApplication1 と指定すると:
~/.claude/tasks/WebApplication1/
├── task_001.json
├── task_002.json
└── ...
といった形でタスクごとにJSONファイルが存在していまして、これらのファイルはタスク終了後に削除されます。
画像
各JSONファイルを開くと以下のようになっています。

ファイルフォーマットは以下の通りです。
id:タスク番号
subject :タスク名(短い説明)
description :タスクの詳細説明
activeForm: 現在の作業状況(進行中の表示用)
status :ステータス(in_progress / pending / completed)
blocks :このタスクが完了しないと着手できないタスクのID(例:#1が#2をブロック)
blockedBy :このタスクの前に完了が必要なタスクのID
次にセッション間共有ですが、もう1つターミナルを開いて、同じIDで起動してみます。
Claude Codeを起動後、 `/tasks` コマンドを実行してみますと以下のように今回のプロジェクトのタスク状況が表示されます。

上の画面の最後の部分にタスクリストが表示されていますが、#2以降の各タスクの最後に「blocked by #~」とありまして、ここでも依存関係が確認できます。
その他の表示内容は以下のようになります。
・ステータス表示
0 done, 1 in progress, 4 open でサマリー表示
・アイコン
■(進行中)と □(未着手)で視覚的に区別
・表示切替
ctrl+t でタスク表示のON/OFF
そして以下のようにタスクが処理されていき、ToDoアプリが作成されます。


Planモードとの比較
さて、このタスク機能の似たようなものとしてはPlanモードがあります。
そこでタスク機能のメリット・活用シーン、Planモードとの違いといったところについて考えてみました。
正直なところ、今回のような小規模かつ・単純なタスクではPlanモードとの違いを感じにくいかもしれません。どちらも「計画を立てて順番に実行する」という点では同じであるものの、色々と違いがあります。
Planモードとの違いとしては以下のようになります。
■目的
・Planモード: 実装前にアプローチを設計・承認を得る
・タスク機能:作業の進捗を追跡する
■タイミング
・Planモード:実装を始める前
・タスク機能:実装中
■成果物
・Planモード:計画ファイル(実装方針)
・タスク機能:タスクリスト(Todo)
更にタスク機能は
・タスク間の依存関係がblocked by で明示される
・セッションをまたいでタスクを共有できる
というところが大きな違いになるのかなと思っています。
あとはファイル保存により複数のClaude Codeインスタンス間で同じタスクリストを参照できる点、特に
・専用コマンド /tasks がある(どこからでも一発確認)
・JSONで構造化されている(扱いやすい)
といったところが特徴になるのかなと思っています。
CursorのPlanモードは進捗状況に応じて計画ファイルを更新しているため、今回のタスク機能に近いかもしれませんが、Cursorの場合は実装レベルの進捗管理に留まり、プラン・計画というよりはToDoの印象です。
どんな場面で活きるのか
この機能が真価を発揮するのは「大きく・長く・複雑な」作業だと考えています。
例えば
・仕様駆動開発(SDD)との相性
仕様書作成から設計、実装、テスト、ドキュメントまで段階的に進める開発スタイルでは、各フェーズの依存関係が重要になります。Tasks機能なら「仕様書が完成しないと設計に着手できない」といった関係性が自動で管理され、今どこまで進んでいるかが一目でわかります。
・長時間かかるタスク
大量のファイル生成やマイグレーション、複数モジュールにまたがるリファクタリングなど、数十分〜数時間かかる作業では、途中でセッションが切れることもあります。そんなときでも別ターミナルから /tasks で進捗を確認できるのは安心感があります。
・チームでの進捗共有
同じ CLAUDE_CODE_TASK_LIST_ID を設定すれば、別のメンバーが自分のターミナルから進捗を確認できます。「#3まで終わったらレビューするね」といった連携がしやすくなります。
現時点ではタスクリストの共有がメインの恩恵ですが、将来的にサブエージェントが同じタスクリストを見ながら並列で作業を進める、といった使い方ができるようになれば、さらに活用の幅が広がりそうです。
最後に
タスク機能は、簡単なタスクでは「Planモードの可視化版」という印象です。しかし、仕様駆動開発のような段階的なフローや、長時間・大規模なタスク、チームでの進捗共有といった場面では確実にメリットがあります。
「ちょっとしたコード生成」よりも「プロジェクト全体を任せる」ような使い方で真価を発揮する機能、という位置づけなのかなと思っております。
当社ネクストスケープはこのように生成AIを始めとした新しい技術・知識を日々取り入れており、Webサイト、スマホアプリ、Hololensアプリの開発をはじめ、CMSを利用したサイトの新規構築やリニューアルなど、お客様のニーズに幅広く対応いたします。お困りのことがございましたら、いつでもお気軽にお問い合わせください。
(以下当社お問合せフォーム)
当社では一緒に働いてくれる仲間を募集しています。是非以下のサイトよりお申込みください。