シーケンス図

基本的な例

シーケンス -> を、2つの分類子間のメッセージを描画するために使います。 分類子を、明示的に宣言する必要はありません。

点線の矢印を使う場合は、--> とします。

また、<-<-- を使うこともできます。 これらによって図の見た目が変わることはありませんが、可読性を高めることができます。 ただし、以上の方法はシーケンス図だけに当てはまります。ほかの種類の図には当てはまりません。

🎉 Copied!
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml

分類子の宣言

キーワード participant を使って分類子を宣言すると、分類子の表示を調整することができます。

宣言した順序が、デフォルトの表示順になります。

分類子の宣言に別のキーワードを使用すると、分類子の形を変えることができます:
  • actor
  • boundary
  • control
  • entity
  • database
  • collections
  • queue

🎉 Copied!
@startuml
participant Participant as Foo
actor       Actor       as Foo1
boundary    Boundary    as Foo2
control     Control     as Foo3
entity      Entity      as Foo4
database    Database    as Foo5
collections Collections as Foo6
queue       Queue       as Foo7
Foo -> Foo1 : To actor 
Foo -> Foo2 : To boundary
Foo -> Foo3 : To control
Foo -> Foo4 : To entity
Foo -> Foo5 : To database
Foo -> Foo6 : To collections
Foo -> Foo7: To queue
@enduml

キーワード as を使って分類子の名前を変更することができます。

アクターや分類子の背景色を、HTML コードや色名を使って変更することもできます。

🎉 Copied!
@startuml
actor Bob #red
' The only difference between actor
'and participant is the drawing
participant Alice
participant "I have a really\nlong name" as L #99FF99
/' You can also declare:
   participant L as "I have a really\nlong name"  #99FF99
  '/

Alice->Bob: Authentication Request
Bob->Alice: Authentication Response
Bob->L: Log transaction
@enduml

orderキーワードを使って、分類子が表示される順序を変更することもできます。

🎉 Copied!
@startuml
participant Last order 30
participant Middle order 20
participant First order 10
@enduml

分類子名にアルファベット以外を使う

分類子を定義するときに引用符を使用することができます。そして、分類子にエイリアスを与えるためにキーワード as を使用することができます。

🎉 Copied!
@startuml
Alice -> "Bob()" : Hello
"Bob()" -> "This is very\nlong" as Long
' You can also declare:
' "Bob()" -> Long as "This is very\nlong"
Long --> "Bob()" : ok
@enduml

自分自身へのメッセージ

分類子は自分自身へメッセージを送信できます。

\n を使用して、複数行のテキストを扱えます。

🎉 Copied!
@startuml
Alice -> Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml

🎉 Copied!
@startuml
Alice <- Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml

[Ref. QA-1361]

テキストの位置

skinparam sequenceMessageAlignを使用すると、矢印に表示するテキストの位置をleftrightcenterに設定することができます。

directionまたはreverseDirectionを使用すると、矢印の方向に応じてテキストの位置が決定されます。この機能の詳細はskinparamのページを参照してください。

🎉 Copied!
@startuml
skinparam sequenceMessageAlign right
Bob -> Alice : Request
Alice -> Bob : Response
@enduml

応答メッセージのテキストを矢印の下に表示する

skinparam responseMessageBelowArrow trueコマンドを使用すると、応答メッセージのテキストを矢印の下に表示することができます。

🎉 Copied!
@startuml
skinparam responseMessageBelowArrow true
Bob -> Alice : hello
Alice -> Bob : ok
@enduml

矢印の見た目を変える

