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/
Author And Source
この問題について(PlantUML Tips(状態遷移図向け)), 我々は、より多くの情報をここで見つけました https://qiita.com/hcmurakamis@github/items/7dc14d89d91f99285839著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .