UMLスケッチツール
http://martinfowler.com/bliki/UmlSketchingTools.html
私は多くのUMLダイアグラムを描いているが、CASEツールは使っていない。 というのも、私はスケッチとしてのUMLに興味があるのであって、 あの倉庫に積まれた一式全部には興味がないからだ。 今のところ、よく使っているのはVisioだ。 Visioには最初からUMLテンプレートがついてくるが、 私はPavel Hrubyのテンプレートの方を好んで使っている。
これまでVisioには大変お世話になった。 今でも私のファースト・チョイスはVisioである。 だが、ちょっとばかし目移りしちゃってることをここで白状せねばなるまい。 だって、Visioって、Windowsでしか動かないじゃん。 私はMacもUnixenも使っとるのよ。 だからね、すべての環境で動くツールがあったら、そりゃナイスなわけ(共通フォーマットでもいいけど)。 私はすべての環境を使いながらあれこれやるのが好きだから、 Windows以外でVisioを使えないのならば仕方ない。 オープンソースかなんかのツールでダイアグラムを描くのであーる。
Macだと、Omni Graffle をちょっとだけ触ったことがあるが、 評価できるだけちゃんと触ったわけじゃない。 アンチエイリアスの効いたかっちょいい見た目なんだけどね。 UMLetもなんだか見た目が面白い。
中でも一番面白いと思ったのは、UMLダイアグラムをテキストで記述するというものだ。 UML「ダイアグラム」なのに、テキストだぁ?なんじゃそりゃ。って、そう思うはずだ。 テキストにはいくつかの利点があるのだ。 ものすごい量の図をレイアウトするのはめちゃくちゃ面倒くさいけど、 テキストなら、ほら、簡単。 図を使って編集するんじゃなくて、図は見せるためだけに使うのだ。 テキストならcvsとdiffを使って、簡単に変更履歴管理も出来るしね。
というわけで、私はUmlGraphに興味を持っている。 私の心をわし掴みしたのは、シーケンス図のエディタだ。 従来からある画像系プログラムの手法を使っている。 このページにちょっとしたマクロがあるが、 これでシーケンス図が作れるのだ。ナイス杉。 もちろん、このマクロにはいくつかの制限がある。 だが、こんな感じに、もっとコンパクトで簡潔なものになると私は思っている。
objects
thread, t:thread
tool, :Toolkit
peer, p:Peer, unborn
trace
found: a1:run(3) ->
thread:
run() ->
tool:
callbackLoop() -> self
create -> peer
handleExpose() ->
peer:
return
delete -> peer
これは単なる思いつきに過ぎない。 実際に現場で使えるかどうかは分からない。 でもまあ、とにかく、このUmlGraphを試しに使ってみようと思っている。 プログラム自体は小さいものだから、tweak(訳注:ハックと言えばいいのに)しようと思えば出来るし。
UmlGraphのクラス図ジェネレータはナイスだ。 Javaソースファイルからクラス図を作れちゃうんだぜ。 でも、単なるダイアグラム生成というだけじゃあ、ちょっとばかし不満かも。 やはりクラスの位置まで指定したいよね。 とはいっても、CustomerはOrderの左に、とかだけで私は十分。 たとえば、この図を描くには、こういう感じで書けるといいな:
layout
row: Controller, EmbeddedAgent, URLStreamHandler, ChannelIterator
SetTopController below: URLStreamHandler
PowerManager below: SetTopController
interface URLStreamHander
operations
OpenConnection()
parseURL()
setURL()
toExternalForm()
class SetTopController
specializes
Controller
EmbeddedAgent
implements
URLStreamHandler
attributes
authorizationLevel
operations
startUp()
shutDown()
connect()
associations
-> PowerManager
class ChannelIterator
dependencies
-> SetTopController keyword:friend
何度も言うけど、これは単なる思い付きでしかない。 誰かがこの道を進んでもらえるのであれば、私は嬉しく思う。 もっと先を見てみたい。