Mermaid状態遷移図 — トランジション、ガード、ネスト状態

Mermaidで状態マシン図を構築します。状態遷移、ガード条件、ネスト(複合)状態、フォーク、ジョイン、選択擬似状態を使った振る舞いモデリングを学びます。

Diagram Types

詳細な説明

状態遷移図とは?

状態遷移図(ステートチャートとも呼ばれる)は、イベントに応じて状態が変化するエンティティの振る舞いをモデル化します。UIフロー、注文ライフサイクル、接続状態など、明確に定義された状態と遷移を持つシステムのモデリングに非常に有用です。

基本構文

状態は名前で定義し、遷移は-->とオプションのラベルを使います:

stateDiagram-v2
    [*] --> Idle
    Idle --> Processing : submit
    Processing --> Success : complete
    Processing --> Error : fail
    Error --> Idle : retry
    Success --> [*]
  • [*]開始終了の擬似状態を表します。
  • コロンの後の遷移ラベルは、トリガーとなるイベントを記述します。

状態の説明

コロンを使って状態に説明を追加できます:

stateDiagram-v2
    state "Waiting for payment" as Pending
    Pending : Entry / show payment form
    Pending : Exit / hide form

ネスト(複合)状態

状態はサブ状態を含むことができ、複雑な振る舞いを階層的にモデル化します:

stateDiagram-v2
    [*] --> Active
    state Active {
        [*] --> Running
        Running --> Paused : pause
        Paused --> Running : resume
    }
    Active --> Terminated : kill
    Terminated --> [*]

フォークとジョイン

フォークとジョインで並行(パラレル)状態をモデル化します:

stateDiagram-v2
    [*] --> fork_state
    state fork_state <<fork>>
    fork_state --> TaskA
    fork_state --> TaskB

    TaskA --> join_state
    TaskB --> join_state
    state join_state <<join>>
    join_state --> Complete
    Complete --> [*]

選択擬似状態

<<choice>>を使ってガード条件に基づく条件分岐をモデル化します:

stateDiagram-v2
    [*] --> CheckAge
    state CheckAge <<choice>>
    CheckAge --> Adult : [age >= 18]
    CheckAge --> Minor : [age < 18]

Mermaidの状態遷移図はstateDiagram-v2構文をサポートしており、元のstateDiagram構文よりクリーンなレンダリングと多くの機能を提供します。

ユースケース

マルチステップチェックアウトフォームの状態をモデル化するフロントエンドエンジニアのケース。状態遷移図がIdle、カートレビュー、配送情報、決済、処理中、確認済み、失敗の各状態を捉え、決済タイムアウトやリトライロジックなどのエッジケースの特定に役立ちます。

試してみる — Mermaid Diagram Editor

フルツールを開く