Windows用のお手ごろドローツールの比較

(2018/2/14追記)
当記事の約6年後に書いた、クラウド型ドローツールのdraw.ioの紹介記事もどうぞ。

自分は上流設計専門ではないのですが、人に説明するためや、自分の考えをまとめるために、図を描くことがよくあります。特に、複数のシステム間のやり取りや連携について開発者の間で合意を確認するには、図を使うのが効果的で、図を描く機会がちょくちょくあります。
そういうときに便利なドローツールは長年探しているのですが、今のところの調査結果をまとめておきます。

なお、自分とは評価の基準がちょっと違いますが、10本の低価格ドローソフトを比較した下記のブログ記事も非常に参考になりました。
http://solitairescope.seesaa.net/article/203058592.html(移転)
http://tec.74th.net/drawsoft-on-windows/
「仕事で手になじむ低価格ドローソフト(Windows用)を探して10本をいじってみたまとめ」
また、シーケンス図を擬似プログラムで描くツールは、別記事にまとめました。

自分で描いた図の例

自分が描いた図を少し紹介します。まず、法人税の申告書類を作成する際に、関連する書類の依存関係をまとめた図です。


法人税の申告書は、簡単に言えば「弊社は利益が○○だったのですが、色々な調整による差引をした結果、最終的な課税所得は△△円になりました。"色々な調整"の詳細については、それぞれ別紙を参照してください」という内容です。したがって、申告書の1行が、別紙1枚に対応するような形になります。この依存関係を、書類を作成しながら書き足して、最後に位置を調整したものです。

次にソフトウェア関連の図を、と思ったのですが、仕事関連のものばかりで載せられないので、データフロー図の記法をベースにした、経理の流れです(以前の記事に使ったものを再掲)。

ここでは、分かりやすさを優先して、記法を多少変更していることや(この図では「日々の経営活動」という入力が複数であることを強調するために、四角を重ねているなど)、説明のために記法にないもの(ここでは囲み数字)を追加していることが、自分がやりたいことです。

選定の基準

上記のような図を描くツールを選ぶ際に、もっとも重要だと考えているのが以下の2点です。

  • オブジェクトの中心に結節点があること
  • コネクタのつなぎ替えが容易であること
    具体的には以下の2点
    • 既存のコネクタの端点をドラッグすることで、別のオブジェクトに接続できること
    • 既存のコネクタを複製して、任意のオブジェクトに接続できること

法人税申告書類の依存関係のようなそれなりに複雑な図だと、「でき上がりを気にせずに、とりあえずテキストボックスを配置して矢印でつないで行き、あとからテキストボックスを動かして見やすくする」という描き方になるので、以上の2点はとても重要です。

この他に、以下のような点も見ています。

  • UMLのユースケース図、クラス図、状態遷移図、UML以外ではデータフロー図などが使えること(ただし、分かりやすさを優先するため、記法に則していない記号も使えること)
  • 関係者に気軽に導入してもらえる価格であること
    エクスポートした画像だと、拡大・縮小が不便だったり、テキストボックスを少し動かすことすらできないので、見るだけでも結局ツールそのものが必要になるケースが多いため

調査したソフトのリスト

ソフト名 中心に結節点 コネクタのつなぎ替え メモ
DynamicDraw × 国産フリーソフト
Dia GNOMEのドローツール
yEd グラフ(エッジとノード)描画ツール
Diagram Studio 有償ソフト($49.95)
Diagram Designer ? Windows用フリーソフト
PowerPoint × 何だかんだで定番ドローツール
LibreOffice Draw × 旧OpenOfficeのドローツール
InkScape ? ? SVG編集ソフト

その他、検討したソフトは以下の通り。今後、試用して調査する可能性あり。

ソフト名 メモ
Visio $299のStandard版ではUMLが描けない
Edraw 廉価なVisioクローンらしい
Calligra Flow KDE版のDia。Windows版はまだまだらしい
Enterprise Architect ソフトウェア関連の描画ツール
Argo UML UMLツール
Astah* UMLツール。旧Jude
StarUML UMLツール
MagicDraw Javaで書かれたUMLツール
OmniGraffle Mac用の定番ドローツール(らしい)

