PlantUML Tips(状態遷移図向け)


はじめに

PlantUMLで状態遷移図を作成する方向けにTipsをまとめました。
痒い所に手が届けば幸いです。

前提知識

PlantUML
http://plantuml.com/ja/

確認バージョン

2.11.0 on VSCode

状態項目

名称に記号・絵文字を使用したい

状態項目名に「(」とか「)」とか「-」とか「&」でさえも使用するとエラーになります。
使用する場合は""で括ってください。
外部の状態(中括弧を使用しているところ)の名称に記号を含めたい場合はasでエイリアスを付加しないとエラーになります。

@startuml
state "禁止文字入り(半角括弧とか-とか)" as aliasName {
  state "絵文字もダブルクオーテーションで括れば可能😀😁😂"
}
@enduml

背景色を変更したい

状態名称の後ろに色名を指定します。

@startuml
state WhiteState #White{
  state BlueState #Blue
}
state GreenState #00FF00
@enduml

枠線の色を変更したい

skinparamを使用します。
特定の枠線のみ変更したい場合は<<任意の名前>>でskinparamと状態名称を紐づけます。

@startuml
'すべての枠線を水色にする
skinparam stateBorderColor #00FFFF
'特定の枠線を青色にする
skinparam stateBorderColor<<Specified>> #0000FF

state WhiteState #White{
  state BlueState #Blue
}
state GreenState <<Specified>> #00FF00
@enduml

文字のスタイルを変更したい

skinparamを使用する方法、XMLなタグで指定する方法があります。

@startuml
'特定の文字を赤・フォントサイズ20にする
skinparam StateFontColor<<Specified>> #FF0000
skinparam StateFontSize<<Specified>> 20

'注意:改行(<br>)が認識されないので、1行ごとに改行\nを付加する必要がある
state "<b><color:#FFFFFF>タグで指定してみた</color></b>\n<s><color:#FFFFFF>2行目</color></s>" as BlueState #blue

state "skinParamで指定してみた"<<Specified>> #FFFF00
@enduml

矢印

矢印のスタイルを変更したい

矢印にいろいろ(※参照)指定します。
skinparamを指定してもできますがここでは省略します。
(※参照)http://forum.plantuml.net/93/how-use-different-color-for-arrows-in-state-diagram

@startuml
state WhiteState #FFFFFF
state GreenState #00FF00
WhiteState-[#Black]->GreenState : 色名を指定
WhiteState-[dashed,thickness=10]->GreenState : 点線・太さを指定
@enduml

文字のスタイルを変更したい

タグで指定します。
矢印すべての文字のスタイルを指定する場合はskinparamの指定でも可能です。
※skinparamによる特定の文字のスタイルの変更はできない模様・・・

@startuml
state WhiteState #FFFFFF
state GreenState #00FF00
WhiteState-->GreenState : <b><color:#0000ff>タグ指定</color></b>
WhiteState-->GreenState : 指定なし
@enduml

矢印の長さを変える

-->の-の数を変えると長さが変わります。

@startuml
state WhiteState #FFFFFF
state GreenState #00FF00
state SkyblueState #Skyblue
state PinkState #Pink
WhiteState--> GreenState: あっち
WhiteState--> SkyblueState : こっち
WhiteState--> PinkState : こっち
@enduml


上記が

@startuml
state WhiteState #FFFFFF
state GreenState #00FF00
state SkyblueState #Skyblue
state PinkState #Pink
WhiteState--> GreenState
WhiteState---> SkyblueState
WhiteState----> PinkState
@enduml


こう変わります。

矢印が重なる対策

実務レベルのUMLを書こうとするとたまに発生するネタ
特定の条件で発生するようです。

@startuml
state WhiteState #FFFFFF
state GreenState #00FF00{
state InnerGreenState #00FF00
}
InnerGreenState-> WhiteState: あっち
WhiteState->InnerGreenState : こっち
@enduml

矢印に向き(-up-> / -down-> / -left-> / -right->)を指定すると回避できますがここでは他の方法を紹介。

非表示の矢印([hidden]を付加したやつ)を追加することで
自動レイアウトが矢印の位置をずらしてくれます。
※多用は禁物

@startuml
state WhiteState #FFFFFF
state GreenState #00FF00{
state InnerGreenState #00FF00
}
InnerGreenState-> WhiteState: あっち
WhiteState->InnerGreenState : こっち
WhiteState-[hidden]>InnerGreenState : こっち(非表示)
@enduml

テキストに空行(\n)を付加して表示位置をずらすことで回避する方法もあります。必要に応じてどうぞ
※多用は禁物・・・

@startuml
state WhiteState #FFFFFF
state GreenState #00FF00{
state InnerGreenState #00FF00
}
InnerGreenState-> WhiteState: あっち\n
WhiteState->InnerGreenState : こっち
@enduml

注釈

背景色を変更したい

状態名称の後ろに色名を指定します。

@startuml
state WhiteState #FFFFFF
note bottom of WhiteState  #aqua
注釈
end note
@enduml

枠線の色を変更したい

skinparamを使用します。
※特定の枠線のみの変更はできないようなので、フォーラムに質問しています

@startuml
'すべての枠線を水色にする
skinparam NoteBorderColor #00FFFF

state WhiteState  #FFFFFF
note  bottom of WhiteState 
注釈:枠線の色は水色
end note
@enduml

文字のスタイルを変更したい

タグで指定します。
もちろんskinparamの指定でも可能です。

@startuml
state WhiteState #FFFFFF
note bottom of WhiteState
<b><color:#0000FF>注釈にタグを付加</color></b>
<b><color:#0000FF>改行<br>は効きません</color></b>
end note
@enduml

参考

指定可能な色名について
http://plantuml.com/ja/color

指定可能なskinparam一覧
※各種スタイルの変更に必要なskinparamが網羅されています
https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html

不明点や要望があればフォーラムに書くのも手です
http://forum.plantuml.net/