📝

【PlantUML】シーケンスのスタイル変更Tips

2024/07/19に公開

色を変えたい系

シーケンスの線上の文字色を変える

□ 例: 文字の前に<color: 色>を入れる

@startuml
participant A
participant B

A -> B: <color: red>テスト1
B --> A: テスト2
@enduml

@startuml
participant A
participant B

A -> B: <color: blue>テスト1

B --> A: テスト2
@enduml

□ 例: 文字の前に<color: HTMLカラーコード>を入れる

@startuml
participant A
participant B

A -> B: <color: #FF4F02>テスト1
B --> A: テスト2
@enduml

シーケンスの線の色を変える

□ 例: 矢印の間に[#色]を入れる。

@startuml
participant A
participant B

A -[#red]> B: テスト1
B --> A: テスト2
@enduml

□ 例: 矢印の間に[HTMLカラーコード]を入れる。

@startuml
participant A
participant B

A -[#red]> B: テスト1
B -[#008800]-> A: テスト2
@enduml

シーケンスのparticipantの文字色を変える

□ 例1: HTMLカラーコードを使って指定する

@startuml
participant A as "<color:#ff0000>Aさん"
participant B

A -> B: テスト1
B --> A: テスト2
@enduml

□ 例2: skinparamを使用して、ParticipantFontColorを指定する

@startuml
skinparam sequence {
ParticipantFontColor #ff0000
}

participant A
participant B

A -> B: テスト1
B --> A: テスト2
@enduml

シーケンスのparticipantの背景色を変える

□ 例1: participant名の後ろにHTMLカラーコードを付ける。

@startuml
participant A #00bfff
participant B

A -> B: テスト1
B --> A: テスト2
@enduml

□ 例2: skinparamを使用して、ParticipantBackgroundColorを指定する

@startuml
skinparam sequence {
ParticipantBackgroundColor #add8e6
}

participant A
participant B

A -> B: テスト1
B --> A: テスト2
@enduml

シーケンスのparticipantのフォントと背景色を変える

□ 例1: participant名にHTMLカラーコードを使用する

@startuml
participant "<font color=#f0f8ff>Aさん" as A #ff0000
participant B

A -> B: テスト1
B --> A: テスト2
@enduml

□ 例2: skinparamを使用して、ParticipantBackgroundColorとParticipantFontColorを指定する

@startuml
skinparam sequence {
ParticipantBackgroundColor #ff0000
ParticipantFontColor #f0f8ff

}

participant A as "Aさん"
participant B

A -> B: テスト1
B --> A: テスト2
@enduml

シーケンスのparticipantの枠色を変える

□ 例1: skinparamを使用して、ParticipantBorderColorを指定する

@startuml
skinparam sequence {
ParticipantBorderColor #8b0000
}

participant A
participant B

A -> B: テスト1
B --> A: テスト2
@enduml

noteの文字の色を変える

□ 例1: <color:HTMLカラーコード>を文章の前につける。

@startuml
participant A
participant B

note over A, B
<color:#FF66FF>これは文章1です。
これはテストです。
end note

A -> B: テスト1
B --> A: テスト2
@enduml

□ 例2: <color:HTMLカラーコード>を文章の前につける。改行があるときは行ごとに指定するver1。

@startuml
participant A
participant B

note over A, B
<color:#FF66FF>これは文章1です。
<color: #00CC00>これはテストです。
end note

A -> B: テスト1
B --> A: テスト2
@enduml

□ 例2: <color:HTMLカラーコード>を文章の前につける。改行があるときは行ごとに指定するver2。

@startuml
participant A
participant B

note over A, B: <color: #5507FF>これは文章1です。\n <color: #FF570D>これはテストです。

A -> B: テスト1
B --> A: テスト2
@enduml

noteの背景色を変える

□ 例1: note over participantA, participantB HTMLカラーコード 文章 end note

@startuml
participant A
participant B

note over A, B #FFAAAA
これは文章1です。
これはテストです。
end note


A -> B: テスト1
B --> A: テスト2
@enduml

□ 例2: note over participantA, participantB HTMLカラーコード: 文章

@startuml
participant A
participant B

note over A, B #FFAAAA: これは文章1です。\n これはテストです。

A -> B: テスト1
B --> A: テスト2
@enduml

□ 例3: skinparamを使用して、NoteBackgroundColorを指定する

@startuml

skinparam NoteBackgroundColor #FFAAAA

participant A
participant B

note over A, B: これは文章1です。\n これはテストです。
note over A, B: これは文章2です。\n これはテストです。

A -> B: テスト1
B --> A: テスト2
@enduml

noteの枠色を変える

※2024年7月時点ではskinparamのNoteBorderColorの設定ができないため、styleで指定する。

□ 例1: <style></style>を使って、note全体の枠色を変える

@startuml
participant A
participant B

<style>
note {
  LineColor #red
}

</style>

note over A, B 
これは文章1です。
これはテストです。
end note 

note over A, B 
サンプルです
end note 

A -> B: テスト1
B --> A: テスト2
@enduml

□ 例2: <style></style>を使って、一部のnoteの枠色を変える

@startuml
participant A
participant B

<style>
note {  
  .custom_note_a {
      LineColor #FF570D
 }
}

</style>

note over A, B 
これは文章1です。
これはテストです。
end note 

note<<custom_note_a>> over A, B 
サンプルです
end note 

A -> B: テスト1
B --> A: テスト2
@enduml

opt, alt, loop, groupのテキスト文字の色を変える

□ 例1: <color: HTMLカラーコード> を文章の前に付ける

@startuml
participant A
participant B

opt <color:#ffa500>テストOPT
A -> B: テスト1
B --> A: テスト2
end

alt <color:#ffa500>テストALT
A -> B: テスト1
B --> A: テスト2
end

loop <color:#ffa500>テストLOOP
A -> B: テスト1
B --> A: テスト2
end

group <color:#ffa500>テストgroup
A -> B: テスト1
B --> A: テスト2
end
@enduml

□ 例2: skinparamを使用して、GroupFontColorを指定する
※gourpはヘッダーのみなので、例3で色を変えることが可能。

@startuml

skinparam sequence {
    GroupFontColor #ff0000
}



participant A
participant B


opt テストOPT
A -> B: テスト1
B --> A: テスト2
end

alt テストALT
A -> B: テスト1
B --> A: テスト2
end

loop テストLOOP
A -> B: テスト1
B --> A: テスト2
end

group テストgroup
A -> B: テスト1
B --> A: テスト2
end
@enduml

□ 例3: skinparamを使用して、GroupHeaderのGroupFontColorを指定する
ヘッダーの文字色を変えることが可能。

@startuml

skinparam sequence {
    GroupHeader {
    FontColor #ff0000
  }
}



participant A
participant B


opt テストOPT
A -> B: テスト1
B --> A: テスト2
end

alt テストALT
A -> B: テスト1
B --> A: テスト2
end

loop テストLOOP
A -> B: テスト1
B --> A: テスト2
end

group テストgroup
A -> B: テスト1
B --> A: テスト2
end
@enduml

opt, alt, loop, groupのヘッダー背景色を変える

□ 例1: HTMLカラーコードをopt, alt, loop, groupの後ろに付ける

@startuml
participant A
participant B

opt#d4af37 テストOPT
A -> B: テスト1
B --> A: テスト2
end

alt#d4af37 テストALT
A -> B: テスト1
B --> A: テスト2
end

loop#d4af37 テストLOOP
A -> B: テスト1
B --> A: テスト2
end

group#d4af37 テストgroup
A -> B: テスト1
B --> A: テスト2
end
@enduml

□ 例2: skinparamを使用して、GroupHeaderのGroupBackGroundColorを指定する

@startuml

skinparam sequence {
  GroupBackGroundColor #d4af37
}


participant A
participant B

opt テストOPT
A -> B: テスト1
B --> A: テスト2
end

alt テストALT
A -> B: テスト1
B --> A: テスト2
end

loop テストLOOP
A -> B: テスト1
B --> A: テスト2
end

group テストgroup
A -> B: テスト1
B --> A: テスト2
end
@enduml

opt, alt, loop, groupのヘッダー以外に背景色をつける

□ 例1: HTMLカラーコードをopt, alt, loop, groupと文章の間に入れる

@startuml
participant A
participant B

opt #d4af37 テストOPT
A -> B: テスト1
B --> A: テスト2
end

alt #d4af37 テストALT
A -> B: テスト1
B --> A: テスト2
end

loop #d4af37 テストLOOP
A -> B: テスト1
B --> A: テスト2
end

group #d4af37 テストgroup
A -> B: テスト1
B --> A: テスト2
end
@enduml

その他スタイルを変えたい系

シーケンスのparticipantの枠を太くする

□ 例: skinparamを使用して、ParticipantBorderThicknessを指定する

@startuml
skinparam sequence {
ParticipantBorderThickness 4
}

participant A
participant B

A -> B: テスト1
B --> A: テスト2
@enduml

シーケンスのskinparam指定の詰め合わせ

@startuml
skinparam sequence {
ArrowColor #9932cc
ActorBorderColor #f08080
LifeLineBorderColor #20b2aa
LifeLineBackgroundColor #A9DCDF

ParticipantBorderColor #000000
ParticipantBackgroundColor #32cd32
ParticipantFontSize 17
ParticipantFontColor #A9DCDF
ParticipantBorderThickness 4


ActorBackgroundColor #eee8aa
ActorFontColor #32cd32
ActorFontSize 17
}

actor Tanaka
participant A
participant B

A -> B: テスト1
B --> A: テスト2
@enduml

noteの枠を太くする

□ 例1: <style></style>を使って、note全体の枠の太さを変える

@startuml
participant A
participant B

<style>
note {
   LineThickness 4
}

</style>

note over A, B 
これは文章1です。
これはテストです。
end note 

note over A, B 
サンプルです
end note 

A -> B: テスト1
B --> A: テスト2
@enduml

□ 例2: <style></style>を使って、一部のnoteの枠の太さを変える

@startuml
participant A
participant B

<style>
note {  
  .custom_note_a {
      LineThickness 4
 }
}

</style>

note over A, B 
これは文章1です。
これはテストです。
end note 

note<<custom_note_a>> over A, B 
サンプルです
end note 

A -> B: テスト1
B --> A: テスト2
@enduml


noteのsytle指定の詰め合わせ

□ 角を丸くする: RoundCorner
□ フォントサイズ: FontSize
□ フォントカラー: FontColor
□ 枠線の太さ: LineThickness
□ 枠線の色: LineColor
□ 背景色: BackGroundColor

@startuml
participant A
participant B

<style>
note {  
  .custom_note_a {
      RoundCorner 15
      FontSize 30
      FontColor #40e0d0
      LineThickness 2
      LineColor red
      BackGroundColor #ffa07a
 }
}

</style>

note over A, B 
これは文章1です。
これはテストです。
end note 

note<<custom_note_a>> over A, B 
サンプルです
end note 

A -> B: テスト1
B --> A: テスト2
@enduml

その他

シーケンスで線と線の間隔を空ける・空白スペースをいれる

||| を使うと線と線の間にスペースを入れることが可能。

□ 例: ||| が1つの場合

@startuml
participant A
participant B

A -> B: テスト1
|||
B --> A: テスト2
@enduml

□ 例: ||| が3つの場合

@startuml
participant A
participant B

A -> B: テスト1
|||
|||
|||
B --> A: テスト2
@enduml

シーケンスの同じparticipantでactivate deactivateを繰り返す

とにかく見た目上で同じparticipantのライフラインのActivate/Deactivateを繰り返したい場合があったとき、例えば以下のように書くと、Activate/Deactivate already done" errorが起きる。

'errorが起きる例です。
@startuml
participant A
participant B
participant C

activate A
A -> B++: テスト1

B --> A: テスト2

deactivate B
deactivate A

activate A
A -> C++: テスト3
C -> C : テスト4

@enduml

□ 上記を解消するには[hidden]を使う。
[hidden]を使って、見えない線でactivateを記載すると、見た目上で同じライフラインでActivate/Deactivateを繰り返して使用しているように見せることが可能。

例: participant -[hidden]> participant のように、矢印の間に[hidden]を入れる。

@startuml
participant A
participant B
participant C

activate A
A -> B++: テスト1

B --> A: テスト2

deactivate B
deactivate A

A -[hidden]> C

activate A
A -> C++: テスト3
C -> C : テスト4

@enduml

Discussion