PlantUML用のマクロ作りました

テキストからUMLを自動生成するPlantUMLというツールが有ります

テキストベースなので、既存コードを解析しながらシーケンス図を起こす時など、コピペで作れるのでとても便利なのですが (開発時の資料が殆ど残っていないファッキンな環境なのですよ)、 PlantUMLのシーケンス図は、ちょっと凝ったことをしようとすると、とても見通しが悪くなってしまい困りものです。

具体的には、LifeLineの活性/非活性をコマメに行おうとすると、「あれ、今何段目だったっけ」みたいなことが頻繁に起こります。

なので、見通しの良くなるような定義ファイルを作りました。

リポジトリ

使い方

上記リポジトリをcloneしてきて、

  • 作成するUMLと同じフォルダ内に定義ファイルを置く

  • plantumlのinclude pathを通す

java -Dplantuml.include.path="path/to/repo" -jar plantuml.jar test.txt

どちらかの方法で導入し、

上記のように、プログラム言語っぽく記述すると、以下の様なシーケンス図が生成されます。

f:id:cad-san:20140302154853p:plain

簡単な解説

するほどのものでもないですが。。。

利用しているのは、以下の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(送信元, 送信先)

自分自身にメッセージを送ります。非活性状態になるまで、別途操作が必要な場合に利用します。

終わりに

利用する事により、大分スッキリさせることが出来ました。 が、ヤリクチが微妙に頭悪い感じなんで、もっといい方法があれば誰か教えてください