勤め先がExcelと心中することを旨としているような素敵な会社なので、私はER図(ERD)を描画する専用ツールを使ったことがありません。汎用ライブラリではなく(今回のFF14向けウェブシステムのような)本格的なアプリケーションを「きっちりドキュメントを用意しつつ」プライベートで作る経験はあまりないので、前時代的なExcelによる設計書作成作業から卒業しようと思いました。
書き方を変えると、「これまで納品物を見てああだこうだ言ったり一部分を書いてみるだけなら何とか我慢できたExcel製ER図を、いざ自分で一通り描いてみたら、短気な自分が我慢ならなくなった」という次第です。いやあ、人間というものは、他人の痛みは解らないものですね(しみじみ)。
といっても(ER図やUML各図が描けるとはいえ)Visioが出て来るわけではもちろんなくて、ちゃんとした専門ツールで、かつ、FLOSSなツールを選ぼうと思います。
さっくり探して見繕った候補と、その選定の委細は以下の通りです。
候補
利用環境をWindows NT系と想定して、ツールの候補の一部を列挙します。ほとんどはてQのままですが......。
なお、試行・評価はWindows XP環境で行っています。
- MySQL Workbench
- MySQL本家が出しているツール(もちろんMySQL特化部分以外でも使えます)。やや重めですが、優れたUIを備えています。直感的に編集出来ると思います(少なくとも私は簡単でした)し、安心感が段違いです。選択状態でF2を押下して値の編集モードに入るなど、Windows的なUIのお約束にも対応しています。インストールパスにバージョンが入るので、複数バージョン(現在だと5.1.17と5.2.2a)を並行して使うのでなければ、カスタムインストールでインストール先を変えましょう。
- DBDesigner 4
- 軽くてMySQLとの親和性も高いツール(これもMySQL特化部分以外でも使えます)。有志によって日本語化もされています。モデリング・図の調整とも、直感的でない部分もありますが、MySQL Workbenchと比べると、例えば「カラム定義時に入力フォーカスが準じ遷移するので書き易い」「データ型の記入時に自動補完される(たとえばIと打った時点でINTEGERが入る)」など、痒いところへの手の届き具合が素敵です。
- XEAD
- 業務定義書や機能設計書とも連動するなど、個人的にはとても面白い機能があると思いました。会社で使いたいくらいです。上流工程などを含めて包括的に面倒を見るならこれですが、汎用(的な)フォーマット(例えばExcel, CSV, HTMLなど)でエクスポート・インポート出来るとはいえ、ツール依存性があまりに高まることのリスクに鑑みて、選から漏れました。
- Eclipseプラグイン各種
- いくつかのツールを比較された記事がとても参考になります。今回のFLOSSの意図には沿っているのですが、Eclipseまで持ち出すと話が大きくなるのではないかという微妙なバランス感覚(別名:小心者)が働いて、今回は試行・評価の対象としませんでした。ただ、「俺はプライベートのプロジェクトでもEclipseを活用している」という人にとっては、鬼に金棒になると思います。
- Excel ERD
- 納品物をExcelで求められるという、まるで勤め先のユー子がパートナー会社さんに求めているような前時代的環境のために、「ExcelでER図を描画する」ことに注力したツールです。今回はExcelにこだわらない(むしろExcelの軛を脱したい)ので、選から漏れました。自宅のExcel 2007では表が真っ黒になりましたが、対応が明示されていない2007だからか、私のPCの配色設定がおかしい所為なのかは不明です。
- テーブル定義書作成 for Excel
- ODBCでDBと仲良くする機能もある、Excel連動型のツールです。短気な私はER図作成までをすぐに触ることが出来ず、またExcel前提ツールということもあって、残念ながら選から漏れました。
選定の意図
せっかくツールを使うのですから、Excelよりも簡便に編集、かつ見易いグラフィカル表示を求めることにしました。
なお、エクスポートしなくても、そのままのファイルを、他の方が読み書きできるようにするという意図もあるので、Excelを前提とするツールは残念ながら選から漏れることになりました。
操作性
操作性という意味では、いずれのツールも、基本的にWindows標準の操作性を求めない方が得策です。Javaアプリの独特な操作性と言えば、解る人は解るかも知れません。
ただ、Excelのオートシェイプ(図形)にベタに文字列を書くことに比べれば、どのツールも非常に優れています。スキーマ(荒く表現するならテーブルの定義とリレーションの定義)を鼻歌交じりに書くだけで、一通りのモデリングを行え、その結果としてダイアグラムで表現するという作業の仕方を実現出来るからです。最初から図ありきのオートシェイプ地獄とはここが違います。
E/R図表示の見易さ
沢山のエンティティが乱れ飛ぶ今回のプロジェクトでは、グラフィカル表示した場合の微妙な融通が利かないと辛いです。
私が使いこなせていないだけかもしれませんが、MySQL WorkbenchやDBDesignerの場合、リレーションの線の出所の融通が利かず、複数のエンティティが絡み合っているようなモデルだと、せっかくのグラフィカル表示が破綻してしまうように思われました。Excelでもコネクタが相当カオスな状態なのですが、Excel以上にカオスになったため、今は断念しています。例えばExcelでは、コネクタの支点と終点は限れています(例えば単なる四辺形ならば四辺の中点のみ)が、MySQL WorkbenchやDBDesignerではテーブルの相対的な位置関係によって線の経路が限られてしまうように見受けられました。
繰り返しますが、私が使いこなせていないだけの可能性もあります。上記はドキュメントをあまり深く読み込んでおらず、直感と連想能力に挑戦する象印クイズヒント式(謎)に触っただけの感想です。うまい描画法がありましたら是非教えてください。
さしあたってはテーブルを大胆に広い描画領域に分散することで、あみだくじ状態ではありますが破綻をぎりぎりで防いでいます。ただ、このリレーション周りの描画は隔靴掻痒の感があります。
その他
今回のプロジェクトのモデルはData::Modelで実装することにしているため、CREATE文の出力機能や、既存DBの解析機能は、ありがたい機能とはいえ今回のプロジェクトでは使いません。DBIx::Classを使うのであれば、例えば「設計書→DB(CREATE大会)→それを取り込み」という実装方法もありかも知れません。
また、結局ツールを使う以上、各ツールの一次フォーマットとお付き合いすることは変わりません。ただ、ツールに依存するにしても、インストールベースを勘案することは重要だと思います。MySQL Workbenchの方がDBDesignerよりもインストールベースが多いでしょうし、国内ソフトはそれらの海外ソフトよりもさらに少ないでしょう。商用ソフトであれば一朝一夕でツールが使えなくなることはないでしょうが、今回は開発費を圧縮しつつ、他の方がドキュメント類を閲覧する際の障壁を作らないという意味でも利用無料のツールに限定したため、選から漏れたツールも多くあります。
なお、XMLデータであれば、結構な互換度を備えたままで行き来が可能です。例えばDBDesignerからMySQL Workbenchへのインポートなども十分可能です。なので、まずその二つを試しても損はありません。IE表記法でもIDEF1X表記法でも切り替えられるので、まずはいくつかのテーブルとリレーションを作って遊んでみることで、使い勝手を判断するのが良いと思います。
結論
色々探しましたが、やはりMySQL Workbenchで行ってみようと思います。長い物に巻かれるという日本文化を尊重しています。
もうちょっと具体的に書きますと、
- 「重厚長大モデルだと遅いぞ」と脅されつつも、ER図でリレーションの線が交差するときの「飛び越え」が出来る([Tools]メニュー - [Preferences]サブメニュー - [Workbench Preferences]ウィンドウ - [Diagram]タブ - [Relationshops/Connections]グループ - [Draw Line Crossing (slow in large diagrams)]チェックボックス)
- ER図のテーブルの大きさを変えられるので、線の始点終点を(DBDesignerに比べれば)制御する余地が多少拡がる
という点で、Workbenchに軍配を上げた次第です。
などと書いていて気が付いたのですが、上記2.については保存して再度開き直すとテーブルの大きさがリセットされてしまう(それっぽい大きさに戻ってしまう)という問題があることに気が付きました。まあ、ER図を書くことが主目的のツールではないので、あまり見栄えにこだわるのも大概にしておきましょうか......と、今までの文字数を全否定するようなことを書いてみるテスト。5.2.2ではそれらの大きさのデータが保存されているようですが、5.2.2で保存したファイルを5.1.17で開けないので、痛し痒しです。5.2.2が安定すれば、私のささやかな用途には最適なツールになると思います。
補足
各ツールは(検索で引っ掛かったり、質問の回答として挙がったりするくらいですから)いずれも優れたツールだと思います。そのような立派なツールに対してはほとんど言いがかりのような選定基準ですが、あくまで私個人の趣味のプログラミングとしてお手軽にモデリングを行うという目的を果たすためのツール選定ですので、各ツールの作者の方々やファンの方々は、どうかお気を悪くされないように。
なお、クラス図を描画する際には、UML::Class::Simpleと連携する際に最初に使ったArgoUMLを、半ば雛鳥の刷り込み効果よろしく愛用しています。こちらも、重いですがなかなか快適な使い心地でお勧めです。
時間があれば簡単なスクリーンショットを後日この記事に添付しようと思います。また、本プロジェクト"Amikeco"のER図は、もちろん公開します。荒っぽいものですが、まずは近々公開出来る見込みです。設計や実装に興味のある人は少ないとは思いますが、何かの拍子に参考にしていただければ幸いです。
EREndiaもER図を描画できますので、ぜひお試しください。
http://www.sqlendia.com/pages/50a49e6e-fb06-497d-802e-809f95942297.htm
komaさん、ツール作者自らのご紹介、どうもありがとうございました。
最近は、トラックバック元の記事で書いたように、ER図描画からDDL(CREATE文など)の自動生成までをやってくれるMySQL Workbenchを使っています。しかし、当然ながらそれはMySQL用のDDLであって、他のRDBMSにはそのままでは使えないこともあります。
その意味で、EREndiaには期待しています。