(25日目-1) blockdiag が目指すもの

みなさん、メリークリスマス!今日は 12/25、クリスマスの日です。
長かったこの Sphinx & blockdiag アドベントカレンダーも今日で最終日です。

今日は最終日ということで、"blockdiag が目指すもの" というタイトルで書いてみたいと思います。

誰のためのツールなのか

blockdiag は図を書くために文法を覚えなければならず、
また自由自在にレイアウトすることができないため、誰にでも使えるツールではありません。
このツールがターゲットとしているのは、ある特定の図(ブロック図、シーケンス図など)を書きたい技術者です。

多くの図は Visio や Cacoo を使って、マウスで書く方が圧倒的に楽です。
blockdiag が生きてくるのは、お決まりの(定形の)図を書くときです。
画面遷移図や機能構成図、シーケンス図などすでに形が決まっていて、書くべき内容も定まっている。
そういった図を書くときに blockdiag は真価を発揮します。
さらにそれらの図の中でも、特に大きい図であるときや
一度書いた図に書き換えるはより一層パワーを発揮します。

ですから、このツールは決して万人のためのツールではないし、万能なツールでもありません。
いわゆるポンチ絵のような、一枚のイメージを書く場合は向いていないのです。
blockdiag を使う人はその用途が一致しているのか見極める必要があります。

blockdiag のライバルたち

blockdiag と競合するのは、以下のようなツールたちです。

GUI ベースのツールはイメージ通りに図を書くのに向いています。
マウスを使ってアイテムを配置していくのはあまり難しいことではないですし、
とても高い自由度を得ることができます。
反面、大きい図であったり図を調整する必要が出てきた場合などに、大きな手間と苦痛がやってきます。

CUI ベースのツールは書きやすさがキーポイントになります。
aafig と ditaa はアスキーアートで図を表現するので、シンプルなものであれば手間はかかりません。
しかし、大きな図を書くにはアスキーアートは向いていません。
また、複雑な図を書こうとしてたくさん記号を使った結果、テキスト状態で読みづらくなるというケースも目にしました。

PlantUML は UML 系の図に関して、現時点で最強の CUI 系ツールではないでしょうか。
多くの図をカバーしていて、出来上がりもきれいです。
敢えて苦言を呈するならば、一部の図では手動でレイアウトを行わなければならないところです。
あるノードを右に配置するのか、下に配置するのか、それを意識して記述しなくてはなりません。
複雑な UML 図を書く場合は、実は GUI のツール(astah* など)を使ったほうが
幸せになれるかもしれません。

こうしてライバルっぽいツールをピックアップしたものの、
どのツールとも blockdiag は方向性が違うのであまりコンフリクトしたツールではないかもしれません。
書く図の向き不向きで、どのツールを選ぶのか決めるといいのではないでしょうか。

blockdiag が目指すもの

blockdiag が目指しているものは、かんたんに、メンテナンスしやすい図をつくることです。
主眼においているのは常にこのふたつです。

「かんたんに」というのは、書きやすく読みやすい文法として実現しようとしています。
「メンテナンスしやすい」についてはレイアウトエンジンによって実現しようとしています。
どちらも何度も何度も調整を繰り返してきた blockdiag の要になる要素です。

ですから、blockdiag はこの二点に軸を置いて強化し続けていこうと思います。

  • かんたんに
    • 対応している図を増やす
    • いろんな文書ツールと連携する
  • メンテナンスしやすい
    • 人間が意図した通りのレイアウトを目指す
    • 自動生成を目指す (ネットワーク図やパケットモニタリングなど)

2010年の秋に作られた blockdiag は、今年(2011年)いろんな人に触ってもらいました。
そして、様々な人の意見を取り入れてすごい成長を遂げたのではないかと思います。

来年も細かく手を入れていって、かゆいところに手が届くツールにしていくつもりです。
そのためにはユーザーの皆さんの「わがまま」が欠かせません。
ぜひ来年も blockdiag をいじってわいわい言ってください。*1
よろしくお願いします :-)

*1:もちろんコミッターも随時募集中ですよ!!!!