PlantUMLを入れてみた

PlantUMLを使ってUMLを書いてみようと思い、まずはセットアップしたのでメモを残す。

PlantUMLとは?

PlantUMLはUMLダイアグラムを記述するためのオープンソースのツールで、他のツールとの違いはテキストファイルから図を生成するという点。
astah* UMLとか他のツールはマウスを使ってGUIで図を書くのと比べて、PlantUMLはテキストファイルに記述した定義に則って図を生成するというのが違い。
テキストファイルなのでバージョン管理もしやすいし、他のメンバーとのコラボレーションもしやすい。
反面、書き方を覚えないとならないので、イニシャルコストはかかる。

生成する図はPNG(ラスタ画像)やSVG(ベクタ画像)で生成できるので、用途に応じて使い分ける。

生成にはPlantUMLの他にGraphvizというものを使う。
PlantUMLはJavaで書かれているのでクロスプラットフォームだが、Graphvizはネイティブなので各プラットフォームに応じたバイナリを使用する。

PlantUMLのインストール

PlantUMLのダウンロードページからplantuml.jarをダウンロードして適当なフォルダに保存。

Graphvizのインストール

Graphvizのダウンロードページから適したバイナリをダウンロード。
今回はWindows版ZIPファイルをダウンロードして、releaseフォルダの中身をC:\Program Files\graphviz-2.38に展開した。
(C:\Program Files\graphviz-2.38\binに実行ファイルがあるようにした)

インストール後の動作確認

plantuml.jarが置いてあるフォルダでコマンドプロンプトを立ち上げて、以下を実行する。

java -jar plantuml.jar -testdot

PlantUMLとGraphvizがうまく動けば以下のようなメッセージが出るはず。

The environment variable GRAPHVIZ_DOT has not been set
Dot executable is c:\Program Files\graphviz-2.38\bin\dot.exe
Dot version: dot - graphviz version 2.38.0 (20140413.2041)
Installation seems OK. File generation OK

Graphvizの場所は探してくれるのね。
指定したい場合は環境変数GRAPHVIZ_DOTに設定すれば良いみたい。

PlantUMLの動作確認

plantuml.jarと同じところにsample.txtを作成。
内容は以下の通り。

@startuml
Class1 -> Class2 : 処理A
Class1 <-- Class2
@enduml

Class1から「処理A」というメッセージを送って、Class2から返ってくるという、簡単なシーケンス図。

plantuml.jarが置いてあるフォルダでコマンドプロンプトを立ち上げて、以下を実行する。

java -jar plantuml.jar sample.txt

すると下記のPNGファイル(sample.png)が生成される。
f:id:nave_kazu:20161125155400p:plain

既定値ではPNGが作成されるので、明示的にPNGを生成したい場合は下記で実行する。

java -jar plantuml.jar -tpng sample.txt

SVGで出力したい場合、-tsvgを指定する。

java -jar plantuml.jar -tsvg sample.txt

するとSVGファイル(sample.svg)が生成される。

PlantUMLの書き方

日本語リファレンスがあるので、これを参考に書いてみよう。