前回の記事で、Atomのplantuml-viewerを導入する方法を書きました。
しかしこの手順だと、最新のplantuml.jarではなく、少し古いバージョンがインストールされるため、以下のページにあるようなアクティビティ図のbreak文などPlantUMLの新しい記法が書けません。
今回はplantuml-viewerで新しい記法が使えるように、最新のplantuml.jarをインストールします。
私の環境は以下の通りです。
環境 | バージョン |
---|---|
MacOS | 10.13.2 |
Atom | 1.23.2 |
plantuml-viewer | 0.7.2 |
目次
PlantUMLのバージョンを確認する
PlantUMLの最新バージョン
PlantUMLのリリースノートによると、現時点の最新バージョンは「V1.2018.0 (4 Jan, 2018)」です。
「plantuml-viewer」で使われているPlantUMLのバージョン
plantuml-viewerのコードを見ると、内部ではnode-plantumlが使われていました。そして、node-plantumlのplantuml.jarのコミットログから、リリースノートに記載されている「V8047 (28 Sep, 2016)」が使用されていることが分かります。
最新のPlantUMLをplantuml-viewerにインストールする
方法は2つあります。どちらか一方だけでOKです。
- plantuml-viewerが参照している既存のplantuml.jarを最新版に差し替える。
PLANTUML_HOME
という環境変数に最新のplantuml.jarへのパスを設定する。
おそらく作者は2の方法を想定していると思いますが、1の方法の方が直感的で、普段のAtomの起動方法を変えなくて良いので、私はこちらを採用しています。
[方法1] 既存のplantuml.jarを最新版に差し替える
curlで最新のplantuml.jarをダウンロードして、plantuml-viewerが参照しているディレクトリに配置します。
以下を実行したら、あとはいつも通りにAtomをDockなどから起動するだけです。
## plantuml.jarのバックアップを念のため取っておく
$ cd ~/.atom/packages/plantuml-viewer/node_modules/node-plantuml/vendor/
$ cp -p plantuml.jar plantuml.jar_org
## 最新のplantuml.jarをダウンロードする
$ curl -L http://sourceforge.net/projects/plantuml/files/plantuml.jar/download -o ./plantuml.jar
$ ls -l
-rw-r--r-- 1 stedplay staff 7497782 1 9 04:15 plantuml.jar
-rw-r--r-- 1 stedplay staff 5457970 1 7 06:35 plantuml.jar_org
$
## 新旧のplantuml.jarのバージョンを確認する
$ java -jar plantuml.jar -version
PlantUML version 1.2018.00 (Fri Jan 05 04:42:56 JST 2018)
...省略...
$ java -jar plantuml.jar_org -version
PlantUML version 8047 (Fri Aug 26 00:59:30 JST 2016)
...省略...
$
[方法2] PLANTUML_HOME
に最新のplantuml.jarへのパスを設定する
PLANTUML_HOME
という環境変数については作者がこのIssueで軽く言及されていて、これを利用してplantuml.jarを切り替えられるようになっているようです。
ターミナルからAtomを起動したい方は、こちらの方法でも良いかもしれません。
コマンドでAtomを起動できるようにする
まず、メニューバーの[Atom] > [Install Shell Commands]を選択します。
こうすることによってターミナルでatom
と実行すると、Atomが起動するようになります。
コマンドでAtomを起動する
そして以下を実行すると、最新のplantuml.jarが読み込まれている状態でAtomが起動します。
## 最新のplantuml.jarをダウンロードする
$ curl -L http://sourceforge.net/projects/plantuml/files/plantuml.jar/download -o /usr/local/bin/plantuml.jar
## 環境変数を設定して、Atomを起動する
$ PLANTUML_HOME=/usr/local/bin/plantuml.jar atom
もしくは以下のように、Atom起動前に~/.bash_profile
に環境変数を登録しておく方法もあります。
$ echo 'export PLANTUML_HOME=/usr/local/bin/plantuml.jar' >> ~/.bash_profile
$ source ~/.bash_profile
$ atom
メニューバーの[Atom] > [Init Script]から開けるinit.coffeeに
process.env.PLANTUML_HOME = '/usr/local/bin/plantuml.jar'
と追記すれば、Atom起動時に環境変数に代入されるかなと思ったのですが、これがロードされる前にplantuml.jarがロードされていて、効果がありませんでした。できればこの方法がベストだったのですが、残念。
break文を使ってアクティビティ図を表示してみる
サンプルコード
例えば、ファイル操作でありがちな以下のフローを表現したいとします。
- ファイルを開く。
- ファイルの中身を読む。
- EOF(end of file)まで読んだら、5に飛ぶ。(ループを抜ける)
- 「何か」をして、2に戻る。
- ファイルを閉じる。
これをPlantUMLで書くと以下のようになります。ループの条件は無限ループするように表現しています。
@startuml
start
:open file;
repeat
:read file;
if (end of file) then (true)
break
else
endif
:do something;
repeat while (true) is (true)
:close file;
stop
@enduml
最新バージョンで表示すると
end of file
がtrue
の場合に、break
でループを抜ける表現ができました。
古いバージョンで表示すると
ちなみに古いバージョンだと、break文が認識できなくてSyntax Errorとしてエラー表示されます。
まとめ
Atomのplantuml-viewerに最新のPlantUMLをインストールして、新しい記法であるbreak文を使うまでの手順をまとめました。
plantuml-viewerのplantuml.jarのアップデートを待つことなく、自由に新しい記法が使えるようになりました。これでUMLの表現の幅が広がり、設計も捗ります。
今回はPlantUMLをインストールする方法を試行錯誤して調べた結果を並べてみたので、記事が冗長になってしまいましたが、その過程で学ぶことも多かったので良しとします。