Mermaid.js シーケンス図の構文ガイド

シーケンス図とは何ですか?

A シーケンス図は重要な行動的UML図は、線形タイムライン上で異なるシステムエンティティ間のメッセージ、関数呼び出し、データペイロードの時系列的な流れを可視化することを目的としています。コアなUML図の種類として認識されており、X軸に沿ってシステムコンポーネントを垂直のライフラインとして積み重ね、Y軸に沿ってメッセージのやり取りを追跡することで、実行時の相互作用をマッピングします。このブループリントは、分散型APIのハンドシェイクのデバッグ、マイクロサービスのオーケストレーション経路、リアルタイムのユーザー認証フローの開発において非常に貴重です。

With Mermaid.jsを使用すると、直感的なテキスト構造を使って複雑な時間的プロセスをスクリプト化できます。エンジンは垂直方向の間隔を自動的に処理し、メッセージの矢印の整列を管理し、実行時のアクティベーションブロックをキャンバス上で明確に描画します。

コア構文ガイド:要素と構造

Mermaidで正確でスキャンしやすいUMLシーケンス図を設計するには、参加者宣言、メッセージ矢印のバリエーション、明示的なライフライン、条件付きブロック構造を習得する必要があります。

1. 参加者とアクターの宣言

標準のシステムエンティティを宣言するには、participantキーワードを使用します。エンティティが人間のエンドユーザーまたは外部オペレーターを表す場合は、actorキーワードを使用して、キャンバス上に標準の棒人間アイコンを描画します:

sequenceDiagram
    actor Client
    participant API as Gateway Router

プロのテクニック:次のasキーワードを使って、長いコンポーネント名を簡潔な内部別名にマッピングし、メッセージスクリプトを簡潔かつ読みやすく保ちます。

2. メッセージ矢印のフォーマット

使用する線の種類と矢印の先端は、システム参加者間の通信スタイルを決定します:

  • ->> **同期呼び出し:** 塗りつぶされた矢印の頭を持つ実線。実行の完了を待つブロッキングリクエストを表します。
  • --> **応答ライン:** 空の矢印の頭を持つ破線。データペイロードや承認トークンを返すために使用されます。
  • -> **非同期呼び出し:** 空の矢印の頭を持つ実線。ブロッキングしないメッセージまたはイベントのブロードキャストを示します。
sequenceDiagram
    App->>Server: リクエストペイロード
    Server-->App: 200 OK応答

3. ライフラインアクティベーションバーの管理

システムコンポーネントがタスクを実行中であるか、スレッドメモリを占有している正確なタイミングを表示するには、次のコマンドを使用します:activate および deactivate コマンド。あるいは、メッセージのターゲットにプラス(+)またはマイナス(-)記号を直接メッセージターゲットに追加することで、視覚的なショートカットとして使用できます:

sequenceDiagram
    Client->>+Server: データ処理
    %% サーバーは現在視覚的にアクティブ
    Server-->-Client: 結果を返す

4. 条件分岐と代替処理の構造化(Alt、Opt、Loop)

分岐する実行時ロジック、トークン評価、または繰り返しリクエストの再試行を処理するには、メッセージスクリプトを標準のブロック断片で囲みます:

  • alt / else — 条件付きパスを評価します(if/elseコードブロックと同様)。
  • opt — 特定の条件の下でのみ実行されるオプションステップを定義します。
  • ループ — 条件が満たされるまで実行シーケンスを繰り返します。
sequenceDiagram
    ループ 30秒ごと
        クライアント->>サーバー: ハートビートPing
    終了

クリーンなシーケンスタイムラインのためのベストプラクティス

  • ライフラインを整理して保つ: X軸に数十ものマイクロエンティティを並べてはいけません。プロセスが小さなヘルパークラスとやり取りする場合、それらを[認証ワーカー]や[キャッシュプール]のような高レベルのシステム境界の背後に抽象化してください。[認証ワーカー] または [キャッシュプール].
  • ステータスコードを明確にラベル付けする: 応答の戻り値を記述する際は(-->)、単に「データを返す」と書くのではなく、明確なHTTPステータスコードやイベントタイプ(例:"201 Created (JWT Token)")でパスをラベル付けして、エンジニアに正確な文脈を提供してください。
  • 複雑な計算のためのメモを実装する: 次の指示を使用して:Note over, Note left of、またはNote right of非視覚的な操作(内部の暗号化手順やデータベースデータのハッシュ化など)を文書化するために使用します。

実世界のMermaid.js シーケンス図の例

例1:セキュアなOAuth2トークン交換フロー(アクティベーションおよび代替ブロック)

この機能的なブループリントは、セキュアなユーザーログインシーケンスをモデル化しています。alt/elseブロックを使用して、人間のアクター、明確なシステムライフライン、複雑な検証パスを組み合わせる方法を示しています。

sequenceDiagram
    actor User as エンドユーザー
    participant App as モバイルアプリクライアント
    participant Auth as Auth0 IDプロバイダー

    User->>+App: 「OAuthでログイン」をクリック
    App->>+Auth: client_id および scope を含むリダイレクト
    Auth-->>User: ログインインターフェースをレンダリング
    User->>Auth: 認証情報の送信
    
    Auth->>Auth: パスワードハッシュの検証
    
    alt 認証情報が有効
        Auth-->>App: 認証コード付き302リダイレクト
        App->>Auth: コードをアクセストークンに交換
        Auth-->>-App: JWTトークン(IdToken)を返却
        App-->>User: ユーザーアカウントホームをレンダリング
    else 認証情報が無効
        Auth-->>App: 401 Unauthorizedエラーを返却
        App-->>-User: 「無効なユーザー名/パスワード」アラートを表示
    end

構文の分解: このタイムラインは複数当事者間のハンドシェイクを追跡しています。alt / else コンテナは二値の検証パスを明確にマッピングし、正常系のパスと並行してエラー状態が完全に文書化されることを保証します。

例2:分散型注文在庫チェックアウト(並列処理とメモ)

この高度なシステム設計図は、企業向けeコマースのチェックアウトパイプラインをマッピングしています。並列ブロック(par)を使用して、並行して実行されるAPIディスパッチルーチンを表示し、トポロジー全体にわたってデータベースのロックに関するメモを処理します。

sequenceDiagram
    participant Web as Webフロントエンド
    participant Ord as 注文オーケストレーター
    participant Inv as 在庫サービス
    participant Pay as 支払いゲートウェイ

    Web->>+Ord: チェックアウトリクエストを送信
    Note over Ord: 商品在庫の可用性を確認
    
    par 並列API呼び出しをディスパッチ
        Ord->>+Inv: 在庫アイテムをロック
        Inv-->-Ord: 在庫予約済み(在庫ロック)
    and
        Ord->>+Pay: クレジットカード決済の承認
        Pay-->-Ord: 決済成功(チャージ完了)
    end
    
    opt 処理割当に失敗した場合
        Note right of Ord: いずれかの呼び出しが失敗した場合、ロールバックサガを実行
    end
    
    Ord-->-Web: 200 成功 チェックアウト完了

構文の分解: このpar / and コンテナはエンジンに並列実行をグループ化するように指示し、並行して実行されるバックエンド操作を文書化します。Note over および Note right of タグは技術的な実行時解説をキャンバスグリッドに直接挿入し、データロックやロールバックサガのようなバックグラウンドトランザクションを理解するのにチームを支援します。メインのメッセージ矢印がごちゃごちゃにならないようにします。

上部へスクロール