LoginSignup
5
7

More than 1 year has passed since last update.

PlantUMLで入れ子になった図を作成する

Last updated at Posted at 2023-01-04

概要

PlantUMLで入れ子になった図、ネストした図を作成する方法を探してもなかなか見つからなかったので、備忘録として書き残しておきます。

動作を確認した環境

  • Visual Studio CodeのPlantUMLの拡張機能(jebbs.plantuml, v2.17.5)

入れ子になった図を作成する方法

単純な例

入れ子にしたい部分を{{ ... }}で括るだけです。
{{}}の前後には改行を入れる必要があります。
具体的には以下のようにします。

@startuml nested-diagram-example
:開始;
:処理
{{
    :処理1;
    :処理2;
}}
;
:終了;
@enduml

上記のコードから、以下のような図が生成されます。

このように入れ子になった図を作成することができます。

入れ子部分の背景を透過させる例

入れ子の内側は別の図として扱われるせいか、先程の例では入れ子部分の図の背景が白くなっていました。
入れ子部分の図の背景を透過させたい場合は、入れ子の内側にskinparam backgroundcolor transparentの設定を追加します。
具体的には以下のようにします。

@startuml nested-diagram-example
:開始;
:処理
{{
    skinparam backgroundcolor transparent
    :処理1;
    :処理2;
}}
;
:終了;
@enduml

上記のコードから、以下のような図が生成されます。

このように入れ子の内側と外側で背景色を合わせた方が自然な見た目になります。

その他の例

入れ子の内側は別の図として扱われるため、別の種類の図を組み合わせて使用することもできます。
以下の例では、アクテビティ図のノードの中に、シーケンス図を埋め込んでいます。

@startuml nested-diagram-example
:開始;
:
{{
    skinparam backgroundcolor transparent
    Alice -> Bob: Send request
}}
;
:終了;
@enduml

上記のコードから、以下のような図が生成されます。

補足(Visual Studio Codeでの図の文字化けについて)

Visual Studio Codeのプレビュー機能を使用すると、入れ子の内側に書かれた日本語などのテキストが以下のように文字化けしてしまう場合があります。

この文字化けを回避するには、Visual Studio Codeのsettings.jsonで以下のようにエンコーディングを指定する必要があります。

{
  "plantuml.commandArgs": ["-Dfile.encoding=UTF-8"]
}
5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7