決定打が...
ひとむかしまえにくらべて、
ずいぶんとERDツールは発展してきたように思えます。
特にフリーのツール、安価なツールが機能を付け、
業務で利用するのに現実的なレベルになってきたかなと。
ただそれでも、やはり「もうこれでいいでしょ」って
言えるツールがないかなと感じています。一方で、
「あともうちょいで、もうこれでいいでしょ」って
感じのツールはあるかなと。
よさそうなものでも、50や100テーブルを超えてくると、
ダメになってしまうものもあります。
ちょっと、ERDツールへの今思う要件をまとめてみました。
代表的なものだけを列挙しています。
ERDツールの要件の羅列
#
# A. 最低限の要件
#
A-1. FK線が90度の折れ線じゃなく直線であること
A-2. FK線でカーディナリティ(多重度)が表現されていること
A-3. DBMSごとのDDLが出力できること
A-4. テーブルの背景色が付けられること
A-5. ノート(注釈)が付けられること
A-6. 論理名と物理名の同時表示 (or ショートカット切り替え)
A-7. "論理名 + 説明" のDBコメントDDL出力
A-8. テーブルのカラム名をダブルクリックですぐにカラム編集
A-9. 上向きであること (今はダメでも改善されるムードが欲しい)
A-10. テーブル数が多くなっても遅くならないこと
A-11. とにかく細かい面でカラム定義にストレスがないこと
A-12. とにかく細かい面でFK定義にストレスがないこと
#
# B. あったらうれしい要件 (代表的なもの)
#
B-1. ERMaster の検索機能
B-2. MySQL Workbench の(選択テーブルの)FK線ハイライト
B-3. ドメイン (論理型、辞書機能と実現は様々)
B-4. 共通カラムの定義 (新規テーブル時のデフォルトカラム)
B-5. 図のままHTML出力
【追記 (2014/04/18)】
ClubDB2で話題になったので、A-1 について補足します。
直角線(垂直平行線)だと、テーブル数が多くなってきたときに、
リレーション線がどこにつながってるのか、
わけわからなくなるんですよね。
一瞬、綺麗に見えてよいのかもですが実際には役に立たない。
斜め一直線だと、テーブルから出発した線の角度から
なんとなくどのテーブルにつながってるのかが
だいたい想像できて、意外に読みやすいんです。
地味にうれしいのです。
なので、何気に最初に来る要件にしています。
EA (EnterpriseArchitect)
自分がよく利用している EA (EnterpriseArchitect) では、
"A" はほとんど網羅されています。
-> UMLモデリングツール Enterprise Architect
意外に A-7 ができないかな!? あと、細かいところでは
A-11, A-12 も改善の余地はたくさんあるんじゃないかと。
ただ、"B" が、かなり弱いところ。他のフリーのツールが
この辺を押さえていたりするので、安価でも有償の EA はちょっと
苦しい立場になります。UML は EA だけど、ERD は別のもの、
って悲しい感じがしますが、そういう現場は実際にあったりします。
B-1、B-2 は大きなERDになると本当に便利な機能。
EA にぜひ欲しい機能です。(他のツールもぜひ真似て欲しいところ)
B-3 は「データベースモデリング拡張アドイン」を使えば
できるようになるようですが、個人では買っちゃいたい感じですが、
不特定多数の人に奨めるっていったときに、コストの面で要相談に
なるかもしれません。他の機能が全てこの拡張アドインで実現できる
とかであれば説得力は増すかもしれませんが...
B-4 は地味ながら欲しい機能。毎度毎度同じカラムを追加するのは
精神的にも指体力的にも疲れます。EAだと、既存のテーブルを
ダミーコピーして、プロジェクトブラウザ上でドラッグ&ドロップ、
ダミーは削除ってしてましたが、まあちょっと苦肉の策な感じです。
ただ、B-5 は EA の真骨頂。本当に素晴らしいの一言です。
もし B-1 がHTML上で可能になったらスペシャルです。
(地味ながらHTMLの拡張子のデフォルト .htm なのはなぜ!?
拡張子の設定って .html だけ調整してたりするから、出力時に
.htm を .html に変更し忘れると開くとき意外にうっとおしい。
まあ、一度 .html にすれば記憶されますが最初だけ)
細かい点では、FK線の表示設定がデフォルトで表示され過ぎ。
FK名とPK名まで出ていますが、そこまで要りません。
カーディナリティの表現とFKカラム名くらいで十分です。
できれば、デフォルトでそうなってほしい...
他にも細かい点で惜しいと思えるところがあるかな。
あと、これは仕方ないことですが、EA独自の操作のクセがあります。
例えば、テーブルを削除(delボタン)しても図上から消えただけで
プロジェクトブラウザ上には残っていたり(ctrl + D なら完全削除)、
FK線を削除してもFK情報は残っていたり、コピー後のペーストは
ctrl + shift + V と shift が必要だったりと、ほとんど初心者は
かなり高い確率で戸惑います。まあ慣れればって感じだけど、
ちょっと印象悪く受け取られちゃうことも...
(ただ、FK線などは設定で色々と調整もできるようですが)
コスト面も含めた総合点では、明らかに EA かなと感じては
いるのですが、高機能なフリーのERDツールの台頭で悩みます。
もうちょいだけレベルアップすれば、
「もう EA でいいでしょう」
って言い切れそうなのですが(言い切りたい)。
#
# 追記 (次の日):
# 拡張アドインは、上向きなツールのようなので、
# 今後期待したいところです。というか今の時点で、
# 既に解決されている問題もあるかもしれないので、
# ちょっと個人で試してみたいなと考えています。
#
【追記 (2014/04/18)】
だいぶ時が経ちました。
友人から、アドインツールの DBMode が
どんどん良くなっているという話を耳にしました。
機会があったらぜひ試してみたいですね。
ERMaster (Eclipse Plugin)
ERMaster (Eclipse Plugin) は、オープンソースながら
"A" も "B" もかなり網羅していて、驚愕のツールです。
-> SourceForge - ERMaster
ある面では有償の EA よりも優秀な部分もあります。
A-6 はなんなくできるし、B-1 は本当に素晴らしい。
B-3 もちょっとクセはありますが、デフォルトで利用可能。
ただ、二点を除いては...
A-10 が全然だめです。テーブル数やカラム数が多いと、
とてつもなく動作が遅くなります。我慢できるレベルじゃない
くらい遅くなったりします。
A-9 がよくわからない。コミットログは最近もあるようですが、
探しても開発者コミュニティがいまいち見えてきません。
フォーラムはあるようですが、全然活発じゃありません。
この二点さえしっかりしていれば...惜し過ぎる
AmaterasERD
AmaterasERD は、"A" も "B" もなかなか満たしていませんが...
-> ProjectAmateras - AmaterasERD
ただ、二点の良いところ。
o フリーで軽量、テーブル数が増えてもOK。
o ソースがシンプルで追いやすい (機能不足の裏返しですが)
これで、A-9 であれば希望はあるのですが、
残念ながらそこまで活発な感じは見受けられません。
それでもパッチを送れば取り込んでくれます。
(その節はありがとうございました)
個人的にはポテンシャルの高いツールだと思っていますが、
どうしても現状では他のツールとの比較は避けられません。
さいごに
ということで、いつの時代もERDツールで悩むものですね。
ドメインとかわかりやすいところは別にして、印象的なのが、
それぞれのツールがそれぞれ独自の良い点をもっているところ。
B-1, B-2 が代表的なもので、細かいところでは他にも色々。
全部出してまとめたいですが、それをやるだけで「仕事」と
言ってもいい作業量が発生するのでボランティアではちょっと...
逆に言うと、「ERDツールの要件」というものが世の中的に
いまいち確立されていないとも言えるかも。それぞれの
アドリブでアイディアを出しあっているような状態。
「高価なERDツール or ERDを書かない」という時代が長く続き、
ようやく安価 or フリーのERDツールが出てきたということで、
ある意味ERDツール市場の歴史は浅いと言えるかもしれません。
「ERDツールの要件」というのをいかにキャッチして、
ツールに反映させていくか、それができたERDツールが
DB設計者の良きパートナーとなっていくのかなと。
【追記 (2014/04/18)】ERMaster-b 使ってます!
このエントリを書いてから何年も経ちましたが、
ERMasterのつらい点が改善された
「ERMaster-b」
なるツールが公開されています。
// ERMaster-b
https://github.com/naoki-iwami/ermaster-b
実際に現場で使っていますが、非常に快適です。
100, 200テーブルでも普通に使えています。
ここがクリアされると、無料で使えるツールの中では
ERMasterに匹敵するものがないかも!? とは感じています。
また、githubで管理されているので、
自分で改善してプルリクすれば取り込んでもらえるかも!?
(jfluteが実際にプルリクしてマージしてもらっています)