スイムレーン DSL ガイド

エディタ ショーケース

テキストだけでスイムレーン図を記述するための小さな言語です。人にもAIにも書きやすいよう、行指向でシンプルに設計しています。座標は自動レイアウトされるので、構造(誰が・何を・どの順で)だけを書けば図になります。

1クイックスタート

1行に1要素。lane(レーン)→ ノード → ->(矢印)の順に書くのが基本です。

# レーン(横帯 = 担当者/部門)
lane 顧客 #4f9cf9
lane 店員 #22c55e

# ノード:  <id> <種類> "ラベル" @レーン名
a start "来店" @顧客
b task  "注文を受ける" @店員
c start "商品を渡す" @店員

# 矢印:  from -> to [: ラベル]
a -> b
b -> c

下のプレイグラウンドに貼り付けて試せます。

2ライブ・プレイグラウンド

3構文リファレンス

要素書式説明
タイトルtitle "..."図のタイトル(任意)
レーンlane <名前> [#色]横帯。担当者・部門など。色は省略可(自動配色)
フェーズphase <名前> @<開始ノードID>縦の工程区切り(任意)。開始ノードの列から次フェーズ手前までを覆う
ノード<id> [種類] "ラベル" @<レーン>処理。種類省略時は task
矢印<from> -> <to> [: ラベル]ノードIDどうしを接続
コメント# ... / // ...行頭のみ。無視される

ノードの種類

種類用途
start角丸(端子)開始 / 終了
task長方形処理・作業(既定)
decisionひし形条件分岐
io平行四辺形入力 / 出力

ルール

  • ノード id は空白なしの一意な識別子(例 a, n1, review
  • 矢印が参照する id は定義済みであること
  • レーン名・ラベルに空白や # を含む場合は "二重引用符" で囲む
  • @レーン は定義済みのレーン名を指す
  • phase@ は定義済みのノードIDを指す(その列〜次フェーズ手前を覆う=範囲が一意に決まる)
  • 差戻しなどのループ(後退する矢印)も可。自動レイアウトが破綻しないよう処理されます

名前に空白を含む例

lane "カスタマー サポート" #06b6d4
n1 task "一次対応を行う" @"カスタマー サポート"

4文法(EBNF)

program    = { line } ;
line       = title | lane | phase | node | edge | comment | empty ;
title      = "title" , string ;
lane       = "lane" , name , [ color ] ;
phase      = "phase" , name , "@" , id ;     (* id = 開始ノード *)
node       = id , [ type ] , string , "@" , name ;
edge       = id , "->" , id , [ ":" , text ] ;
comment    = ("#" | "//") , text ;
type       = "start" | "task" | "decision" | "io" ;
name       = bareword | string ;        (* 空白や # を含むなら string *)
string     = '"' , { char } , '"' ;
color      = "#" , hex{3..8} ;
id         = bareword ;                  (* 空白なし・一意 *)

5AI への指示テンプレート

このブロックをそのままシステムプロンプト等に貼り付ければ、AI が正しい DSL を出力できます。

あなたはスイムレーン図を「Swimlane DSL」で出力するアシスタントです。
次の規則に厳密に従い、DSL のコードブロックだけを出力してください。

# 構文(1行1要素)
- title "図のタイトル"                      … 任意
- lane <レーン名> [#色]                    … 担当者/部門。最初に列挙する
- phase <フェーズ名> @<開始ノードID>        … 縦の工程区切り(任意)。開始ノードから次フェーズ手前まで
- <id> <種類> "ラベル" @<レーン名>       … 種類= start|task|decision|io
- <from> -> <to> [: ラベル]              … ノードIDを接続
- 行頭 # または // はコメント

# ルール
- id は空白なしで一意。矢印は定義済み id だけを参照する。
- 開始/終了は start、判断は decision、通常処理は task、入出力は io。
- 名前やラベルに空白・# を含むときは "ダブルクオート" で囲む。
- レーンは登場順に上から並ぶ。座標は書かない(自動レイアウトされる)。
- 分岐(decision)から出る矢印には「: はい / : いいえ」等のラベルを付ける。
- 差戻し等で前の工程へ戻る矢印(ループ)を書いてよい。

# 出力例
title "問い合わせ対応"
lane 顧客 #4f9cf9
lane サポート #22c55e
phase 受付 @q1
phase 対応 @q3
q1 start "問い合わせ" @顧客
q2 task "一次受付" @サポート
q3 decision "解決した?" @サポート
q4 start "完了" @顧客
q1 -> q2
q2 -> q3
q3 -> q4 : はい
q3 -> q2 : いいえ