今でもクラス図やパッケージ図などはAstahなどを利用することが多いですが、シーケンス図に関して言えば圧倒的にPlantUMLが便利だと感じています。シーケンス図は、レイアウトに関しては機械的なレイアウトが有効的なことが多いので、こっちの方が便利ですね。
シンタクスハイライトだけならやることは簡単、vimにaklt/plantuml-syntaxを導入するだけです。
NeoBundleを利用しているのであれば、
" pluntumlのシンタクスハイライトと:makeコマンド
NeoBundle "aklt/plantuml-syntax"
を書いて:NeoBundleInstall
でとりあえず、 *.pu か *.uml か *.plantuml でシンタクスハイライトが効くようになります。
あとは:make
で画像の出力と表示をするようにしましょう。
まず、$HOME/local/lib/
にplantuml.jar
を置いておき、
#!/bin/bash
java -jar $HOME/local/lib/plantuml.jar -tpng $@
open ${@%%.*}.png
上記のシェルスクリプトを$HOME/dotfile/plantuml
というファイル名でに実行権限を付けおいておきましょう。そして、.vimrc
に
" plantumlスクリプトの設定letg:plantuml_executable_script="~/dotfiles/plantuml"
以上を記述しておけば:make
を実行することで、画像を出力し、.pngファイルの拡張子が関連付けられたビュアーで自動的にその画像を開いてくれるようになります。
以上のような感じでビュアーで開かれます。とても便利です。
なお、他の開発環境に関しては、こちらにもまとまっていますが、ちょっとしたものを書くときにはvimが大変便利です。
追伸
以上の例のために書いたシーケンス図を張っておきます。あと、この設定がされたdotfilesはこちらに上がっています。
@startuml
title 家計簿アプリの家計簿取得シーケンス
participant "ユーザー"
box "家計簿システム" #LightBlue
participant "Play"
participant "Redis"
participant "MySQL"
end box
"ユーザー" -> "Play" : 家計簿を取得
"Play" -> "Redis" : ユーザーID、今月という時間をキーに取得
alt キャッシュヒット
"Play" <-- "Redis" : 家計簿情報または家計簿がないという情報
else キャッシュミス
"Play" <-- "Redis" : キャッシュされていないという情報
"Play" -> "MySQL" : 家計簿取得
"Play" <-- "MySQL"
alt 家計簿情報あり
"Play" ->> "Redis" : 非同期に\n家計簿情報を格納
else 家計簿情報なし
"Play" ->> "Redis" : 非同期に\n家計簿がないという情報を格納
end
end
"ユーザー" <-- "Play" : 家計簿情報または家計簿がないという情報
@enduml