【PlantUML】見た目系Tips覚書
今お世話になっている会社は、納品の関係でドキュメントはExcelで作ることが多いのですが、、、
図はなるべくPlantUMLに置き換えていこうと思って少しずつ使用範囲を広げています。
(pngで出力してExcelに張り付ける使い方が主ですが、、、
ただ、見た目等の本質的じゃないところで、少々指摘を貰ったりして、
ちょっとした小細工を使い回したりしているので、Tipsを覚書きしていきます。
色変更
デフォルトだと以下の色使いなのですが、会社指定のスライドマスタとか、
他の人が作った資料に一緒に載せると、統一感が無いことがあります。
色の変更は以下のページに説明があるように、skinparamを指定すれば変更できます。
指定できる項目は多岐にわたるのですが、ひとまずざっくり色を変更したければ、
以下5つを変更すればOKです。
- 矢印色(ArrowColor)
- フォント色(DefaultFontColor)
- ボーダー線色(XXXXXXXXBorderColor)
- 背景色(XXXXXXXXBackgroundColor)
- アクティビティ図や状態遷移図の開始終了色(XXXXStartColor、XXXXEndColor)
あと、個人の好みとして以下も状況に合わせて指定したりしています。
- dpi
- 影の有無(shadowing)
- フォント(DefaultFontName)
以下は変更例です。
いくつか色セットを作ってみたものは以下にコミットしています。
skinparamの設定をまとめてあるため、クローンしてincludeするか、
GitHub上のファイルをURL指定でincludeすることで設定が適用できます。
@startuml
!include https://raw.githubusercontent.com/Kazuhito00/PlantUML-ColorSet-Example/main/colorset/colorset00.txt
'!include colorset/colorset00.txt
start
if (AAAA?) then (yes)
:BBBB;
else (no)
:CCCC;
endif
stop
@enduml
画像挿入
資料を作っていると「イラストを付けて」みたいな依頼もちょいちょい受けます。
<img>タグを使用すると画像を挿入できます。
文字を挿入できる箇所には大体使える感じです。
(綺麗に画像が挿入されるかは別問題ですが、、、
以下みたいな感じで挿入できます。
@startuml
!include https://raw.githubusercontent.com/Kazuhito00/PlantUML-ColorSet-Example/main/colorset/colorset00.txt
start
if (AAAA?) then (yes)
:BBBB \n <img:image/icon50.jpg>;
else (no)
:CCCC \n <img:https://raw.githubusercontent.com/Kazuhito00/Kazuhito00/master/image/icon50.jpg>;
endif
stop
@enduml
以下は色々なところに挿入してみた例です。
AWSアイコン
以下のリポジトリを利用することでAWSの構成図を作成できます。
使い方はざっくり書くと以下のような感じです。
① URL を AWSPuml として定義
!define AWSPuml https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/v11.1/dist
② AWSCommonをインクルード
!include AWSPuml/AWSCommon.puml
③ 使用するコンポーネントをインクルード
!include AWSPuml/General/User.puml
!include AWSPuml/ApplicationIntegration/APIGateway.puml
!include AWSPuml/SecurityIdentityCompliance/Cognito.puml
!include AWSPuml/Compute/Lambda.puml
!include AWSPuml/Database/DynamoDB.puml
④ コンポーネントを定義
User(user, "APIコール", "User01")
APIGateway(api, "サンプルAPI", "API01")
Lambda(dbexe, "DB登録実行", "Lambda01")
DynamoDB(db, "サンプルDB", "Database01")
⑤ 関係性を定義
left to right direction
user --> api
api --> dbexe
dbexe --> db
以下のような表示になります。
また、AWSCommon.pumlと使用コンポーネントの間に「AWSSimplified.puml」を挿入するとアイコン表示がシンプルなものになります。
!include AWSPuml/AWSCommon.puml
!include AWSPuml/AWSSimplified.puml
!include AWSPuml/General/User.puml
plantuml-icon-font-sprites
一部の図(ユースケース図や配置図等)でしか使えませんが、plantuml-icon-font-spritesを用いることで色々なアイコンを使用できます。
アイコンのリストは以下にあります。
個人的にはDeviconsをよく使います。
こちらの使用方法もAWSアイコンと似たような感じです。
↓1つ目の例
@startuml
!include https://raw.githubusercontent.com/Kazuhito00/PlantUML-ColorSet-Example/main/colorset/colorset00.txt
!define ICONURL https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/v2.3.0
!include ICONURL/common.puml
!include ICONURL/devicons/android.puml
!include ICONURL/devicons/apple.puml
DEV_ANDROID(ICON01, "Text1")
DEV_APPLE(ICON02, "Text2")
ICON01 <-> ICON02
@enduml
↓2つ目の例
@startuml
!include https://raw.githubusercontent.com/Kazuhito00/PlantUML-ColorSet-Example/main/colorset/colorset00.txt
!define ICONURL https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/v2.3.0
!include ICONURL/common.puml
!include ICONURL/devicons/aptana.puml
DEV_APTANA(ICON01, "XXXX")
left to right direction
rectangle "GitHub" as GitHub {
usecase "Clone" as usecase01
usecase "Fork" as usecase02
}
ICON01 --> usecase01
ICON01 --> usecase02
@enduml
位置関係
PlantUMLは自動でレイアウトをしてくれるのが魅力ですが、
資料に添付する時は位置関係を制御したい時があります。
以下のような記載をすると上から下へ延びるように図が生成されます。
(AAAA) --> (BBBB)
(BBBB) --> (CCCC)
(AAAA) --> (CCCC)
(AAAA) --> (DDDD)
(BBBB) --> (DDDD)
(CCCC) --> (EEEE)
(DDDD) --> (FFFF)
(CCCC) --> (GGGG)
(DDDD) --> (HHHH)
パワポに貼るときは横長のほうが良いこともあるため、以下のような指定をすると
左から右に流れる図が生成されます。
left to right direction
(AAAA) --> (BBBB)
また、right/left/up/down(短縮形 r/l/u/d)を指定することで図の配置される位置を
ある程度制御可能です。
!include https://raw.githubusercontent.com/Kazuhito00/PlantUML-ColorSet-Example/main/colorset/colorset00.txt
(AAAA) -r-> (BBBB)
(BBBB) --> (CCCC)
(AAAA) --> (CCCC)
(AAAA) --> (DDDD)
(BBBB) --> (DDDD)
(CCCC) -l-> (EEEE)
(DDDD) -r-> (FFFF)
(CCCC) --> (GGGG)
(DDDD) --> (HHHH)
位置関係について調べていたら、以下の記事に大変詳細に記載されていました。
より詳しく知りたい方は、こちらを参照ください。
以上。
Discussion