PlantUMLシーケンス図の構文ガイド

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

A シーケンス図は行動的なUML図は、ソフトウェアの操作が時間とともにどのように実行されるかを詳細に示すものです。統合モデル言語(UML)仕様のコア標準として、オブジェクト、プロセス、またはマイクロサービスがメッセージを交換する正確な順序をモデル化します。ライフラインを垂直に、順次的な相互作用を水平にマッピングすることで、この特定のUML図タイプソフトウェアエンジニアやシステムアーキテクトが、本番コードを書く前に、複雑なAPIコールシーケンス、ネットワークデータのハンドシェイク、データベーストランザクションの境界を明確に可視化できるようにします。

With VPasCode、並行する矢印を合わせたり、メッセージラインを伸ばしたり、新しいステップのためのスペースを確保するために境界ボックスをずらしたりするのに何時間も費やす必要はありません。私たちのレイアウトエンジンは、プレーンテキストの宣言型スクリプトを入力するたびに、タイムライングリッド全体を動的に計算します。

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

PlantUMLで実行可能で、標準に準拠したUMLシーケンス図を設計するには、コンポーネントの宣言、メッセージ矢印のスタイル、ライフライン、論理制御構造を習得する必要があります。

1. UML参加者と形状の宣言

デフォルトでは、このUML図内のコンポーネントは標準の四角いボックスの形状を継承します。ただし、特定のUMLキーワードを使用することで、エンティティの視覚的アーキタイプを変更し、読者がシステムの境界について即座にアーキテクチャ的文脈を理解できるようにすることができます。

actor Client
boundary "APIゲートウェイ" as Gateway
control Controller
database "PostgreSQL" as DB

2. メッセージ矢印と同期性

矢印の線と矢印の先端のスタイルは、UML図の標準に基づいて、インフラストラクチャパイプライン上で発生する正確な通信プロトコルを確立します:

  • 同期リクエスト(ブロッキング):実線と実線の矢印先端で示されます。送信者は応答を待機します:A -> B
  • 非同期メッセージ(ノンブロッキング):実線と細いオープン矢印先端で示されます。送信者はデータを渡し、すぐに処理を進めます:A ->> B
  • 応答/戻り値:点線とオープン矢印先端で示されます:B --> A

3. ライフラインの管理(アクティベーションとディアクティベーション)

コンポーネントが平らな棒のように見えないようにするため、プロセスがCPUスレッドやメモリ容量を実際に使用しているときに明示的に表示する必要があります。activate および deactivate マーカーを使用するか、短縮表記のインラインインクリメント構文(++ / --):

Gateway -> Controller ++ : "processPayment()"
Controller --> Gateway -- : "返金レシートを返す"

4. ロジックブロック:代替、ループ、並列処理

複雑なビジネスロジック(if/elseの分岐、データベースの再試行、並列実行スレッドなど)は、UML図の仕様で「結合断片」として知られる構造化されたグローバルフレーム境界内にラップされる必要があります:

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

  • 区切り線を使用してメッセージをグループ化する: 二重等号(”== あなたのフェーズ ==)を使用して、巨大な認証からチェックアウトまでのシーケンスを明確な論理的マイルストーンに分割する。
  • 自動番号付けを使用する: 以下の位置にautonumberディレクティブを直接以下に配置する@startuml。これにより、ワークスペースがすべての矢印にステップ番号を付与するよう強制され、コードレビューがはるかに容易になります。
  • 応答を簡潔に保つ: 戻り矢印(-->)に巨大な記述文を書かないでください。代わりに、戻り途中の生データオブジェクトやHTTPコードを単純にラベル付けしてください(例:"201 Created Token").

実世界のPlantUMLシーケンス図の例

例1:マイクロサービス認証ループ(Altブロックとライフライン)

このボイラープレートは、クライアントがゲートウェイに対して認証を行う標準的なセキュリティシーケンスを処理し、明確なライフラインと、標準的なUML図形式内の代替条件結果フレームワークを示しています。

@startuml
autonumber
actor User
boundary "Web App" as App
control "Auth Service" as Auth

User -> App ++ : "資格情報を送信"
App -> Auth ++ : "POST /v1/auth"

alt #LightGreen 成功したログイン
    Auth --> App : "200 OK (JWTトークン)"
    App --> User : "ダッシュボードをレンダリング"
else #LightPink 無効な資格情報
    Auth --> App : "401 Unauthorized"
    App --> User : "エラートーストを表示"
end

deactivate Auth
deactivate App
@enduml

構文の分解:autonumberタグは自動的に1から5までの番号を管理します。altおよびelseブロックにはカスタムの16進数カラーフラグ(例:#LightGreen)が付加され、成功と失敗の実行パスに即座に視覚的な強調が加えられます。++トークンにより、ネットワーク呼び出しブロック中もライフラインが活性化されたままになります。

例2:高度な注文処理(ループ、並列処理、区切り)

このエンタープライズアーキテクチャのブループリントは、タスクを並列ワーカーに分割し、データベースへの書き込みを実行し、外部システムの同期ループに依存する堅牢なチェックアウトシステムをモデル化しています。

@startuml
autonumber
boundary "チェックアウトAPI" as API
database "注文DB" as DB
control "ワーカーキュー" as Queue
boundary "Stripe" as Stripe

== フェーズ1:取引帳票の検証 ==
API -> DB ++ : "保留中の注文を書き込み"
DB --> API -- : "注文ID確認済み"

== フェーズ2:支払いおよび非同期処理 ==
API -> Stripe ++ : "顧客アカウントから請求"
Stripe --> API -- : "支払い承認済み"

par 並列バックグラウンド処理
    API -> Queue ++ : "'Order_Placed'イベントを公開"
    deactivate Queue
else
    API -> DB ++ : "ステータスを'支払い済み'に更新"
    deactivate DB
end

loop ネットワーク障害時に最大3回リトライ
    API -> API : "通知同期WebhookをPing"
end

API --> Client : "HTTP 200(成功)を返却"
@enduml

構文の分解:==区切りはレイアウトを明確な運用フェーズに分割します。parブロックはメッセージの矢印経路を明確に2つの別々の水平経路に分岐させ、イベントの公開とデータベースのステータス更新が互いにブロッキングされることなく同時に発生することを示しています。自己指向の矢印(API -> API)はローカル内部インスタンスの関数ループを完璧に表現しています。

上部へスクロール