PlantUML用のマクロ作りました
テキストからUMLを自動生成するPlantUMLというツールが有ります
テキストベースなので、既存コードを解析しながらシーケンス図を起こす時など、コピペで作れるのでとても便利なのですが (開発時の資料が殆ど残っていないファッキンな環境なのですよ)、 PlantUMLのシーケンス図は、ちょっと凝ったことをしようとすると、とても見通しが悪くなってしまい困りものです。
具体的には、LifeLineの活性/非活性をコマメに行おうとすると、「あれ、今何段目だったっけ」みたいなことが頻繁に起こります。
なので、見通しの良くなるような定義ファイルを作りました。
リポジトリ
使い方
上記リポジトリをcloneしてきて、
作成するUMLと同じフォルダ内に定義ファイルを置く
plantumlのinclude pathを通す
java -Dplantuml.include.path="path/to/repo" -jar plantuml.jar test.txt
どちらかの方法で導入し、
上記のように、プログラム言語っぽく記述すると、以下の様なシーケンス図が生成されます。
簡単な解説
するほどのものでもないですが。。。
利用しているのは、以下の2つのファイルです。2つ目はただのskin定義なので、直接は関係ありません。
- sequence_macro.h … マクロの定義
- sequence_skin.h … 見た目を変更するファイル
UMLファイルの行頭で、includeします。
!include "sequence_macro.h"
定義は現状、同期呼び出し用のものだけです。
func(送信元, 送信先, メッセージ)
送信元
から、送信先
にメッセージ
を送信し、一時的に送信先を活性状態にします。
func_begin(送信元, 送信先, メッセージ)
func_end(送信元, 送信先)
送信元
から、送信先
にメッセージ
を送信し、送信先を活性状態にします。
送信先が非活性状態になるまで、別途操作が必要な場合に利用します。
func_end()
で非活性状態になります。
local_func(オブジェクト, メッセージ)
自分自身にメッセージを送ります。
local_func_begin(送信元, 送信先, メッセージ)
local_func_end(送信元, 送信先)
自分自身にメッセージを送ります。非活性状態になるまで、別途操作が必要な場合に利用します。
終わりに
利用する事により、大分スッキリさせることが出来ました。 が、ヤリクチが微妙に頭悪い感じなんで、もっといい方法があれば誰か教えてください