ガイド
プランを作り、図にし、エージェントに渡し、ファイルを持ち帰る。このページではその一連の流れを通して説明します。各 MCP ツールのリファレンスはドキュメントにあります。
1. プランを作る
プランは次のように整理されます。登録した時点で上の二つはすでに用意されています。
ワークスペース メンバー、ロール、エージェントが接続に使うキー
└─ プロジェクト 作っているもの一つと、そのプランが使う言葉
└─ フォルダ 任意。フォルダの中にフォルダを置ける
└─ プラン グラフ一つアプリは一つの画面です。左側のサイドバーには最近があり、その下にワークスペースのすべてのプロジェクトが、フォルダやプランと一緒に並びます。プロジェクトやフォルダをクリックすると開閉し、プランをクリックすると右側に開きます。設定、メンバー、ゴミ箱も右側に開き、その間もサイドバーは横に表示されたままです。サイドバーの端をドラッグすると幅を広げられます。
プロジェクトやフォルダにポインターを合わせると、その行に新しいプランと新しいフォルダのアイコンが現れ、その中に作成できます。ツリーの一番下のアイコンでは、プラン、フォルダ、新しいプロジェクトを作成します。名前はツリーの中でそのまま入力します。プランやフォルダを別のフォルダへドラッグすればそこに移り、行のメニューか右クリックで、名前の変更、移動、共有、エクスポート、ゴミ箱への移動ができます。
最初から General というプロジェクトがあります。プランは文書ではなくグラフです。上から下へ書き進めるのではなく、要素を追加し、それらがどう関係するかを示していくことになります。
2. 図にする
ノードをいちばん手早く作るには、別のノードから始めます。ノードの右側の端子からドラッグして何もないキャンバスで離すと、離した場所に接続済みの新しいノードができ、すぐにタイトルを入力できます。Enter で確定し、Escape で取り消します。グループの中で離すと、新しいノードはそのグループに入ります。空のプランでは、タイトルブロックのノードを追加、またはキャンバスを右クリックして出るここにノードを追加で、同じように作れます。タイトルをダブルクリックすると、カードの上でそのまま名前を変えられます。
ノードをクリックすると右側にパネルが開くので、種類、ステータス、タグ、そして詳細を好きなだけ入力します。詳細はエクスポート時にそのノードの Markdown ファイルの本文になるので、きちんと書いておく価値があります。
新しく引いた線はすべてフローとして始まります。線をクリックして意味を選んでください。
- フロー:システムが実際に動く向きです。この画面があのエンドポイントを呼び、そのエンドポイントがあのテーブルを読む、といった具合です。受け渡しのきっかけと、そこで運ばれるものを書くと、どちらも線の上に表示されます。応答は、逆向きのもう一本のフローとして表します。リストではなくシステムを描けるのは、この線です。
- 包含:入れ物から、その中に入るものへ向かいます。エクスポート時にディレクトリになるのはこれで、グループをドラッグすると中身もすべて一緒に動きます。
- 依存:先に存在していなければならないものを示します。何が何を呼ぶかとは別の話です。エクスポートでファイルに振られる番号の順序になります。
- 関連:単なる関連付けで、構造は持ちません。
同じパネルで、線のきっかけや運ぶものを書いたり、線を削除したりできます。
自動レイアウトを押すと、グラフ全体を並べ直します。手でドラッグしたものは動かしません。自分で置いたノードはそれ以降固定され、固定を解除できるのは、もう一度そのノードを動かすあなただけです。
3. キャンバスを操作する
キャンバスは描画ツールと同じ感覚で操作できます。
- 何もないキャンバスでドラッグすると選択範囲の枠が描かれ、枠に触れたノードがすべて選択されます。Shift を押しながらドラッグすると、いまの選択に追加されます。Shift、Ctrl、⌘ のいずれかを押しながらクリックすると、ノードを一つずつ選択に加えたり外したりできます。
- 画面の移動は、マウスの中ボタンでドラッグするか、Space を押しながらドラッグするか、ホイールを回します。Shift とホイールで横に動きます。拡大・縮小は、Ctrl か ⌘ を押しながらホイールを回すか、ピンチ操作で行います。
- 選択したものをドラッグすると、まとめて移動します。Backspace か Delete で削除します。
- Alt/⌥ を押しながらドラッグすると、元のノードはそのままに、離した場所にコピーが置かれます。
- Ctrl/⌘ + C、X、V でコピー、切り取り、貼り付けができます。貼り付けはポインターの位置に行われ、ほかのプランやタブにも貼り付けられます。Ctrl/⌘ + D はその場で複製します。
ドラッグ中は間隔も揃えてくれます。隣のノードとの距離が、すでにある二つのノードの間隔と同じになる位置に近づけるとそこに吸い付き、一致した間隔がピンクの寸法線で示されます。間隔が等しいノードを横一列か縦一列で選択すると、間隔ごとにハンドルが現れ、一つをドラッグするとすべての間隔が一度に変わります。間隔が揃っていない場合は、先に右クリックして間隔を揃えるを選んでください。
4. 詳細を書く
ノードの詳細はブロックエディタです。# とスペースで見出し(##、### はより小さな見出し)、- で箇条書き、1. で番号付きリスト、[] で ToDo、> で引用、バッククォート三つでコード、--- で区切り線になります。/ を入力するとすべてのブロックのメニューが開き、表、トグル、コールアウト(メモ、ヒント、注意、危険)も選べます。ブロックの横のハンドルをドラッグすると、ブロックを別の場所へ移せます。
同じ詳細に複数の人が同時に書き込め、書いている間は互いのカーソルが見えます。エージェントが書き込んだ内容も同じようにマージされます。キャンバスのカードにも見出しを含めて同じ内容が表示され、ToDo はカード上でそのままチェックできます。
エディタの外では、エクスポートもエージェントも詳細を Markdown として読みます。表は Markdown の表に、トグルは <details> ブロックに、コールアウトは Obsidian のコールアウトになるので、保管庫でも元の姿のまま開けます。
5. プロジェクトの言葉
種類とステータスはプロジェクトに属するので、同じプロジェクトのプランはすべて同じ言葉を使います。新しいプロジェクトには、ステータスとしてアイデア、計画済み、進行中、ブロック中、完了、中止が、種類として機能、タスク、決定、メモ、グループが最初から用意されています。ステータスの選択肢にはそれぞれの色が、種類の選択肢にはそれぞれの枠線が表示されます。どちらも最後に編集…があり、押すとプロジェクト設定のステータス・種類・タグが開きます。
そこで追加、名前や色の変更、並べ替えができます。各ステータスは未着手、進行中、ブロック中、完了、取り消しのいずれかの区分に属し、区分がそのステータスの働きを決めます。エージェントに次に何を勧めるか、どのフローを赤で描くか、何を進捗として数えるかは、区分によって決まります。種類ごとに枠線の形があり、作業として数えるかどうかも決められます。ステータスや種類を削除するとアーカイブされます。選択肢からは消えますが、それを使っているノードは誰かが変更するまでそのまま保持します。グループは組み込みのため削除できません。
タグはセレクトのように使えます。入力するとプロジェクトのタグが絞り込まれ、Enter を押すと強調表示されたタグが選ばれるか、一致するものがなければ固有の色を持つ新しいタグが作られます。入力欄が空のときに Backspace を押すと、最後のタグが外れます。タグのメニューからは色を変えたり、プロジェクトから削除したりできます。削除してもノードには名前が残ります。
6. エージェントを接続する
アカウント設定でエージェントを開いてキーを作成し、URL とキーを MCP クライアントに貼り付けます。マシンには何もインストールしません。サーバーには HTTP で接続します。正確な設定ブロックとツールの一覧はドキュメントにあります。
キーは、あなたがメンバーになっているすべての場所であなたとして動作します。そのため、ワークスペースがいくつあってもキーは一つで足ります。キーは一つのクライアントにだけ渡し、そのクライアントにちなんだ名前を付け、マシンの持ち主が変わるときには取り消してください。
7. エージェントに描かせる
エージェントにいつもどおりプランを書かせてから、それをキャンバスに載せるよう頼みます。エージェントは create_plan でプランを開きます。パスを渡せば、そのままフォルダに入れることもできます。
{
"name": "create_plan",
"arguments": {
"title": "Billing rework",
"folder": "Specs/Billing"
}
}そのあと apply_ops で描きます。まとめてアトミックに適用される一度の呼び出しで、開いているすべてのキャンバスに同時に反映されます。それ以降の変更もすべてこの呼び出しで行います。
{
"name": "apply_ops",
"arguments": {
"planId": "…",
"ops": [
{ "op": "upsert_node",
"node": { "slug": "pricing-rules", "title": "Pricing rules" } },
{ "op": "upsert_node",
"node": { "slug": "tax", "title": "Tax by region",
"kind": "decision", "status": "blocked" } },
{ "op": "upsert_edge",
"edge": { "from": "tax", "to": "pricing-rules",
"carries": "rate table" } }
]
}
}何がないかに注目してください。座標です。エージェントは構造を宣言し、レイアウトはサーバーが行います。位置を求められた言語モデルは、誰も読みたくない図を描き、そのためにコンテキストまで消費するからです。また、ノードは識別子で指定されるので、同じ呼び出しを二度送っても二度目は何も変わりません。
エージェントもプロジェクトの言葉を使います。プランを読めばどんな種類とステータスがあるかがわかり、プロジェクトにない値を使うと、ある値の一覧とともに拒否されます。そのため、エージェントが勝手にステータスを作り出すことはありません。
エージェントに一つ頼んでおくとよいのは、見てわかる識別子にすることです。pricing-rules なら次のメッセージで名前として使えますが、node-7 ではそうはいきません。
8. ファイルを持ち帰る
エクスポートを押すと zip がダウンロードされます。包含関係はディレクトリに、依存の順序は各ファイル名の番号になり、どのノードも自分のフロントマターを持っています。そのため、このファイル一式はグラフの絵ではなく、グラフそのものを完全に記述しています。
plan-export.zip ├── README.md 概要と目次 ├── 01-foundation/ ほかのノードを含むノードはディレクトリになる │ ├── README.md …そのノード自身のメモはここに入る │ ├── 01-ledger-schema.md │ └── 02-pricing-rules.md 依存関係の順に番号が付く ├── 02-invoicing/ │ └── 01-render-pdf.md ├── plan.canvas Obsidian で開ける(レイアウトもそのまま) └── plan.json 同じ内容を機械可読な形で
フォルダを Obsidian の保管庫に入れれば、plan.canvas が同じ図として開きます。あるいはソースコードの隣にコミットしておけば、エージェントが毎回それを読みます。それこそが、この取り組み全体の目的です。
依存関係に循環があってもエクスポートは止まりません。循環は毎回同じ方法で断ち切られ、README に報告されるので、同じプランからは常に同じファイルが出力されます。
9. ほかの人と作業する
編集はリアルタイムです。同じプランを開いている二人には互いの変更がその場で見え、同じノードの詳細に二人が同時に入力しても、上書きではなくマージされます。MCP を通して書き込むエージェントも、参加者の一人にすぎません。
共有で作成したリンクは、アカウントがなくても誰でも開いて読み、エクスポートできます。共有をやめれば、そのリンクは使えなくなります。
ワークスペースのメンバーでは、参加している人の一覧を確認し、ロール(オーナー、管理者、編集者、閲覧者)を変更し、招待リンクを作成できます。まだメール送信の機能がないので、リンクはご自身で送ってください。
10. 自分で動かす
スタック全体が AGPL-3.0 で、必要なのは Node と Postgres だけです。リポジトリをクローンし、.env.example をコピーして、Postgres を起動し、マイグレーションを適用してから実行します。正確なコマンドは README にあります。
設定はすべて環境変数で行います。また、Web アプリはサーバーのアドレスをビルド時ではなく実行時に読み込むので、一度ビルドしたバンドルがどの環境でも動きます。
まだできていないこと
いずれ出くわすことなので、率直に書いておきます。メールは一切送信されないため、招待は自分で相手に渡すリンクであり、メールアドレスは変更できません。ログインはメールアドレスとパスワードのみです。アプリ内に検索欄はなく、履歴にはすべての変更が残りますが、以前の版に戻すことはできません。
このうちどれかで困っているなら、GitHub Issuesで知らせてください。次に何を作るかに影響します。