矢印の見た目をいくつかの方法によって変更できます。
  • メッセージの消失を示す最後の x を追加
  • \/<> の代わりに使うと
  • 矢印の先端が上側だけまたは下側だけになります。
  • 矢印の先端を繰り返す (たとえば >>//) と、矢印の先端が細くなります。
  • --- の代わりに使うと、矢印が点線になります。
  • 矢じりに最後の "O" を追加
  • 双方向の矢印を使用する

🎉 Copied!
@startuml
Bob ->x Alice
Bob -> Alice
Bob ->> Alice
Bob -\ Alice
Bob \\- Alice
Bob //-- Alice

Bob ->o Alice
Bob o\\-- Alice

Bob <-> Alice
Bob <->o Alice
@enduml

矢印の色を替える

以下の表記を使って、個々の矢印の色を変えることができます。

🎉 Copied!
@startuml
Bob -[#red]> Alice : hello
Alice -[#0000FF]->Bob : ok
@enduml

メッセージシーケンスの番号付け

メッセージへ自動で番号を振るために、キーワード autonumber を使います。

🎉 Copied!
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
@enduml

autonumber <開始> で開始番号を、また、autonumber <開始> <増分> で増分も指定することができます。

🎉 Copied!
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response

autonumber 15
Bob -> Alice : Another authentication Request
Bob <- Alice : Another authentication Response

autonumber 40 10
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response

@enduml

二重引用符で囲って番号の書式を指定することができます。

その書式指定は Java の DecimalFormat 方式で行います。 (0 は桁を表し, # は存在しない場合は 0 で埋める桁を意味します)。

一部のHTMLタグを書式に使うこともできます。

🎉 Copied!
@startuml
autonumber "<b>[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response

autonumber 15 "<b>(<u>##</u>)"
Bob -> Alice : Another authentication Request
Bob <- Alice : Another authentication Response

autonumber 40 10 "<font color=red><b>Message 0  "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response

@enduml

autonumber stopautonumber resume <増分> <書式> を自動採番の一時停止と再開にそれぞれ使用することができます。

🎉 Copied!
@startuml
autonumber 10 10 "<b>[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response

autonumber stop
Bob -> Alice : dummy

autonumber resume "<font color=red><b>Message 0  "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response

autonumber stop
Bob -> Alice : dummy

autonumber resume 1 "<font color=blue><b>Message 0  "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml

開始番号は、2つまたは3つの部分からなる数字の列を指定することもできます。各部分は.;,:またはこれらの組み合わせで区切ります。例えば、1.1.11.1:1のようにします。

自動的に最後の数字が増加していきます。

最初の数字を増加させるにはautonumber inc Aを、2番目の数字を増加させるにはautonumber inc Bを使用します。

🎉 Copied!
@startuml
autonumber 1.1.1
Alice -> Bob: Authentication request
Bob --> Alice: Response

autonumber inc A
'Now we have 2.1.1
Alice -> Bob: Another authentication request
Bob --> Alice: Response

autonumber inc B
'Now we have 2.2.1
Alice -> Bob: Another authentication request
Bob --> Alice: Response

autonumber inc A
'Now we have 3.1.1
Alice -> Bob: Another authentication request
autonumber inc B
'Now we have 3.2.1
Bob --> Alice: Response
@enduml

現在のautonumberの値は%autonumber%変数で参照することができます:

🎉 Copied!
@startuml
autonumber 10
Alice -> Bob
note right
  the <U+0025>autonumber<U+0025> works everywhere.
  Here, its value is ** %autonumber% **
end note
Bob --> Alice: //This is the response %autonumber%//
@enduml

[Ref. QA-7119]

タイトル、ヘッダー、フッター

titleキーワードはページにタイトルをつけるのに使われます。

headerfooterを使うことにより、ページにヘッダーやフッターをつけて表示することができます。

🎉 Copied!
@startuml

header Page Header
footer Page %page% of %lastpage%

title Example Title

Alice -> Bob : message 1
Alice -> Bob : message 2

@enduml

図の分割

図を複数の画像に分けるためにキーワード newpage を使います。

新しいページのタイトルをキーワード newpage の直後に書くことができます。

これは、複数ページにわたる長い図を書くときに便利な機能です。

🎉 Copied!
@startuml

Alice -> Bob : message 1
Alice -> Bob : message 2

newpage

Alice -> Bob : message 3
Alice -> Bob : message 4

newpage A title for the\nlast page

Alice -> Bob : message 5
Alice -> Bob : message 6
@enduml

メッセージのグループ化

次のキーワードを使えば、メッセージをまとめてグループ化できます。
  • alt/else
  • opt
  • loop
  • par
  • break
  • critical
  • group表示するテキスト

ヘッダ部分に文字列を追加することが可能です。(groupについては、後述の「groupの2つ目のラベル」を参照)

グループを閉じるにはキーワード end を使用します。

注:グループはネスト可能です。

🎉 Copied!
@startuml
Alice -> Bob: Authentication Request

alt successful case

    Bob -> Alice: Authentication Accepted

else some kind of failure

    Bob -> Alice: Authentication Failure
    group My own label
    Alice -> Log : Log attack start
        loop 1000 times
            Alice -> Bob: DNS Attack
        end
    Alice -> Log : Log attack end
    end

else Another type of failure

   Bob -> Alice: Please repeat

end
@enduml

groupの2つ目のラベル

groupでは、[]の間に2つ目のラベルを設定し、ヘッダに表示させることができます。

🎉 Copied!
@startuml
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Failure
group My own label [My own label 2]
    Alice -> Log : Log attack start
    loop 1000 times
        Alice -> Bob: DNS Attack
    end
    Alice -> Log : Log attack end
end
@enduml

[Ref. QA-2503]

メッセージに付けるノート

メッセージのすぐ後ろにキーワード note left または note right を使用し、メッセージにノートを付けることが可能です。

end note キーワードを使って、複数行のノートを作ることができます。

🎉 Copied!
@startuml
Alice->Bob : hello
note left: this is a first note

Bob->Alice : ok
note right: this is another note

Bob->Bob : I am thinking
note left
a note
can also be defined
on several lines
end note
@enduml

その他のノート

note left ofnote right ofnote overのキーワードを使って、分類子からの相対位置を指定してノートを配置することもできます。

ノートを目立たせるために、背景色を変えることができます。

また、キーワード end note を使って複数行のノートを作ることができます。

🎉 Copied!
@startuml
participant Alice
participant Bob
note left of Alice #aqua
This is displayed
left of Alice.
end note

note right of Alice: This is displayed right of Alice.

note over Alice: This is displayed over Alice.

note over Alice, Bob #FFAAAA: This is displayed\n over Bob and Alice.

note over Bob, Alice
This is yet another
example of
a long note.
end note
@enduml

ノートの形を変える [hnote, rnote]

キーワード hnoternote を使ってノートの形を変更できます。
  • hnoteで六角形のノートになります
  • rnoteで四角形のノートになります

🎉 Copied!
@startuml
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
 "r" as rectangle
 "h" as hexagon
endrnote
rnote over server
 this is
 on several
 lines
endrnote
hnote over caller
 this is
 on several
 lines
endhnote
@enduml

[Ref. QA-1765]

すべての分類子にまたがるノート [across]

次の構文で、すべての分類子にまたがるノートを直接作ることができます:
  • note across: ノートの記述

🎉 Copied!
@startuml
Alice->Bob:m1
Bob->Charlie:m2
note over Alice, Charlie: Old method for note over all part. with:\n ""note over //FirstPart, LastPart//"".
note across: New method with:\n""note across""
Bob->Alice
hnote across:Note across all part.
@enduml

[Ref. QA-9738]

複数のノートを同じレベルに並べる [/]

/を使って、複数のノートを同じレベルに並べることができます:
  • /を使わない場合(デフォルトでは、ノートは整列されません)

🎉 Copied!
@startuml
note over Alice : initial state of Alice
note over Bob : initial state of Bob
Bob -> Alice : hello
@enduml

  • /を使った場合(ノートが整列されます)

🎉 Copied!
@startuml
note over Alice : initial state of Alice
/ note over Bob : initial state of Bob
Bob -> Alice : hello
@enduml

[Ref. QA-354]

Creole と HTML

PlantUML では creole フォーマットを使うこともできます。

🎉 Copied!
@startuml
participant Alice
participant "The **Famous** Bob" as Bob

Alice -> Bob : hello --there--
... Some ~~long delay~~ ...
Bob -> Alice : ok
note left
  This is **bold**
  This is //italics//
  This is ""monospaced""
  This is --stroked--
  This is __underlined__
  This is ~~waved~~
end note

Alice -> Bob : A //well formatted// message
note right of Alice
 This is <back:cadetblue><size:18>displayed</size></back>
 __left of__ Alice.
end note
note left of Bob
 <u:red>This</u> is <color #118888>displayed</color>
 **<color purple>left of</color> <s:red>Alice</strike> Bob**.
end note
note over Alice, Bob
 <w:#FF33FF>This is hosted</w> by <img sourceforge.jpg>
end note
@enduml

境界線(区切り線)

== を使って、図を論理的なステップに分けることも出来ます。

🎉 Copied!
@startuml

== Initialization ==

Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

== Repetition ==

Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response

@enduml

リファレンス

キーワード ref over を使用して、図中にリファレンスを挿入できます。

🎉 Copied!
@startuml
participant Alice
actor Bob

ref over Alice, Bob : init

Alice -> Bob : hello

ref over Bob
  This can be on
  several lines
end ref
@enduml

遅延

処理の遅延を表すために ... が使えます。また、作成した遅延にコメントを付けることもできます。

🎉 Copied!
@startuml

Alice -> Bob: Authentication Request
...
Bob --> Alice: Authentication Response
...5 minutes later...
Bob --> Alice: Good Bye !

@enduml

テキストの折り返し

\nを使って改行することで、長いメッセージを折り返すことができます。

また、maxMessageSizeを設定するという方法もあります。

🎉 Copied!
@startuml
skinparam maxMessageSize 50
participant a
participant b
a -> b :this\nis\nmanually\ndone
a -> b :this is a very long message on several words
@enduml

間隔

図の間隔を調整するために、記号|||を使用することができます。

さらにピクセル数を指定することもできます。

🎉 Copied!
@startuml

Alice -> Bob: message 1
Bob --> Alice: ok
|||
Alice -> Bob: message 2
Bob --> Alice: ok
||45||
Alice -> Bob: message 3
Bob --> Alice: ok

@enduml

ライフラインの活性化と破棄

activatedeactivate を使って分類子の活性化を表します。

分類子の活性化はライフラインで表されます。

activatedeactivate は直前のメッセージに適用されます。

destroy は分類子のライフラインが終わったことを表します。

🎉 Copied!
@startuml
participant User

User -> A: DoWork
activate A

A -> B: << createRequest >>
activate B

B -> C: DoWork
activate C
C --> B: WorkDone
destroy C

B --> A: RequestCreated
deactivate B

A -> User: Done
deactivate A

@enduml

ライフラインはネスト(入れ子に)することができ、色をつけることもできます。

🎉 Copied!
@startuml
participant User

User -> A: DoWork
activate A #FFBBBB

A -> A: Internal call
activate A #DarkSalmon

A -> B: << createRequest >>
activate B

B --> A: RequestCreated
deactivate B
deactivate A
A -> User: Done
deactivate A

@enduml

自動的に活性化(autoactivate)することもできます。この場合はreturnキーワードを使用します。

🎉 Copied!
@startuml
autoactivate on
alice -> bob : hello
bob -> bob : self call
bill -> bob #005500 : hello from thread 2
bob -> george ** : create
return done in thread 2
return rc
bob -> george !! : delete
return success

@enduml

Return

新しいコマンドreturnは、リターンメッセージを生成し、オプションでテキストラベルをつけることができます。 リターンする先は最も最近活性化したライフラインです。 構文は単純にreturn ラベルです。ラベルを与える場合には、通常のメッセージに与えることが可能な文字列を何でも与えることができます。

🎉 Copied!
@startuml
Bob -> Alice : hello
activate Alice
Alice -> Alice : some action
return bye
@enduml

分類子の生成

キーワード create を、オブジェクトが最初のメッセージを受信する直前に置くことにより、このメッセージがオブジェクトを新しく 生成 していることを強調して表現できます。

🎉 Copied!
@startuml
Bob -> Alice : hello

create Other
Alice -> Other : new

create control String
Alice -> String
note right : You can also put notes!

Alice --> Bob : ok

@enduml

活性化、非活性化、生成のショートカット記法

対象の分類子を記述した直後に、次の記法を使うことができます。

  • ++ 対象を活性化する (続けてを記述することもできます)
  • -- 起点側を非活性化する
  • ** 対象のインスタンスを生成する
  • !! 対象のインスタンスを破棄する

🎉 Copied!
@startuml
alice -> bob ++ : hello
bob -> bob ++ : self call
bob -> bib ++  #005500 : hello
bob -> george ** : create
return done
return rc
bob -> george !! : delete
return success
@enduml

同じ行に活性化と非活性化を混ぜることもできます:

🎉 Copied!
@startuml
alice   ->  bob     ++   : hello1
bob     ->  charlie --++ : hello2
charlie --> alice   --   : ok
@enduml

🎉 Copied!
@startuml
@startuml
alice -> bob   --++ #gold: hello
bob   -> alice --++ #gold: you too
alice -> bob   --: step1
alice -> bob   : step2
@enduml
@enduml

[Ref. QA-4834, QA-9573 and QA-13234]

インとアウトのメッセージ

図の一部だけにフォーカスを当てたい場合には、「外から入ってくる」または「外に出ていく」メッセージを使えます。

左角括弧 "[" を使って図の左端、 右角括弧 "]" を使って図の右側を表せます。

🎉 Copied!
@startuml
[-> A: DoWork

activate A

A -> A: Internal call
activate A

A ->] : << createRequest >>

A<--] : RequestCreated
deactivate A
[<- A: Done
deactivate A
@enduml

また、次の書き方も使えます:

🎉 Copied!
@startuml
participant Alice
participant Bob #lightblue
Alice -> Bob
Bob -> Carol
...
[-> Bob
[o-> Bob
[o->o Bob
[x-> Bob
...
[<- Bob
[x<- Bob
...
Bob ->]
Bob ->o]
Bob o->o]
Bob ->x]
...
Bob <-]
Bob x<-]

@enduml

インとアウトのメッセージに短い矢印を使う

?短い矢印を使用することができます。

🎉 Copied!
@startuml
?-> Alice    : ""?->""\n**short** to actor1
[-> Alice    : ""[->""\n**from start** to actor1
[-> Bob      : ""[->""\n**from start** to actor2
?-> Bob      : ""?->""\n**short** to actor2
Alice ->]    : ""->]""\nfrom actor1 **to end**
Alice ->?    : ""->?""\n**short** from actor1
Alice -> Bob : ""->"" \nfrom actor1 to actor2
@enduml

[Ref. QA-310]

アンカーと持続時間

teozを使用するとダイアグラムにアンカーを追加することができ、それによって持続時間を表現することができます。

🎉 Copied!
@startuml
!pragma teoz true

{start} Alice -> Bob : start doing things during duration
Bob -> Max : something
Max -> Bob : something else
{end} Bob -> Alice : finish

{start} <-> {end} : some time

@enduml

コマンドライン-Pオプションを使用してpragmaを指定することもできます:

java -jar plantuml.jar -Pteoz=true

[Ref. issue-582]

ステレオタイプとスポット

<<>> を使い分類子にステレオタイプをつけることができます。

(X,color) と記述することによりステレオタイプに色付きの文字と円のアイコンをつけることができます。

🎉 Copied!
@startuml

participant "Famous Bob" as Bob << Generated >>
participant Alice << (C,#ADD1B2) Testable >>

Bob->Alice: First message

@enduml

デフォルトでは guillemet キャラクターがステレオタイプを表示するために使用されます。 スキンパラメータ guillemet を使用してこの動作を変更することができます:

🎉 Copied!
@startuml

skinparam guillemet false
participant "Famous Bob" as Bob << Generated >>
participant Alice << (C,#ADD1B2) Testable >>

Bob->Alice: First message

@enduml

🎉 Copied!
@startuml

participant Bob << (C,#ADD1B2) >>
participant Alice << (C,#ADD1B2) >>

Bob->Alice: First message

@enduml

タイトルについての詳細

タイトルには creole フォーマットが使用できます。

🎉 Copied!
@startuml

title __Simple__ **communication** example

Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response

@enduml

タイトルの記述では \n を使用して新しい行を追加することができます。

🎉 Copied!
@startuml

title __Simple__ communication example\non several lines

Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response

@enduml

また、キーワード titleend title を使うことにより、タイトルを複数行にわたって記述できます。

🎉 Copied!
@startuml

title
 <u>Simple</u> communication example
 on <i>several</i> lines and using <font color=red>html</font>
 This is hosted by <img:sourceforge.jpg>
end title

Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response

@enduml

分類子の囲み

キーワード boxend box を使い、分類子のまわりにボックスを描くことができます。

タイトルや背景色をキーワード box に続けて任意で追加できます。

🎉 Copied!
@startuml

box "Internal Service" #LightBlue
participant Bob
participant Alice
end box
participant Other

Bob -> Alice : hello
Alice -> Other : hello

@enduml

フッターの除去

図からフッターを削除するにはキーワード hide footbox を使います。

🎉 Copied!
@startuml

hide footbox
title Foot Box removed

Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

@enduml

スキンパラメータ

ダイアグラムの色やフォントを変更するには skinparam コマンドを使用します。

このコマンドは以下の場面で使用できます。

次の例のように他のパラメータを変えることもできます。

🎉 Copied!
@startuml
skinparam sequenceArrowThickness 2
skinparam roundcorner 20
skinparam maxmessagesize 60
skinparam sequenceParticipant underline

actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C

User -> A: DoWork
activate A

A -> B: Create Request
activate B

B -> C: DoWork
activate C
C --> B: WorkDone
destroy C

B --> A: Request Created
deactivate B

A --> User: Done
deactivate A

@enduml

🎉 Copied!
@startuml
skinparam backgroundColor #EEEBDC
skinparam handwritten true

skinparam sequence {
ArrowColor DeepSkyBlue
ActorBorderColor DeepSkyBlue
LifeLineBorderColor blue
LifeLineBackgroundColor #A9DCDF

ParticipantBorderColor DeepSkyBlue
ParticipantBackgroundColor DodgerBlue
ParticipantFontName Impact
ParticipantFontSize 17
ParticipantFontColor #A9DCDF

ActorBackgroundColor aqua
ActorFontColor DeepSkyBlue
ActorFontSize 17
ActorFontName Aapex
}

actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C

User -> A: DoWork
activate A

A -> B: Create Request
activate B

B -> C: DoWork
activate C
C --> B: WorkDone
destroy C

B --> A: Request Created
deactivate B

A --> User: Done
deactivate A

@enduml

パディングの変更

パディングの設定を変更することができます。

🎉 Copied!
@startuml
skinparam ParticipantPadding 20
skinparam BoxPadding 10

box "Foo1"
participant Alice1
participant Alice2
end box
box "Foo2"
participant Bob1
participant Bob2
end box
Alice1 -> Bob1 : hello
Alice1 -> Out : out
@enduml

付録:全種類の矢印の例

通常の矢印

🎉 Copied!
@startuml
participant Alice as a
participant Bob   as b
a ->     b : ""->   ""
a ->>    b : ""->>  ""
a -\     b : ""-\   ""
a -\\    b : ""-\\\\""
a -/     b : ""-/   ""
a -//    b : ""-//  ""
a ->x    b : ""->x  ""
a x->    b : ""x->  ""
a o->    b : ""o->  ""
a ->o    b : ""->o  ""
a o->o   b : ""o->o ""
a <->    b : ""<->  ""
a o<->o  b : ""o<->o""
a x<->x  b : ""x<->x""
a ->>o   b : ""->>o ""
a -\o    b : ""-\o  ""
a -\\o   b : ""-\\\\o""
a -/o    b : ""-/o  ""
a -//o   b : ""-//o ""
a x->o   b : ""x->o ""
@enduml

自分自身への矢印

🎉 Copied!
@startuml
participant Alice as a
participant Bob   as b
a ->     a : ""->   ""
a ->>    a : ""->>  ""
a -\     a : ""-\   ""
a -\\    a : ""-\\\\""
a -/     a : ""-/   ""
a -//    a : ""-//  ""
a ->x    a : ""->x  ""
a x->    a : ""x->  ""
a o->    a : ""o->  ""
a ->o    a : ""->o  ""
a o->o   a : ""o->o ""
a <->    a : ""<->  ""
a o<->o  a : ""o<->o""
a x<->x  a : ""x<->x""
a ->>o   a : ""->>o ""
a -\o    a : ""-\o  ""
a -\\o   a : ""-\\\\o""
a -/o    a : ""-/o  ""
a -//o   a : ""-//o ""
a x->o   a : ""x->o ""
@enduml

インとアウトのメッセージ('['、']')

インのメッセージ('[')

🎉 Copied!
@startuml
participant Alice as a
participant Bob   as b
[->      b : ""[->   ""
[->>     b : ""[->>  ""
[-\      b : ""[-\   ""
[-\\     b : ""[-\\\\""
[-/      b : ""[-/   ""
[-//     b : ""[-//  ""
[->x     b : ""[->x  ""
[x->     b : ""[x->  ""
[o->     b : ""[o->  ""
[->o     b : ""[->o  ""
[o->o    b : ""[o->o ""
[<->     b : ""[<->  ""
[o<->o   b : ""[o<->o""
[x<->x   b : ""[x<->x""
[->>o    b : ""[->>o ""
[-\o     b : ""[-\o  ""
[-\\o    b : ""[-\\\\o""
[-/o     b : ""[-/o  ""
[-//o    b : ""[-//o ""
[x->o    b : ""[x->o ""
@enduml

アウトのメッセージ(']')

🎉 Copied!
@startuml
participant Alice as a
participant Bob   as b
a ->]      : ""->]   ""
a ->>]     : ""->>]  ""
a -\]      : ""-\]   ""
a -\\]     : ""-\\\\]""
a -/]      : ""-/]   ""
a -//]     : ""-//]  ""
a ->x]     : ""->x]  ""
a x->]     : ""x->]  ""
a o->]     : ""o->]  ""
a ->o]     : ""->o]  ""
a o->o]    : ""o->o] ""
a <->]     : ""<->]  ""
a o<->o]   : ""o<->o]""
a x<->x]   : ""x<->x]""
a ->>o]    : ""->>o] ""
a -\o]     : ""-\o]  ""
a -\\o]    : ""-\\\\o]""
a -/o]     : ""-/o]  ""
a -//o]    : ""-//o] ""
a x->o]    : ""x->o] ""
@enduml

短いインとアウトのメッセージ('?')

短いインのメッセージ('?')

🎉 Copied!
@startuml
participant Alice as a
participant Bob   as b
a ->     b : //Long long label//
?->      b : ""?->   ""
?->>     b : ""?->>  ""
?-\      b : ""?-\   ""
?-\\     b : ""?-\\\\""
?-/      b : ""?-/   ""
?-//     b : ""?-//  ""
?->x     b : ""?->x  ""
?x->     b : ""?x->  ""
?o->     b : ""?o->  ""
?->o     b : ""?->o  ""
?o->o    b : ""?o->o ""
?<->     b : ""?<->  ""
?o<->o   b : ""?o<->o""
?x<->x   b : ""?x<->x""
?->>o    b : ""?->>o ""
?-\o     b : ""?-\o  ""
?-\\o    b : ""?-\\\\o ""
?-/o     b : ""?-/o  ""
?-//o    b : ""?-//o ""
?x->o    b : ""?x->o ""
@enduml

短いアウトのメッセージ('?')

🎉 Copied!
@startuml
participant Alice as a
participant Bob   as b
a ->     b : //Long long label//
a ->?      : ""->?   ""
a ->>?     : ""->>?  ""
a -\?      : ""-\?   ""
a -\\?     : ""-\\\\?""
a -/?      : ""-/?   ""
a -//?     : ""-//?  ""
a ->x?     : ""->x?  ""
a x->?     : ""x->?  ""
a o->?     : ""o->?  ""
a ->o?     : ""->o?  ""
a o->o?    : ""o->o? ""
a <->?     : ""<->?  ""
a o<->o?   : ""o<->o?""
a x<->x?   : ""x<->x?""
a ->>o?    : ""->>o? ""
a -\o?     : ""-\o?  ""
a -\\o?    : ""-\\\\o?""
a -/o?     : ""-/o?  ""
a -//o?    : ""-//o? ""
a x->o?    : ""x->o? ""
@enduml

特有のskinparam

デフォルト

🎉 Copied!
@startuml
Bob -> Alice : hello
Alice -> Bob : ok
@enduml

ライフラインの設定(lifelineStrategy)

  • nosolid(デフォルト)

🎉 Copied!
@startuml
skinparam lifelineStrategy nosolid
Bob -> Alice : hello
Alice -> Bob : ok
@enduml

[Ref. QA-9016]

  • solid
シーケンス図のライフラインを実線で表示するには、skinparam lifelineStrategy solidを設定します:

🎉 Copied!
@startuml
skinparam lifelineStrategy solid
Bob -> Alice : hello
Alice -> Bob : ok
@enduml

[Ref. QA-2794]

厳密なUMLスタイル(style strictuml)

厳密なUMLに準拠する(矢印の端を矢じり形ではなく三角形にする等)には、次のようにします:
  • skinparam style strictuml

🎉 Copied!
@startuml
skinparam style strictuml
Bob -> Alice : hello
Alice -> Bob : ok
@enduml

[Ref. QA-1047]

未接続の分類子を表示しない

デフォルトでは、すべての分類子が表示されます。

🎉 Copied!
@startuml
participant Alice
participant Bob
participant Carol

Alice -> Bob : hello
@enduml

hide unlinkedを指定すると、接続されていない分類子を非表示にできます。

🎉 Copied!
@startuml
hide unlinked
participant Alice
participant Bob
participant Carol

Alice -> Bob : hello
@enduml

[Ref. QA-4247]

グループメッセージに色を付ける

グループメッセージにを付けることができます:

🎉 Copied!
@startuml
Alice -> Bob: Authentication Request
alt#Gold #LightBlue Successful case
    Bob -> Alice: Authentication Accepted
else #Pink Failure
    Bob -> Alice: Authentication Rejected
end
@enduml

[Ref. QA-4750 and QA-6410]

メインフレーム

🎉 Copied!
@startuml
mainframe This is a **mainframe**
Alice->Bob : Hello
@enduml

[Ref. QA-4019 and Issue#148]