TaskML:AIエージェントのタスク出力を統一するマークアップ言語

TaskML:AIエージェントのタスク出力を統一するマークアップ言語 Claude Code
Photo by Jakub Żerdzicki on Unsplash

ClaudeやChatGPTにプロジェクト計画を依頼すると、返ってくるフォーマットがバラバラで困った経験はないでしょうか。ある時はマークダウンのリスト、ある時はJSON、またある時は番号付きステップ、そして時にはタスクが文章の中に埋もれた壁のようなテキスト。この問題を解決するために開発されたのがTaskMLです。TaskMLは人間が読みやすく、AIが書きやすく、そして即座にパース可能な軽量マークアップ言語として設計されました。本記事では、このTaskMLの機能と活用法について詳しく解説します。

この記事のポイント

  • TaskMLはAIのタスク出力を標準化する軽量マークアップ言語
  • 1つの構文から7種類の異なるビューで可視化が可能
  • 依存関係なし、15KB以下の軽量設計でブラウザ・Node.js両対応
  • オープンソース(MIT)で無料利用可能

TaskMLが解決する問題

AIアシスタントにタスク管理を依頼する際、最も困るのがフォーマットの不統一です。同じClaude Codeでも、セッションごとに異なる形式で出力されることがあります。マークダウンリスト、番号付きステップ、JSON形式、あるいは自由形式のテキストと、出力形式は予測不可能です。

これが問題となるのは、出力を機械的に処理したい場合です。タスクの進捗をトラッキングしたい、別のツールに連携したい、可視化したいといったニーズに対して、バラバラなフォーマットでは対応できません。毎回手動でコピー&ペーストして整形する必要があり、AIを使う意味が薄れてしまいます。

TaskMLはこの問題に正面から取り組んでいます。AIが出力しやすく、人間が読みやすく、そして機械がパースしやすい。この3つの要件を同時に満たす構文を設計することで、AIとの協働をよりスムーズにしています。

TaskMLの構文を理解する

TaskMLの構文は非常にシンプルです。基本的なタスク記述は以下のようになります。

@project Website Redesign
@sprint Week 1

[ ] Design homepage #p0 @alice
  [x] Create wireframes
  [~] Build prototype ~2h
[ ] Write copy #p1 @bob ~4h !2024-02-15

この短いテキストに、プロジェクト管理に必要な情報がすべて含まれています。まず、@project@sprintはコンテキストブロックと呼ばれ、タスクの所属を定義します。次に、タスクの状態を表すチェックボックス記法があります。[ ]は未着手、[x]は完了、[~]は進行中を表します。

さらに、メタデータタグが豊富に用意されています。#p0から#p3は優先度(p0が最重要、p3が低優先度)、@aliceは担当者、~2hは見積もり時間、!2024-02-15は期限を表します。そして、インデントによるネストでサブタスクを表現できます。この構文は覚えやすく、手で書くこともでき、AIに出力させることも容易です。

7種類のビューで可視化

TaskMLの真価は、1つの構文から7種類の異なるビューを生成できる点にあります。それぞれのビューには異なる用途があります。

リストビューは最もシンプルな表示で、ネストされたタスクリストとして表示されます。素早く全体を把握したい時に便利です。カンバンビューは、タスクを「未着手」「進行中」「完了」のカラムに分類して表示します。アジャイル開発でよく使われるTrelloやNotionのボードに似た表示です。

タイムラインビューはガントチャート風の表示で、タスクのスケジュールを時系列で確認できます。テーブルビューはスプレッドシート形式で、ソート可能なカラムでタスクを一覧表示します。ツリービューは親子関係を階層構造で表示し、サブタスクの関係を明確にします。

グラフビューはノードベースの可視化で、タスク間の依存関係を視覚的に確認できます。サマリービューは統計ダッシュボードで、完了率や担当者ごとのタスク数などを表示します。同じデータソースから、目的に応じて最適なビューを選択できるのは大きな利点です。

実践してみよう

TaskMLを試すには、まずnpmでパッケージをインストールします。

npm install taskml

基本的な使い方は以下の通りです。

import { parse, render } from 'taskml';

const taskml = `
@project My Project
[ ] First task #p0
  [x] Subtask done
  [ ] Subtask pending
[ ] Second task #p1 @me ~1h
`;

const tasks = parse(taskml);
const html = render(tasks, { view: 'kanban' });

公式のプレイグラウンド(taskml.dev/playground)では、ブラウザ上で即座にTaskMLを試すことができます。構文を入力すると、リアルタイムで各ビューにレンダリングされる様子を確認できます。

Claude Codeと組み合わせる場合は、「TaskML形式でタスクを出力してください」と指示するだけです。TaskMLの構文を説明すれば、Claudeは正しい形式で出力してくれます。これにより、AIが生成したタスクをそのまま可視化ツールに流し込むことが可能になります。

知っておくと便利なTips

  • 優先度の使い分け: p0は「今すぐ対応が必要」、p1は「今週中に」、p2は「余裕があれば」、p3は「いつか」という基準で使い分けると、チーム内で認識が揃いやすくなります。

  • 時間見積もりの単位: ~30mで30分、~2hで2時間、~1dで1日を表せます。見積もりを習慣化することで、プロジェクト全体の工数把握が容易になります。

  • コンテキストブロックの活用: @project@sprint@milestoneなど、複数のコンテキストを組み合わせることで、大規模プロジェクトでも整理された構造を維持できます。

  • AIへの指示方法: 「以下のタスクをTaskML形式で出力してください。優先度と担当者を含めてください」と具体的に指示することで、より正確な出力が得られます。

まとめ

TaskMLは、AIエージェントとの協働において見落とされがちな「出力フォーマットの標準化」という問題に取り組んだ意欲的なプロジェクトです。人間にもAIにも扱いやすい構文設計、7種類のビュー、そして依存関係のない軽量な実装は、実用性を重視した設計思想を感じさせます。

Claude Codeを使ってタスク管理を効率化したい方、AIの出力を自動処理したい方にとって、TaskMLは検討に値するツールです。MIT ライセンスのオープンソースなので、自分のワークフローに合わせてカスタマイズすることも可能です。


📎 元記事: https://dev.to/suede/i-built-a-markup-language-for-ai-agent-task-output-2l65

コメント

タイトルとURLをコピーしました