PlantUML を使ってみた


はじめに

PlantUML でシーケンス図を書く機会があったので、使い方を自分用にまとめておく。
たぶん追記していく感じになると思う。

インストール

公式ページ に書かれてあるが、あっけないほど簡単。
端的にいうと、Jar ファイルをダウンロードして、Java がインストールされている環境で動かしてね、という感じ。

Jar ファイルのダウンロードリンクは ↑ の遷移先にあるので割愛。
plantuml.jar というファイルがダウンロードできれば OK 。

Java インストール

手元では OpenJDK の Java 8 で動いた。
Windows 環境で動作させたが、Java が入っていれば OS は問わないのではないだろうか。
これだけのために Java を入れたくないって人は、Docker で Java のイメージを使えば良さそう。

OpenJDK のページ → http://jdk.java.net/
Docker Hub のページ → https://hub.docker.com/_/openjdk

コマンドラインからの Java 実行をしやすくするため、Path を通しておく。

Path=C:\java-1.8.0-openjdk-1.8.0.171-1.b10.redhat.windows.x86_64\bin

みたいな。

使い方

ダウンロードした plantuml.jar と、後述するソースファイルを同一ディレクトリに置き、かつそのディレクトリにいる状態で、以下のコマンドを実行する。

java -jar plantuml.jar sample.txt -charset UTF-8

-charset UTF-8 を付けないと、ソースファイルに日本語が含まれていると文字化けする。
ソースファイルは UTF-8 で保存する。
改行コードは CRLF でも大丈夫だった。

このコマンドを実行すると、ソースファイルと同じ名前の png ファイルが同一ディレクトリに出力されているはず。

ソースファイルの書き方

シーケンス図

@startuml で始まり、@enduml で終わる。

@startuml

@enduml

登場人物を ->(矢印)でつなぐ。
:(コロン)区切りでコメントを書ける。

@startuml
User -> Server : リクエスト
@enduml

逆向きの場合はこうする。

@startuml
User -> Server : リクエスト
User <- Server : レスポンス
@enduml

左右を同じ名前にすると、その中での処理のような表現になる。

@startuml
User -> Server : リクエスト
Server -> Server : 計算処理
User <- Server : レスポンス
@enduml

登場人物のアイコンと名前を定義できる。
定義した名前が、シーケンス部分の記述の名前に紐付く。
空行が入るのは問題なさそう。

@startuml
actor User
participant Server
database Store

User -> Server : リクエスト
Server -> Store : データ取得
Server <- Store : データ返却
Server -> Server : 計算処理
User <- Server : レスポンス
@enduml

名前の定義にスペースを入れたい場合は "(ダブルクォーテーション)で囲い、as 句でシーケンス用のエイリアスを書く。

@startuml
actor User
participant Server
participant "Other Service" as OtherService
database Store

User -> Server : リクエスト
Server -> Store : データ取得
Server <- Store : データ返却
Server -> Server : 計算処理
Server -> OtherService : 通知
User <- Server : レスポンス
@enduml

出力するとこんな感じ。

とりあえずここまで。