シーケンス図専用ドローツール紹介

以前の記事でUMLが描けるドローツールを紹介しましたが、シーケンス図については、登場するオブジェクトの追加や順序変更、インタラクション(矢印)の挿入がしばしば発生し、マウスによる操作だと不便です。
そこで今回は、擬似プログラムでシーケンス図を描画するツールを紹介します。

Web Sequence Diagrams

http://www.websequencediagrams.com/
ブラウザ上で利用するSaaS型アプリです。
こんなシーケンス図が描けます(Facebookアカウントでログインできるようになっている、あるiOSアプリを試しながら、処理の流れを想像して描いたもの)。

この図のソースは、下記の擬似プログラムです。この図は英語で描いていますが、日本語も問題なく使えます。

title Authentication Sequence

user->iOS app: push sign-in button
iOS app->library: request sign-in dialog
library->user: show dialog
user->library: choose provider
library->browser: redirect to provider
user->browser: input credential
browser->library: return info(auth_info, unique id)
library->iOS app: send profile data
opt text
    library->server: post auth_info
end

この擬似プログラムをぱっと見るとややこしそうに見えるかもしれませんが、少しずつ書いて、後から随時修正すればいいので、非常に簡単でした。擬似プログラムを編集すると、リアルタイムに図に反映されます。行をまたがる一貫性チェックなどはないので、厳密さをいっさい気にせずに書けます。
SaaS型アプリなのですが、1枚の図を作成するだけなら、ユーザ登録しなくても使えます。サイトに行くとサンプルの図と擬似プログラムが表示されているので、いきなり編集して試すことができます。
ユーザ登録すると、まず無料プランで登録されます。PDFやSVGへのエクスポートなどが必要な場合は、月9ドルのプレミアムプランが必要になります。プランによる機能比較は下記URLにあります。
http://www.websequencediagrams.com/buy.html#subscription

PlantUML

前述のWeb Sequence Diagramsはとても便利なのですが、SaaS型なので、受託業務で使っていいものかどうか、図はいつまで保存されるのかなど、ちょっと気になりました。Web Sequence Diagramは企業向けにインストール型でも販売されているのですが、最低299ドルで、ちょっと敷居が高く感じます。
そこで、同様の擬似プログラムを入力して、ローカル環境で図を生成できるプログラムを探したところ、PlantUMLというものが見つかりました。
http://plantuml.sourceforge.net/index.html
PlantUMLは、シーケンス図だけでなく、ユースケース図・クラス図などの各種UML図を、テキストで記述して、PNG,SVG,アスキーアートで出力することができます(シーケンス図以外を使う場合は、Graphvizを別途インストールしておく必要あり)。シーケンス図の擬似言語はWeb Sequence Diagramsと互換性があります。
記事公開時点(2013/5/18)では、実際に動かしていなかったのですが、その後試す機会があったので、以下まとめておきます。

使い方

まず、公式サイトの"Download"コーナーにある、plantuml.jarをダウンロードします。Javaの実行ができる環境があれば、ダウンロードしたplantuml.jarをダブルクリックするとGUIが起動します。ただ、このGUIは「指定されたディレクトリをポーリングして、更新されたテキストファイルがあったら、PNG形式に変換する」というもので、正直なところ使い勝手は良くありません。
コマンドラインで、以下のように使うことをおすすめします(Eclipseプラグインは動画を見る限りでは便利そうですが、自分はEclipseを使わないので試していません)。

$ java -jar plantuml.jar -help
  (コマンドラインオプションが表示される)
$ java -jar plantuml.jar sample.txt
  (sample.txtというファイルに記述された擬似プログラムをPNGに変換する)

sample.txtの内容は以下の通りです。

@startuml
Alice -> Bob: test
@enduml

次に、Web Sequence Diagramのサンプルとして冒頭に挙げたプログラムの先頭と末尾に@startuml,@endumlを追加したものsample2.txtとして保存しておき、同様にしてPlantUMLに入力してみたところ、下記のようにSyntax Errorが出てしまいました。

$ java -jar plantuml.jar sample2.txt
... (skipping 1 line) ...
title Authentication Sequence

user->iOS app: push sign-in button
iOS app->library: request sign-in dialog
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 Syntax Error?

公式サイトのDownloadコーナーに擬似プログラムの言語仕様があるので見てみると、アクターの名前に非アルファベット文字を使う場合(ここでは空白)、ダブルクォートで囲う必要があるようなので、修正して再度実行した結果、下記の画像がちゃんと生成できました。

感想

PlantUMLは単体のソフトというより「テキストファイルを、画像に変換するフィルタ」といった印象を受けます。公式サイトの"Running"というコーナーに、Eclipseなどの各種テキストエディタから使う方法や、さらに各種Wikiにインライン画像として埋め込む方法など、色々な使い方が載っているので、自分に合ったものを探すのが良さそうです。

その他のツール

他に、擬似プログラムからシーケンス図を生成するツールとして、以下のものがあるようです(2013/6/6現在まだ試していません)。

  • seqdiag
    Pythonで書かれた、類似のプログラム。PNG,SVGを生成可能。
  • pgf-umlsd
    シーケンス図用のLaTeXマクロ。