スプライトの定義と使用

スプライトとは、図の中で使用できる小さい画像のことです。

PlantUMLでは、モノクロで4、8、16段階のグレースケールが使えます。

スプライトの定義は、ピクセルごとに0~Fの16進数を使用します。

その後、<$XXX>の形式でスプライトが使用できます。XXXはスプライトの名前が入ります。 where XXX is the name of the sprite.

🎉 Copied!
@startuml
sprite $foo1 {
  FFFFFFFFFFFFFFF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  FFFFFFFFFFFFFFF
}
Alice -> Bob : Testing <$foo1>
@enduml

スプライトの倍率を変えることができます。

🎉 Copied!
@startuml
sprite $foo1 {
  FFFFFFFFFFFFFFF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  FFFFFFFFFFFFFFF
}
Alice -> Bob : Testing <$foo1{scale=3}>
@enduml

色の変更

スプライトはモノクロですが、色を変更することが可能です。

🎉 Copied!
@startuml
sprite $foo1 {
  FFFFFFFFFFFFFFF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  F0123456789ABCF
  FFFFFFFFFFFFFFF
}
Alice -> Bob : Testing <$foo1,scale=3.4,color=orange>
@enduml

スプライトへの変換

次のコマンドで、スプライトをエンコードできます:

java -jar plantuml.jar -encodesprite 16z foo.png

foo.pngは使用したい画像です(自動的にグレースケールに変換されます)

-encodespriteに続けて、形式を指定します。 4、8、16、4z、8z、16zが使用可能です。

数値はグレースケールの段階数を表します。zを付けるとスプライトの定義を圧縮することができます。

スプライトをインポートする

GUIを起動して、既存の画像からスプライトを生成することもできます。

メニューバーのFile/Open Sprite Windowをクリックします。

クリップボードに画像をコピーすると、それに対応したスプライトの定義がいくつか表示されます。その中から必要なものを選択してください。

🎉 Copied!
@startuml
sprite $printer [15x15/8z] NOtH3W0W208HxFz_kMAhj7lHWpa1XC716sz0Pq4MVPEWfBHIuxP3L6kbTcizR8tAhzaqFvXwvFfPEqm0
start
:click on <$printer> to print the page;
@enduml

🎉 Copied!
@startuml
 sprite $bug [15x15/16z] PKzR2i0m2BFMi15p__FEjQEqB1z27aeqCqixa8S4OT7C53cKpsHpaYPDJY_12MHM-BLRyywPhrrlw3qumqNThmXgd1TOterAZmOW8sgiJafogofWRwtV3nCF
 sprite $printer [15x15/8z] NOtH3W0W208HxFz_kMAhj7lHWpa1XC716sz0Pq4MVPEWfBHIuxP3L6kbTcizR8tAhzaqFvXwvFfPEqm0
 sprite $disk {
   444445566677881
   436000000009991
   43600000000ACA1
   53700000001A7A1
   53700000012B8A1
   53800000123B8A1
   63800001233C9A1
   634999AABBC99B1
   744566778899AB1
   7456AAAAA99AAB1
   8566AFC228AABB1
   8567AC8118BBBB1
   867BD4433BBBBB1
   39AAAAABBBBBBC1
}

 title Use of sprites (<$printer>, <$bug>...)

 class Example {
 Can have some bug : <$bug>
 Click on <$disk> to save
 }

 note left : The printer <$printer> is available

@enduml

StdLib

PlantUML StdLibには、アーキテクチャ、クラウドサービス、ロゴなどの様々なIT関連のアイコンが含まれています。そこにはAWS、Azure、Kubernetes、C4、プロダクトロゴなどが含まれます。これらのライブラリを検索するには:

スプライトを一覧表示する

listspritesコマンドを使って、スプライトの一覧を表示できます:
  • これ単体で使用すると、ArchiMateスプライトの一覧を表示します。
  • 図中に何らかのスプライトライブラリをインクルードしている場合、このコマンドはそれらのスプライトの一覧を表示します。View all the icons with listspritesに説明があります。

(Hitchhikers Guide to PlantUMLからの例)

🎉 Copied!
@startuml

!define osaPuml https://raw.githubusercontent.com/Crashedmind/PlantUML-opensecurityarchitecture2-icons/master
!include osaPuml/Common.puml
!include osaPuml/User/all.puml

listsprites
@enduml

多くのコレクションはallというファイルを含んでいて、コレクション全体を一度に見ることができます。 もしくは、必要なスプライトを一つずつ探してインクルードします。 残念ながら、StdLibに含まれるコレクションのバージョンにはallファイルが含まれていないものも多いので、上で見たようにStdLibからではなく、githubからインクルードしています。

スプライトはすべてグレースケールですが、ほとんどのコレクションには適切な色を含んだマクロが定義されています。