フリーのUMLツールを使ってみる

少し前からUMLを復習していて、UMLを書くためのフリーソフトを探している。
UMLの要素は、丸や四角のような基本図形の組み合わせで書けるので、専門のソフトでなくてもUMLは書ける。むしろ、Visioのような作図ツールや、簡単な図形描画ができるWordやPowerPointで書かれる場合も少なくない。筆者も10年近く前、会社でUMLを書く必要があった時、好んでVisioで書いていた。周囲でもVisioが多数派だったと思う。その後、部署の方針で少数派のRhapsodyだったかRational Roseだったかを使うことになったが、短期間だったし、使いこなせなかったので、全く覚えていない。だから、Visioが手元に無い今、それに近いDiaでUMLを書くのは悪くない選択肢だと思っている。

しかし、ここはやはり、UMLそのものの復習をするなら、UMLの要素を図形でなくUMLの要素として扱う、専門のツールを使ってみたい。四角は四角でなく、クラスかインターフェースかオブジェクトかを区別して管理してほしいのである。それに、専門のツールであれば、UMLとして誤った書き方を避けられる可能性も高い。

商用のソフトなら、Rational製品かEnterprise Architectが有名どころであるが、そんな高いものを買う気はさらさらない。Visual Paradigmというのもすごそうだが、やはり高価なのでパスである。今は無償のソフトでいいのがあれば使いたいという程度である。

今回は次のような条件で探してみた。
・フリーソフト
・UMLの要素をUMLとして管理できること
・UML以外の書き方を許さないこと
・なるべくUML 2.0対応
・WindowsでもMacでも使用可能(最近主にMacBookを使っているため)

触ってみたソフトと、使ってみた感想をまとめる。
1. ArgoUML
最初に興味をそそられたのがArgoUMLであった。正統派というか、見た目より内容重視というか、UMLツールの理想形を目指している、思想的に最も優れたソフトのように思えるのである。
ファイルフォーマットは多分に漏れずXMLベースであるが、当然だと言わんばかりに自動的に圧縮されるのもポイントが高い。
【利点】
・UMLのポリシーに忠実に作られている
・作成した図に対して、UMLとして不適切な箇所を指摘してくれる
・Javaで実装されており、クロスプラットフォームである
・複数言語のソースコードの出力が可能
【欠点】
・UML 2.0に対応していない(UML 1.4のみ)
・全体的にUIに癖があり、最初はコツを掴まないと全然思い通りにならない
・GUIは貧弱で、お世辞にも使いやすいとは言えない
・正しく使わないとおかしな状態になりやすく、しかも落ちずにいつの間にか回復不可能な状態に陥ることも多い
・日本語化されていない
・ドキュメントが不十分

ArgoUML sample image

2. astah* community(旧JUDE community)
日本製ということで、UMLが書けるツールとしては、国内では最も有名であろう。
しかし、名前がAstahになってから、無償版の機能制限が多くなってしまったようだ。
今回、無償版をダウンロードして使ってみたが、トップメニューから製品版の案内が出る上、メニューに有償版のみ有効になる灰色の項目が多すぎて非常に鬱陶しく、イラッと来たので、やめた。
【利点】日本語である
【欠点】何かにつけ、調べた挙句、フリー版ではできないことを知る羽目になる

3. Omondo EclipseUML
Eclipseのプラグインとしては定番のものである。
作成した図を画像ファイルとしてexportする方法がわからなかったので、やめた。

4. eUML2
これもEclipseのプラグインである。
EclipseのSoftware Updateで"UML"で検索したら出てきたので、使ってみた。
また、個人的にSwingのVisual Editorで馴染み深いSoyatec製だということにも興味を惹かれた。(Visual Editorの開発は止まってしまったようだが)
【利点】
・UML2に対応している(が、作成できる図の種類は限られる)
・Eclipseと親和性が高く、極めればEclipseでいろんなことができそう
【欠点】
・動作はとても不安定、よくJavaのエラーが出る(特に

Unhandled event loop exception
java.lang.StackOverflowError
は頻出、筆者の環境ではコンポジット構造図でClass間にnavigableでないAssociationの線を引くだけで出る)
・というか、まだまだバグだらけ
・できる図に違和感を感じることが多い(下のサンプルでは、ポートが要素の枠線上に無い、要求インターフェースの○を消せない(ソケット(半円)のみが正しい)、ボール(丸)とソケットがずれている)
・追加したのに表示されない要素、消すにはXMLを編集するしかない要素がある
・全体的に、XMLの編集を余儀なくされることが多い
eUML2 sample image

5. AmaterasUML
やはりEclipseのプラグインである。(そればかり狙った訳ではないのだが…)
まだまだ開発途上で、作成できる図の種類が少なすぎるので、やめた。

6. Topcased
なぜかEclipseのプラグインである。
Eclipse上で動くが、Eclipseっぽい動き方をしない。Eclipse上で独自の世界を構築してるようである。UMLの使い方としても独特のものがあるように感じる部分がある。
動作は安定しているが、思い通りの図を書くには後少しの所でつまずくことが多い。また、思い通りに要素を配置できない時に何が悪いのかわからないことも多い。
【利点】
・UML2に対応している
・まあまあ綺麗な図が書ける
・動作が安定している
・使い始めは覚えやすい
【欠点】
・Eclipseとの親和性が低い
・完全に思い通りのUMLを書くのは難しい
・というか、たぶん書けないものがある(コンポジット構造図のパートの内部構造など)
・特殊すぎて、UMLを学ぶという用途には適さない気がする
Topcased sample image
(ソケットはGIF形式でexportすると消える、PNG形式なら残るが色数が落とされて汚い)


…どうも、これに決まり、というものが無いなあ。


(番外)Dia
【利点】UMLに限らず、作図全般の用途に使える
【欠点】UML 2.0に対応していない(追記:あながちそうとも言えないようだ)

いずれにせよDiaは必ず使うような気がする。