HTML の使いどころと、文書に部品の定義を書いてフロー図・シーケンス図・グラフを描く手順
文書に構成図・処理の順番・時刻の流れ・数値の変化を図で入れるときに実行する。
features.diagrams がオン(既定)。オフにする手順は 機能をオン・オフする文章・表・手順・リストは Markdown で書く。 HTML は、図・チャートなど見た目のあるものを描くときだけ使う。 フロー図・シーケンス図・グラフ・操作できる部品は、HTML を書かずに部品の定義を書く。 部品で描けない見た目だけ HTML で書く。書き方は HTML の書き方。 HTML を文書に描かせる手順と、HTML の中にチャートを置く手順は コードブロックのHTMLを描く。
文書に書いた <script> は動かない。
動きは部品が持つ。
json のコードブロックを 1 つ置く<!-- flow -->
```json
{
"title": "問い合わせの受け取り",
"scope": "受け取りから分類まで",
"updated": "2026-10-18",
"width": 520,
"height": 160,
"nodes": [
{ "id": "recv", "kind": "script", "x": 20, "y": 48, "w": 140, "h": 64, "name": "受け取り", "sub": "1 通ずつ読む" },
{
"id": "classify", "kind": "dm", "x": 300, "y": 48, "w": 140, "h": 64, "name": "分類", "sub": "返信の種類を選ぶ",
"io": { "in": "問い合わせの本文", "do": "返信の種類から 1 つ選ぶ", "out": "返信の種類" }
}
],
"wires": [
{ "id": "w-body", "from": "recv", "to": "classify", "line": "flow", "points": [[160, 80], [300, 80]], "label": "本文", "labelAt": [230, 80], "tip": "件名を除いた本文" }
]
}
```
<!-- /flow -->
印は flow(フロー図)・sequence(シーケンス図)・chart(グラフ)・param(操作できる部品)。
範囲に置く json のコードブロックは 1 つだけ。
範囲のコードブロック以外の Markdown と定義の JSON は、描いた文書に残らない。
どの定義も title(題名)・scope(範囲)・updated(更新日。YYYY-MM-DD)を持つ。
図の上に題名・範囲・更新日が出る。
凡例は書かない。定義に出る箱の種類・線の種類・系列から作られる。
nodes の 1 つが箱 1 つ。
| 項目 | 説明 |
|---|---|
id |
線の端に指す名前。図の中で重ねない |
kind |
箱の種類。下の表から選ぶ |
x・y・w・h |
箱の左上の位置と大きさ。図の中の px |
name |
箱の名前 |
tag・sub |
名前の上の札と、名前の下の補足。省ける |
io |
in(入力)・do(処理)・out(出力)。ツールチップに出す。LLM・意思決定モデル・スクリプトなど、入力と出力を説明したい箱に付ける |
hint |
箱の説明の文。ツールチップに出す。io と一緒に書くと、入力・処理・出力の後に出る。省ける |
kind |
表すもの |
|---|---|
llm |
LLM |
dm |
意思決定モデル |
script |
スクリプト |
mcp |
MCP |
data |
データ |
external |
外部のシステム |
tag・name・sub の `` は、索引か用語集の表にある用語なら、本文の用語と同じ破線の下線とツールチップになる。
書き方は 索引と用語集を書く。
wires の 1 つが線 1 本。
| 項目 | 説明 |
|---|---|
id |
線の名前。図の中で重ねない |
from・to |
端の箱の id。矢じりは to の側に付く |
line |
線の種類。flow(処理の流れ)・read(読む)・write(書く)・reply(返す)・loop(戻る) |
points |
線が通る点。縦と横だけの折れ線で、箱の縁から縁へ引く |
label・labelAt |
線に書く入力の要約と、その位置。省ける |
tip |
入力の詳細。ツールチップに出す。省ける |
横の線が縦の線と交わる点は、mdmark が横の線に飛び越えの弧を入れる。
同じ向きで重なる線はずらす。
自動配置はしないので、x・y・points は自分で置く。
内側のシステムを大きな枠で囲むときは frame(title・x・y・w・h)を書く。
枠の内側を上から LLM・処理・データの 3 層に分けるときは lanes(label・kind・y・h)を書く。
kind は llm・mcp・data で、層の箱の色がうっすら背景に敷かれる。
外部のシステムの箱は枠の外に置く。
決まりは 構成図の決まり。
<!-- sequence -->
```json
{
"title": "問い合わせ 1 通の流れ",
"scope": "受け取りから分類まで",
"updated": "2026-10-18",
"participants": [
{ "id": "mail", "kind": "external", "tag": "外部", "name": "メールサーバー" },
{ "id": "recv", "kind": "script", "name": "受け取り" },
{ "id": "classify", "kind": "dm", "name": "分類" }
],
"steps": [
{ "from": "mail", "to": "recv", "label": "問い合わせのメール", "tip": "件名・本文・送り主のアドレス" },
{ "from": "recv", "to": "classify", "label": "本文" },
{ "from": "classify", "to": "recv", "label": "返信の種類", "reply": true }
],
"loop": { "label": "1 へ戻る(次の問い合わせ)" }
}
```
<!-- /sequence -->
participants は左から右へ並べる順、steps は上から下へ時刻の順。
reply を true にしたメッセージは、破線と開いた矢じりの返す線になる。
loop は最後のメッセージから最初へ戻る繰り返しで、右の帯を通る破線と戻り先のラベルになる。
kind は箱の種類と同じ。
<!-- chart -->
```json
{
"title": "返信までの時間",
"scope": "10 月の第 2 週",
"updated": "2026-10-18",
"x": { "label": "曜日", "ticks": ["月", "火", "水", "木", "金"] },
"y": { "label": "分", "min": 0, "max": 60, "step": 15 },
"series": [
{ "name": "自動返信", "points": [12, 9, 14, 8, 10] },
{ "name": "担当者", "points": [42, 38, 51, 35, 44] }
]
}
```
<!-- /chart -->
系列は 1〜4 つ。
points の数は x.ticks の数と同じにする。
系列は色と線の模様と点の形の組で分かれ、色だけで見分けなくてよい。
type で種類を選ぶ。省くと折れ線(line)になる。
type |
描くもの | 系列の書き方 |
|---|---|---|
line |
折れ線 | x.ticks と series |
bar |
棒。系列を色と塗りの模様の組で分ける | x.ticks と series |
pie |
円。扇形の外に割合(整数の %)、凡例に項目の名前と値を出す | series と x・y の代わりに items(name・value)を 1〜4 つ。凡例の値の単位は unit |
scatter |
散布図。系列を色と点の形の組で分ける | points を [x, y] の組にする。x は数値の軸で ticks を書かない |
縦の軸の min・max・step は 3 つとも書くか、3 つとも省く。
省くと、データの最小と最大を含む 1・2・5×10 のべき乗の刻みで切る。
図は全体が収まる倍率で開く。
右上のボタンと、図にフォーカスしているときのキー +・-・0 で拡大・縮小する。
縮小と拡大の間の倍率のボタン(125% の形)か 0 で、開いたときの倍率と位置に戻る。
ドラッグ・矢印キー・移動のボタンで動かし、全画面のボタンでモーダルに開く。
ホイールは文書のスクロールに使う(Shift を押しながらで横)。
文字の上では文字を選べる。
矢印のラベルと、io か hint を持つ箱の右上の印は、ポインターを乗せるかフォーカスするとツールチップが出る。
箱は右上の印の上でだけ開き、箱の上では開かない。ポインターの形は変わらない。
Esc で消え、ツールチップの上に乗っても消えない。
理解に必須のことはツールチップに入れず、箱と線の要約だけで図が読めるようにする。
ツールチップを出したくないときは、設定の features.hints をオフにする(機能をオン・オフする)。
即時。mount と update で描くたびに、文書の定義から図を描き直す。
[...document.querySelectorAll(".mdmark figure.mdmark-diagram")].map((f) => f.dataset.diagram)
書いた順に flow・sequence・chart が出る。
題名・範囲・更新日と凡例が図に付いている。
文書に定義の JSON の文字("nodes" など)が出ていない。
描いた図を確かめる の手順で、操作を通し、スクリーンショットを撮って見る。
定義の閉じの } を消して描く。
その図の場所に題 書き方の警告 の枠が出て、フロー図の部品の定義を JSON として読めません( で始まる本文に、読めなかった行と足りない記号が書かれる。
ほかの図と本文は描かれる。
定義の形が合わないときも、その図だけが警告になる。
本文に読めない箇所と直し方が書かれる(箱「分類」の種類 robot は使えません。使える種類は llm・dm・script・mcp・data・external です など)。
線の端が無い箱の id を指す・id が重なる・系列の点の数が目盛りの数と合わないのも、形の誤りになる。
印と定義を消す。
図を描く機能ごと止めるときは、features.diagrams をオフにする。
オフにすると印を取り除き、定義を JSON のコードブロックのまま描く。