aiSeeはレイアウトが複雑なグラフの作成に役立つ
堅牢なグラフ作成ソフトウェアが必要なら、aiSeeを検討してみるとよいだろう。aiSeeはクロスプラットフォームのグラフパッケージで、ネストしたグラフをサポートし、多くのビットマップ形式とベクトル形式にエクスポートし、百万ものノードを持つグラフを処理する。aiSeeは独自のライセンスの下で、非商業的な用途に無料で使用できる。
aiSeeをダウンロードすると、オプションでカスタマ情報フォームへの記入を求められる。現在の安定リリース2.2.27または次のバージョン3のベータリリースをダウンロードできる。筆者は手始めにバージョン2.2.27をFedora 8のマシンにインストールした。およそ2MBのaiSeeアーカイブをダウンロードしたら、それを展開してセットアップスクリプトを実行することでインストールできる。このスクリプトはユーザが選択したパスのサブディレクトリにすべてのものをコピーする。筆者はaiSeeを構成するすべてのものが単一のディレクトリに置かれるように/usr/local/aiSeeにインストールを行った。このようにしてaiSeeを使用するためには、PATHに/usr/local/aiSee/binを登録するか、aiseeバイナリへのソフトリンクを作成する必要がある。
$ cp /.../aiSee_linux.tgz `pwd` $ tar xzvf aiSee_linux.tgz $ cd aiSee $ ./setup ... Please specify the installation directory for aiSee. This script will install aiSee in a hierarchy below that directory. For example, if you specify [/usr/local], the executable files will be installed in /usr/local/bin and the samples, icons, fonts, and documentation files will be installed in the directories /usr/local/share/aiSee/samples, /usr/local/share/aiSee/icons /usr/local/share/aiSee/fonts, and /usr/local/share/aiSee/help. Where should aiSee be installed ? [/usr/local] /usr/local/aiSee ... $ sudo ln -s /usr/local/aiSee/bin/aisee /usr/local/bin/
aiSeeを実行して最初に目についたのは、美的な面とアプリケーションのカスタムユーザインタフェースデザインである。aiSeeのデフォルトインタフェースは白地に黒で、これは明るいLCD画面ではすぐに時代遅れになる。最初のウィンドウの上部にはメニューバーがなく、アプリケーションとの対話はコンテキストメニューとホットキーで行うようになっている。コンテキストメニューによる対話はカスタムアプリケーションではうまくいくかもしれないが、aiSeeはコンテキスト情報を生かせないことがある。たとえば、ノードを右クリックすると、コンテキストメニュー「Center Node…」のトップレベルにメニューエントリが表示され、それによって起動されるダイアログで表示をセンタリングするノードを選択できる。コンテキストメニューが起動されたので、右クリックしたノード上でグラフをセンタリングできると思うかもしれないが、それはメニューオプションではないし、中央ノードで起動されるダイアログが右クリックしたノードに設定されることもない。
このインタフェースには他にも難点がある。ファイルを開こうとしたときに、マウスホイールの回転で最初のリストダイアログをスクロールできないことに気がついた。また、ホットキーは単一のキーであり、Alt+キーではない。OKボタンまたはCancelボタンをクリックする代わりにウィンドウを閉じるコントロールをクリックしてレイアウトプロパティウィンドウを終了したら、aiSeeがクラッシュした。これはカスタムダイアログ処理に関連するバグだろう。
とはいえ、ある程度慣れてしまえば、aiSeeのカスタムキーと対話スタイルはかなり効果的だと言えるだろう。たとえば、aiSeeでmキーを押すとエンターグラフが表示されるが、これはコンテキストメニューからView/Maximum Aspectを選択するのに等しい。なお、GIMPでは同じ機能がShift-Ctrl-E Fit Image in Windowとなる。グラフをレイアウトするには、Iキーを押し、右クリックしてグラフ全体を新しいレイアウトのターゲットとして選択する。
aiSeeに付属しているGDL(Graph Description Language)ファイルには50個ほどのグラフ例が収められているので、どんなことが可能で、どうやって実現するのかがわかる。GDLファイル形式は習得しやすく、ASCIIファイルでグラフを記述できるようになっている。aiSeeではグラフをインタフェースから手動で作成することはできず、GDLファイルで表現しなければならない。
aiSeeには情報をGDLファイル形式にインポートするためのツール類が用意されている。たとえば、apache2gdlはApacheログファイルをビジターアクセスパス情報を示すGDLグラフに変換し、aicallはANSI Cプログラムのコールグラフを作成し、dot2gdlはgraphvizドットファイルからGDLファイルを生成する。excel2gdlマクロは、あいにく筆者のOpenOffice.orgバージョン2.3.0では正しく実行されなかった。
筆者はaiSeeのレイアウトアルゴリズムを調べるために、dot2gdlを使って既存のドットファイルからGDLファイルを生成した。dot2gdlを使用するには、liberrorライブラリもインストールする必要がある。どちらのソースもdot2gdlホームページにある。liberrorもdot2gdlも標準手続きの「./configure; make; sudo make install
」でコンパイル/インストールできる。
まずgraphvizプロジェクトギャラリーのプロファイル例を使ってみた。これらのグラフはgraphvizギャラリーページに表示するように選ばれているので、graphvizレンダリングはaiSeeよりもずっと有利である。特別なオプションを使わずに、単に「dot2gdl profile.dot profile.gdl
」を使ってGDLファイルの生成を試みたところ、どこへも行かないように見えるエッジを持ったグラフが生成された。softmaintからの入力ドットファイルと例コマンドを使用すると、dot2gdlホームページの赤と緑のグラフ例を生成することができた。このgraphvizレンダリングによるsoftmaintグラフとこちらのaiSeeレンダリングを比べてみると、aiSeeの方は中核的な楕円が重なり合うのを避け、判読しにくいズームレベルではノードにラベルを付けないようにしていることに気がつく。
スケーラビリティ
もっと大きなグラフでのリソース要件をテストするため、下記のようなGDL生成スクリプトを作成してみた。500から1,000のエッジを移動すると、aiSeeがレイアウトの実行に要する時間に大きな影響を及ぼす。それは1,000ノードのグラフで同じレイアウトパラメータでほとんど瞬時から数秒へと変わる。1,000のノードとエッジを持つGDLファイルの場合、aiSeeは10.3MBの仮想メモリと7.1MBの常駐メモリと5.3MBの書き込み可能メモリと1.8MBの共有メモリを使用していた。ノード数を100,000まで増やすと、メモリ消費の問題は起きなかったが、描画が極端に遅くなるので、筆者は数分経ってからグラフのレイアウトを停止させた。
#!/bin/bash MAXNODES=1000 MAXEDGES=1000 echo "graph: { color: khaki" echo "" for idx in `seq 0 $MAXNODES` do echo "node: { title: \"$idx\" } " done for idx in `seq 0 $MAXEDGES` do src=$(( $RANDOM * $RANDOM % $MAXNODES )); dst=$(( $RANDOM * $RANDOM % $MAXNODES )); echo "edge: { source: \"$src\" target: \"$dst\" } " done echo "" echo "}"
ベータバージョン3.4
筆者はテストのためにLinux用のaiSeeベータ3(バージョン3.4、リビジョン1、ビルド80025)を入手した。aiSeeのバージョン3.xはQt 4.xと静的にリンクされているように見え、安定バージョンよりも標準ユーザインタフェースがずっと充実していて、上部のメニューバーとツールバーを備えている。この新しいバージョンでは、グラフのさまざまな表示にマーカーを設定できるので、表示をすばやく変更してグラフの中で注目したい部分をズームできる。このベータでは保存ができないので、それらのマーカーがグラフ自体の一部となるかどうかは確認できなかった。
View/Showパンナー機能は、現在のズームレベルで見える部分を示す灰色と白の長方形で大部分をマスクしてグラフ全体を表示することで、グラフのある領域から別の領域へのジャンプを可能にする。レイアウトダイアログも少し修正されており、グラフに精通していない人たちにとってオプションがいくらか取っ付きやすいものになっている。
バージョン3.0の機能として、PDFへのエクスポート、平滑化されたレンダリング、UTF-8サポートがある。残念ながら、Linux用の3.xベータバージョンにはエクスポートのような機能はないが、全体として2.2.xバージョンよりも歓迎すべき進歩がいくつか見られる。
ApacheログファイルなどのaiSeeに認識されるデータソースがある方や、自分でGDLファイルを生成する気がある方にとって、aiSeeは魅力的なグラフレイアウト/探究ツールである。現代的なユーザインタフェースと平滑化とマーカー機能を備えた3.xベータの使用をお勧めする。
Ben Martinは10年以上にわたってファイルシステムに取り組んでおり、博士課程の修了後、現在はlibferris、ファイルシステム、検索ソリューションを中心としたコンサルティング業に従事している。