一、要素
1.参加者とライフライン
@startuml
actor 利用者 as user1
participant システム as sys1
database データベース as db1
@enduml
ライフラインとは各参加者の垂直破線のことで、オブジェクトが時間軸上に存在することを示します。
2.メッセージの送信
-> 一つの横棒は実線で、同期メッセージを表します
--> 二つの横棒は破線で、戻りメッセージを表します
->> 二つの矢印の実線は非同期メッセージを表します
-->> 二つの矢印の破線は非同期戻りメッセージを表します
@startuml
participant クライアント
participant サーバー
クライアント -> サーバー: 同期呼び出し
サーバー --> クライアント: レスポンス
クライアント ->> サーバー: 非同期リクエスト
サーバー -->> クライアント: コールバック
@enduml
3.アクティベーションボックス
ライフライン上の長方形で、オブジェクトがメッセージを処理または操作を実行している時間帯を示します。
++ 開始を表し、-- 終了を表します
@startuml
ユーザー -> 注文サービス ++: 注文作成
注文サービス -> 決済サービス ++: 決済処理
決済サービス --> 注文サービス --: 決済完了
注文サービス --> ユーザー --: 注文完了
@enduml
4.コメント
参加者とメッセージの両方にコメントを追加できます。
@startuml
note left of ユーザー: これはコメントです
note over ユーザー,注文サービス: 複数オブジェクトにまたがるコメント
ユーザー->注文サービス:
note right: メッセージに関するコメント
@enduml
5.区切り線
== を使用してシーケンス図の異なる段階やモジュールを区切ります。
@startuml
ユーザー -> システム: 注文提出
システム -> 決済ゲートウェイ: 決済リクエスト送信
決済ゲートウェイ --> システム: 決済成功
== 注文処理フェーズ ==
システム -> 物流システム: 配送指示作成
物流システム --> システム: 配送指示完了
== 通知フェーズ ==
システム -> ユーザー: 注文確認通知送信
システム -> 顧客サービス: 注文情報記録
@enduml
6.遅延マーカー
... ネットワーク遅延 ... は不確実な待機時間や遅延を表します
@startuml
クライアント -> サーバー: リクエスト送信
... ネットワーク遅延 ...
サーバー -> データベース: データ照会
データベース --> サーバー: 結果返却
... 処理時間 ...
サーバー --> クライアント: レスポンス返却
@enduml
7.自動番号付け
autonumber はメッセージに自動で番号を付けます
autonumber stop 次のメッセージに番号を付けません
autonumber resume 次のメッセージから番号付けを再開します
@startuml
autonumber
ユーザー -> システム: ログインリクエスト
システム -> データベース: ユーザー認証
autonumber stop
データベース --> システム: 認証結果
autonumber resume
システム --> ユーザー: ログインレスポンス
@enduml
8.オブジェクトの作成と削除
- 作成:
create participant "新しいオブジェクト名" as 別名または メッセージ送信時に別名の後に**を追加 - 削除:
destroy 別名または メッセージ送信時に別名の後に!!を追加
@startuml
participant "クライアントA" as ClientA
create participant "新規オブジェクトX" as NewObjX
ClientA -> NewObjX : 作成
NewObjX --> ClientA : 新しいインスタンス返却
ClientA -> NewObjX : 削除
destroy NewObjX
NewObjX --> ClientA : 削除成功
participant "クライアントB" as ClientB
participant "新規オブジェクトY" as NewObjY
ClientB-> NewObjY** : 作成
return 新しいインスタンス返却
ClientB -> NewObjY!! : 削除
return 削除成功
@enduml
二、制御フロー
1.条件分岐
alt + else + end を使用して条件判断を表現します
@startuml
alt 条件が真の場合
A -> B: 操作1
else 条件が偽の場合
A -> B: 操作2
end
@enduml
2.オプショナルステップ
opt + end を使用して任意の操作を表現します
@startuml
opt 任意操作
A -> B: 実行()
end
@enduml
3.ループ
loop + end を使用して繰り返し操作を表現します
@startuml
loop 3回リトライ
ユーザー -> システム: データリクエスト
システム --> ユーザー: データ表示
alt データ有効?
システム -> ユーザー: 処理成功
else データ無効?
システム -> ユーザー: リトライ中...
end
end
@enduml
4.並列処理
par + end を使用して並列処理を表現します
@startuml
par 並列処理
A -> B: タスク1
A -> C: タスク2
end
@enduml
5.中断
break + end を使用して中断を表現します
@startuml
クライアント -> サーバー: データリクエスト
break データ不存在
サーバー --> クライアント: エラー返却
end
サーバー --> クライアント: データ返却
@enduml