本文へスキップ
Mernyx
メニューを開く

Mermaid ステート図のチートシート

状態と、その間の遷移、そしてそのあいだの分岐。

このページのすべての図はMernyx(macOS 向けネイティブ Mermaid エディタ)が描いたものです。ブラウザで動く Mermaid.js ではなく、App のキャンバスで使うのと同じレンダラーです。

状態と遷移

遷移は 1 本の矢印です。矢印のあとのコロンが、それを起こすイベントです。

stateDiagram-v2
  [*] --> Idle
  Idle --> Running : start
  Running --> Idle : stop
Idle へ流れる開始点、started で Running へ、stopped で Idle へ戻るステートマシン。図を拡大

開始と終了

同じ [*] の印が両方を受け持ちます。それへ向かう矢印が終端、そこから出る矢印が開始です。

stateDiagram-v2
  [*] --> Draft
  Draft --> Published
  Published --> [*]
開始点、Draft とラベルされた箱、Published とラベルされた箱、そして終了点。図を拡大

選択点

問いかけるひし形です。出る矢印 1 本が答え 1 つです。

stateDiagram-v2
  [*] --> Check
  Check --> Decide <<choice>>
  Decide --> Accepted : if valid
  Decide --> Rejected : if invalid
開始点から Check とラベルされた箱へ、さらに Decide とラベルされたひし形へ、そこから Accepted と Rejected へ分岐します。図を拡大

状態の中の状態

波括弧は複合状態を開きます。その内部の状態はその中にいます。

stateDiagram-v2
  [*] --> Active
  state Active {
    [*] --> NumLockOff
    NumLockOff --> NumLockOn : press
    NumLockOn --> NumLockOff : press
  }
  Active --> [*]
Active という名の状態箱の中に、より小さい 2 つの状態 NumLockOff と NumLockOn があり、ラベルのついた矢印でつながっています。図を拡大

フォークとジョイン

フォークは流れを分割し、ジョインはすべての分岐がそろうまで待ちます。

stateDiagram-v2
  [*] --> Split <<fork>>
  Split --> A
  Split --> B
  A --> Merge <<join>>
  B --> Merge
  Merge --> [*]
開始点から横棒へ分岐し 2 本の流れになり、どちらも 2 本目の横棒へ、最後は終了点へつながっています。図を拡大

ノート

ノートは 1 つの状態に付けます。2 つにまたがって浮かせることもできます。

stateDiagram-v2
  [*] --> Draft
  Draft --> Review
  note right of Draft
    Still editable
  end note
ステートマシン。Draft 状態の右にノート箱が付いています。図を拡大

方向

フローチャートと同じキーワードです。既定は上から下です。

stateDiagram-v2
  direction LR
  [*] --> Idle
  Idle --> Running : start
開始点、Idle の箱、Running の箱が左から右に並んでいます。図を拡大

Mernyx で描いてみる

.mmd ファイルを開いて、キャンバスでノードを動かしてみてください。ソースコードもついてきます。macOS ネイティブで、ブラウザは介在しません。

図のプレビュー