大化通信

大化物流開発合同会社の社員から技術発信をしていきます

Visual Studio Code でUML図を描く方法

始めに

3か月ぶりの登場です。迷走星人です。 今回は「Visual Studio Code(以後VSCode)」でUML図を作成する方法について紹介します。

環境構築

1.インストーラの入手

以下のインストーラを入手してきます。

2.拡張機能のインストール

VSCodeがインストール出来たら、UML図を描画するために、以下の拡張機能をインストールします。

  • Japanese Language Pack for Visual Studio Code
    • 日本語言語パック(インストール直後は英語)
  • PlantUML
    • VSCodeUML図を描画するための本体

上記の拡張機能は以下の手順でインストール

  1. VSCodeの画面の左下にある歯車のアイコンをクリック
  2. 拡張機能」の項目を選択
  3. 手順2.実施後、画面にその時点でインストールされている拡張機能の一覧が表示されるので、
    冒頭にある検索テキストボックスにインストールしたい拡張機能を入力
  4. 手順3.で拡張機能を見つけたら、「インストール」をクリック

詳細は以下のサイトを参照してください。

PlantUMLでの図の書き方

拡張機能のインストールまで完了したら、いよいよPlantUMLでUML図を描画してみます。 まずは基本の描き方です。 VSCodeUMLソースコードファイル(ここでは拡張子は「.pu」とします)を開き、ファイルの冒頭と末尾に以下の記述をします。

@startuml
@enduml

この2つの行の間に描きたいUML図のソースコードを書いていきます。 例えば、アクティビティ図やシーケンス図を描く時は以下の様に記述します。

@startuml

title アクティビティ図サンプル

start

:処理1;

:処理2;

if (分岐) then (分岐の結果(真))
    :処理3;
else (分岐の結果(偽))
    :処理4;
endif

while (ループ)
    :処理5;

    if (終了判定) then (真)
        break
    endif

    :処理6;
endwhile

if (分岐) then (真)
    stop
endif

switch (分岐2)
    case (ケース1)
        :処理7;
    case (ケース2)
        :処理8;
    case (ケース3)
        :処理9;
    case (ケース4)
        :処理10;
    case (ケース5)
        :処理11;
endswitch

end

@enduml

アクティビティ図サンプル処理1処理2分岐分岐の結果(真)分岐の結果(偽)処理3処理4処理5終了判定処理6ループ分岐分岐2処理7処理8処理9処理10処理11ケース1ケース5ケース2ケース3ケース4

@startuml

title シーケンス図サンプル

box ユーザー : #HotPink
    participant ユーザ1 as User1
    participant 管理人1 as Admin1
end box

box 画面 : #Brown
    participant 画面1 as Form1
    participant 画面2 as Form2
end box

box クラス : #LightGreen
    participant クラス1 as Class1
    participant クラス2 as Class2
end box 

box データベース #0000CC
    database DB1 as DB1
end box

activate User1
activate Admin1

alt ユーザ1
    User1 -> Form1 : 開く
    activate Form1
    User1 -> Form1 : ボタン押下
    Form1 -> Class1 : インスタンス生成
    activate Class1
    group 内部処理
        Class1 -> DB1 : 取得
        activate DB1
        DB1 -> Class1 : 取得結果
        deactivate DB1

        Class1 -> Class1 : 内部処理
    end
    Class1 --> Form1
    deactivate Class1
    Form1 --> User1
    deactivate Form2
else 管理人
    Admin1 -> Form2 : 開く
    activate Form2
    opt 新規登録者有
        Admin1 -> Form2 : 登録
        Form2 -> Class2 : インスタンス生成
        activate Class2
        loop 登録者リストループ
            Class2 -> DB1 : 登録
            activate DB1
            DB1 -> Class2 : 登録結果
            deactivate DB1
        end
        Class2 -> Form2 : 実行結果
        deactivate Class2
    end
    Form2 --> Admin1
    deactivate Form2
end

deactivate Admin1
deactivate User1


@enduml

シーケンス図サンプルユーザー :画面 :クラス :データベースユーザ1ユーザ1管理人1管理人1画面1画面1画面2画面2クラス1クラス1クラス2クラス2DB1DB1alt[ユーザ1]開くボタン押下インスタンス生成内部処理取得取得結果内部処理[管理人]開くopt[新規登録者有]登録インスタンス生成loop[登録者リストループ]登録登録結果実行結果

PlantUMLは他にもマインドマップJSONの構成図を描くことが出来ます。 それぞれの図の描き方は以下の通りです。

@startmindmap
title マインドマップ図サンプル
+ NodeRoot
++ NodeSub01-01
+++ NodeSub02-01
++ NodeSub01-02
-- NodeSub01-03
--- NodeSub02-02
-- NodeSub01-04
@endmindmap

マインドマップ図サンプルNodeRootNodeSub01-01NodeSub02-01NodeSub01-02NodeSub01-03NodeSub01-04NodeSub02-02

@startjson

{
    "key01": "val01",
    "key02": {
        "subKey01" : "subVal01",
        "subKey02" : "subVal02"
    },
    "Key03" : [],
    "Key04" : [
        "elem1",
        "elem2", 
        "・・・", 
        "elemN"
    ]
}

@endjson

key01val01key02   Key03   Key04   subKey01subVal01subKey02subVal02elem1elem2・・・elemN

PlantUMLでの図の描き方については、日本語のオンラインマニュアルも公開されているので、そちらも参照してください。

Markdown Preview Enhancedの導入

Markdown Preview Enhanced」の拡張機能をインストールすると、Markdown形式のファイルの中にPlantUMLの図を描くことが出来ます。詳細は以下のサイトを参考にしてください。

ただし、上記のマインドマップ図やJSON図を描く時は少し注意が必要です。 これらの図を描く時は、 「@startuml」「@enduml」だけでなく、更にその間に「@startmindmap」「@endmindmap」または、「@startjson」「@endjson」の挿入が必要になります。後は、同じ描き方です。