この中で、冒頭の2条件を満たすものを中心に、詳しくレポートします。

Dynamic Draw

5年ぐらい前から使っているドローツールです。サンプルに挙げた2つの図もこのソフトで作成しています。オブジェクトの中心に結節点があってWindows用で無償、という条件だと、当時他に選択肢がありませんでした。

無償というのは、当時会社勤めだったために、有償だといちいち面倒な決裁を受ける必要があり、非現実的だったためです。このときは、ライセンス管理の都合から、自己負担で購入したソフトウェアを持ち込むことも禁止されていたために、無償というのは絶対条件でした。

UMLのテンプレートは充実しています。また、特に書式に関する制約はないので、記法のアレンジは自由です。

自分ではここ5年ほど便利に使ってきたのですが、コネクタ関連の操作に独特なクセがあって、なかなかなじめません。
冒頭の表にも書いたように、すでにあるコネクタを別のオブジェクトにつなぎ替える簡単な方法がありません(自分は結局、新しいコネクタを作成して、以前のコネクタを削除しています)。また、既存のコネクタと同じ書式のコネクタを追加したい場合、既存のコネクタを選択しておいて、矢印多角線の描画をするという、独特な操作になります(これによって、選択されたコネクタと同じ色・太さのコネクタが描画される)。

このクセのために、なかなか他の人に使ってもらえず、自分が描いた図を再利用してもらいにくいという状態が長く続いています。

Dia

オブジェクトの中心に結節点があり、既存コネクタのつなぎ替えが直感的(PowerPointと同様)という点が非常に便利です。また、UMLをはじめとする各種テンプレートは非常に充実している一方で、記法の制約はないのでアレンジも自由です。

ただ、もともとがLinux/GTK用のソフトなせいか、Windowsの標準的なUIとちょっと違うところがいくつかあります。

  • マウスでテキストを選択しても、編集状態にはならない。テキストオブジェクトを選択しておいて、F2を押す必要がある。
  • テキスト編集中に、マウスやShift+カーソルキーによる範囲選択ができない。カーソルキーとBS/DELキーを使う必要がある。
  • Reverse Dragging(右下から左上に向けて、範囲選択する操作)は、デフォルトでは通常方向の範囲選択と異なる動作になる。なお、この動作は、Preferenceで変更することができる

どれも細かい違いなのですが、実際に使っていると意外とよくつまづきます。

また印刷関連の機能が非常に弱く、プレビューや大きさ調整などを考えると、図をPowerPointなどのソフトに貼り付けてから印刷するのが現実的です。

このような理由で、便利ではあるものの、まだ常用するには至っていません。今のところは、描いた図を他の人が編集する可能性があるときに限って使っている状態です。

yEd

Diaと同様、オブジェクトの中心に結節点があり、既存コネクタのつなぎ替えが直感的(PowerPointと同様)という点が非常に便利です。yEd独自の機能として、グループ化したオブジェクトを、折りたたむ機能があります。また、オブジェクトの自動整列機能が充実しており、図全体を一発で自動整列できます。これらの機能は規模が大きくなりがちなソフトウェアダイアグラムには便利です。

操作性はとても良く(Javaのデスクトップアプリなのに、そうは思えない快適さ)、当然UMLにも対応しているのですが、このソフトは「グラフ(ノードとエッジで構成される図のこと)描画ツール」として作られているために、記法から外れた図を描くのが困難です。

Diagram Studio

オブジェクトの中心に結節点があり、コネクタのつなぎ替えも容易。ただし、以下2点の課題があり、使用には至っていません。

  • UMLのテンプレートが用意されていないこと
  • 日本語ファイル名を使うとCtrl+Sで上書き保存ができないこと
    (毎回ファイル名を入力するダイアログが出てきてしまう)

Diagram Designer

オブジェクトの中心に結節点があるのだが、矢印がオブジェクトの内側にまで入り込んで表示されるのが不便。

現時点での結論

自分でしか使わない図はDynamic Drawで作成。人に共有する図は、記法の柔軟性が必要な場合はDia、作成した図を機械的に処理したい場合はyEd、という使い分けを考えています。