ミニマルでカスタマイズ可能な PlantUML テーマを作った

はじめに

PlantUML はシンプルなテキストから UML を生成できるツールです。 私はソフトウェアのモデリングのために UML を使う機会はあまりないですが、何らかのアーキテクチャやモデルを図示するには PlantUML は便利です。

PlantUML の公式テーマ群も悪くないのですが、デフォルトはモノクロにして強調したいところだけ色を使うというやり方が個人的には好みです。 そこで、そのような使い方が簡単にできるようなテーマ Minimal を作成しました。 元々自分用に作りましたが、せっかくなので公開することにしました。

使い方

PlantUML コードに以下の行を追加するとテーマが適用されます。 詳しい使い方は GitHub をご参照ください。

!include https://github.com/knukio/puml-theme-minimal/raw/main/puml-theme-minimal.puml

デフォルトではモノクロのシンプルなテーマです。

$dark() という関数呼び出しを 1 行追加するとダークテーマになります。

さらに、用意してある関数や変数を使ってスキンを簡単にカスタマイズできます。

詳細は割愛しますが、$dark() の呼び出しは以下の命令と等しくなっています。

$set_global_skin($GRAY2, $GRAY, $GRAY)
$set_skins($GRAY2, $GRAY, $GRAY, $GRAY2, $GRAY)

ここでは、プリセットされた色の変数 $GRAY, $GRAY2 とスキン変更用の関数を用いています。 このように、少しの命令でテーマ全体を変えることも可能です。 他にもいくつか関数を定義しているので、その使用例を紹介します。

PlantUML コード

(PlantUML のシンタックスハイライトが無かったので Rust で代用)

@startuml
!include https://github.com/knukio/puml-theme-minimal/raw/main/puml-theme-minimal.puml

' // 全体は赤を基調にする
$set_global_skin($RED, $RED2, $RED2)
' // PlantUMLのコンポーネント群(actor, database, etc.)は青にする
$set_skins($BLUE, $BLUE2, $BLUE2)
' // nodeだけは紫にする
skinparam node {
  $set_skin($PURPLE, $PURPLE2, $PURPLE2)
}

title My theme

node "My Node" {
  ' // 矢印はグレーにして、メッセージは緑にする
  [First Component] -[$GRAY2]-> IF : $color(some message, $GREEN2)
  ' // "Component" という文字列だけ黄色にする(プリセット変数に無い色はカラーコードで表現)
  IF - [Second $color(Component, #aaaa00)]
}
' // このコンポーネントの背景は緑にする
[Another Component] $GREEN3

@enduml

出力

おわりに

Minimal テーマを使うことで、少ない労力で自分好みの図を書くことができるようになりました。

もし良ければ、皆様も使ってみてください。