Ponz Dev Log

ゆるくてマイペースな開発日記

PlantUMLのテーマでスタイルを適用する

仕事で設計内容を整理したり、個人開発でも頭の中身を整理するためにPlantUMLを使っています。 3年近く使っていて先日初めて知ったのですが、PlantUMLには "Theme" (以下、テーマ) というパッケージ化されたスタイルを適用する仕組みがあるようです。

Futureさんの技術ブログから知りました。 future-architect.github.io

plantuml.com

デフォルトのスタイルはシンプルで良いのですが、自分でスタイルを適用すると統一感がなく途端にダサくなりがちです。 テーマは統一されたスタイルを適用できて見やすそうということで試してみることにしました。

環境情報

今回試すPlantUMLのプレビューはVisual Studio Codeのextensionで描画します。

やり方

PlantUMLのファイル内に !theme ディレクティブと一緒に適用するテーマ名を指定するだけです。

@startuml

!theme <テーマ名>

(...中略...)

@enduml

テーマ一覧はサンプルと一緒に以下のサイトに記載されています。 Futureさんが作成された、 toyvibrantmars も使えるようです。Material Designっぽくするなら materia も良さそうです。

the-lum.github.io

題材

この記事では、「Web画面から何かしらの申請を起票し、申請内容が妥当なら承認する非同期ジョブ(Kubernetes Job)を実行する」というユースケースでPlantUMLの図表を記述します。 扱うのは簡単のためにシーケンス図のみとします。

描画するファイル内容は以下のような30行程度のシーケンス図です。

@startuml

title 承認申請ジョブ実行要求シーケンス

actor "SPA" as ui
participant "API" as api
database "申請テーブル" as db
queue "申請ジョブキュー" as job_queue
participant "ジョブスケジューラー" as scheduler
actor "Kubernetes API Server" as k8s_api

ui -> api : 承認申請
api -> api : 申請内容チェック
api -> db : save()
db --> api
api -> job_queue : send()
note right : ジョブは非同期で実行
job_queue --> api
api --> ui

scheduler -> job_queue : poll()
job_queue --> scheduler : (承認申請)
scheduler -> scheduler : JobSpec組み立て
scheduler -> k8s_api : createJob()
note right : Kubernetes Jobは非同期で実行
k8s_api --> scheduler
scheduler -> job_queue : ack()
job_queue --> scheduler

@enduml

テーマ未適用 (初期状態)

上記のファイルをテーマなしで描画すると、よくみる黄色と赤線の図が表示されます。

f:id:accelerk:20220228150152p:plain
PlantUML テーマなし

テーマ:vibrant の場合

続いて vibrant テーマを適用した場合です。カラフルなので色でオブジェクトを見分けやすくなりました。 個人的にはこれが一番気に入っています。

f:id:accelerk:20220228150219p:plain
PlantUML テーマ:vibrant

テーマ:mars の場合

次は mars テーマを適用した場合。vibrantよりも彩度低めですが、それが落ち着いた印象になりました。

f:id:accelerk:20220228150413p:plain
PlantUML テーマ:mars

テーマ:materia の場合

最後に materia テーマを適用した場合です。オブジェクトがMaterial Designっぽい感じになりました。 ただオブジェクトが浮いている感じとカラーリングのせいか少し見ずらいかも。

f:id:accelerk:20220228150548p:plain
PlantUML テーマ:materia


テーマを使うことで設計書が見やすい、読む気になるものになりそうですね。

以上。