メインコンテンツへスキップ

Mermaid シーケンス図の書き方・早見表

シーケンス図は参加者同士のメッセージを表します。判断の流れはフローチャート、静的な構造はクラス図を選びましょう。

シーケンス図ジェネレーターで作成 →

クイックスタート

メッセージより先にエイリアスを宣言し、ライフラインの順序を決めます。

Mermaid
sequenceDiagram
  actor R as 読者
  participant S as 検索サービス
  R->>+S: 手引きを検索
  S-->>-R: 結果を返す

読み込み中…

構文リファレンス

構文リファレンス
構文意味
sequenceDiagram / participant / actor / asライフラインと表示名を宣言します。actorは人の記号です。
participant A@{ "type": "boundary" }型はboundary、control、entity、database、collections、queueです。基本形はparticipantとactorです。
->矢印なしの実線
-->矢印なしの破線
->>実線の矢印
-->>破線の矢印
<<->>実線の双方向矢印
<<-->>破線の双方向矢印
-x終端が交差印の実線
--x終端が交差印の破線
-)非同期を表す開いた実線矢印
--)非同期を表す開いた破線矢印
-|\半矢印の種類。向きと線種は例で確認できます。
--|\半矢印の種類。向きと線種は例で確認できます。
-|/半矢印の種類。向きと線種は例で確認できます。
--|/半矢印の種類。向きと線種は例で確認できます。
/|-半矢印の種類。向きと線種は例で確認できます。
/|--半矢印の種類。向きと線種は例で確認できます。
\\-半矢印の種類。向きと線種は例で確認できます。
\\--半矢印の種類。向きと線種は例で確認できます。
-\\半矢印の種類。向きと線種は例で確認できます。
--\\半矢印の種類。向きと線種は例で確認できます。
-//半矢印の種類。向きと線種は例で確認できます。
--//半矢印の種類。向きと線種は例で確認できます。
//-半矢印の種類。向きと線種は例で確認できます。
//--半矢印の種類。向きと線種は例で確認できます。
A->>()B / A()->>B / A()->>()B送信側または受信側ライフラインの中央に接続します。
activate / deactivate / ->>+ / -->>-活性区間を開始・終了します。入れ子でも開始と終了を対応させます。
create participant / create actor / destroy最初の受信メッセージの前に生成し、最後のメッセージの前に破棄を指定します。
Note left of / right of / over A,Bライフラインの横や上に注記を置きます。<br/>は改行です。
loop / alt / else / opt / par / and / critical / option / break / rect / end各ブロックはendで閉じます。else、and、optionは対応するブロック内で使い、rectには色を指定します。
autonumber / autonumber 10 5開始番号と増分を指定して自動採番できます。
box Color Label / end参加者の宣言を色付きまたは透明の箱でまとめます。
link A: Label @ URL / links A: {"Label":"URL"}参加者に単一リンクやJSONのメニューを追加します。
%% / accTitle: / accDescr:コメントとアクセシビリティ用の説明です。

参加者と表示名

短いidで参加者を識別し、表示名に説明を入れます。JSONで記号を変えられます。メッセージより先にライフラインを宣言しましょう。

Mermaid
sequenceDiagram
  actor R as 読者
  participant B@{ "type": "boundary" }
  participant C@{ "type": "control" }
  participant E@{ "type": "entity" }
  participant D@{ "type": "database" }
  participant L@{ "type": "collections" }
  participant Q@{ "type": "queue" }
  R->>B: 要求
  B->>C: 検証
  C->>E: 読み取り
  E->>D: 問い合わせ
  D-->>L: 結果
  L-)Q: 通知

読み込み中…

矢印の種類

文書の規約に合わせて矢印を選びます。開いた矢印は非同期を示すことが多く、交差印だけではライフラインは破棄されません。destroyが必要です。

Mermaid
sequenceDiagram
  participant A as 送信者
  participant B as 受信者
  A->B: メッセージ
  A-->B: メッセージ
  A->>B: メッセージ
  A-->>B: メッセージ
  A<<->>B: メッセージ
  A<<-->>B: メッセージ
  A-xB: メッセージ
  A--xB: メッセージ
  A-)B: メッセージ
  A--)B: メッセージ
  A-|\B: メッセージ
  A--|\B: メッセージ
  A-|/B: メッセージ
  A--|/B: メッセージ
  A/|-B: メッセージ
  A/|--B: メッセージ
  A\\-B: メッセージ
  A\\--B: メッセージ
  A-\\B: メッセージ
  A--\\B: メッセージ
  A-//B: メッセージ
  A--//B: メッセージ
  A//-B: メッセージ
  A//--B: メッセージ
  A()->>()B: 中央への接続

読み込み中…

生成と活性区間

createは生成メッセージの直前、destroyは終了メッセージの直前です。各活性区間の開始と終了を対応させます。

Mermaid
sequenceDiagram
  participant C as 制御役
  create participant W as 作業役
  C->>+W: 作業を開始
  Note right of W: 一時的な処理
  W-->>-C: 作業完了
  destroy W
  C-xW: 処理を停止

読み込み中…

制御ブロック

endで閉じます。elseは分岐、andは並行処理、optionはcriticalの復旧経路です。breakは例外による中断を表します。

Mermaid
sequenceDiagram
  participant C as クライアント
  participant S as サービス
  loop 再試行
    C->>S: 要求
    alt 受理
      S-->>C: 結果
    else 拒否
      S-->>C: エラー
    end
  end
  opt キャッシュあり
    S-->>C: 保存済みの結果
  end
  par 記録処理
    S->>S: 記録
  and 指標
    S->>S: 集計
  end
  critical 確定
    S->>S: 保存
  option 失敗
    S-->>C: 巻き戻し
  end
  break 時間切れ
    S-->>C: 停止
  end
  rect rgb(230,240,255)
    Note over C,S: レビューの境界
  end

読み込み中…

表示の設定

mirrorActorsは下部にも参加者を表示し、wrapはメッセージを折り返し、actorMarginはライフライン間を調整します。メッセージの順序は変わりません。

Mermaid
---
config:
  sequence:
    mirrorActors: false
    wrap: true
    actorMargin: 60
---
sequenceDiagram
  participant R as 読者
  participant G as 手引き
  R->>G: リファレンスを読む

読み込み中…

よくある間違い

ブロックを閉じ忘れる

入れ子の各ブロックにendを付けます。

誤った構文(下に修正例があります)

sequenceDiagram
  loop 再試行
    A->>B: 要求

endをそのまま本文に使う

endは特別な語です。曖昧になる場合は引用符や括弧で囲み、予約語をidに使わないでください。

制約

  • 横方向の位置はレイアウトが決めるため、ライフラインを自由には移動できません。
  • メッセージはコード順で、数値的な時間軸はありません。
  • メニューは埋め込み先の環境に依存します。

よくある質問 (FAQ)

actorとparticipantの違いは?
actorは人、participantは通常は箱で、追加の記号も使えます。どちらもメッセージを送受信します。
応答の矢印を書くには?
-->>で破線の応答を描きます。末尾にマイナスを付けると活性区間も終了します。
同時進行を表すには?
par内の経路をandで区切り、endで閉じます。