Tracのwikiに図面を入れる

wikiにアレコレ書くのが好きなので、日常的にメモや仕様書、打合せの議事録を書いている。たぶん「月刊wikiマガジン」なんていう雑誌が有れば喜んで買ってしまうことだろう。

そんな便利なwikiだけど、図面は苦手だ。説明用に簡単な図面を入れたい時には、他のソフトで作った図面を貼り付けているものの少々面倒。wikiの中でテキストを書いたらそのまま図面として表示してくれると有り難い。そんなわけで、graphvizやmscgenプラグインを導入して使っている。打合せの場で、話をしながら処理フロー図やシーケンス図を描いて確認出来るのは結構便利だ。UMLの記法に準じている訳ではないし、やや大雑把な図だけど、wikiの中で使う程度なら充分だと思う。

動作環境は下記の通り。

以下、ソフトとプラグインの導入手順。

Graphviz

% sudo port install graphviz
  • easy_installを使ってGraphvizPluginをインストールする。
% sudo /opt/local/bin/easy_install-2.6 http://trac-hacks.org/svn/graphvizplugin/0.11
    • 備考:graphviz.pyを見ればわかるように、MacPortsで入るgraphvizのインストールパスは記載済みなので変更不要。(必要なら書き換える)
 'darwin':   ['/opt/local/bin',
              '/sw/bin',],       
  • tracのadmin画面のPluginsに"graphviz"が表示されていることを確認し、"Enabled"チェックボックスをオンにして"Apply changes"をクリック。
  • wikiに下記のような記述を書いて更新すると、処理フローが表示される。
{{{
#!graphviz
digraph G {Hello->World}
}}}
  • 表示例

Mscgen

% sudo port install mscgen
  • MscgenPluginよりソースコードをダウンロードして解凍し、0.11/mscgen/mscgen.py を開いてmscgenのインストールパスを、上記のインストールパスに合わせて修正する。
self.proc_path = "/opt/local/bin/mscgen"
% sudo /opt/local/bin/python2.6 setup.py install
  • tracのadmin画面のPluginsに"mscgen"が表示されていることを確認し、"Enabled"チェックボックスをオンにして"Apply changes"をクリック。
  • プロジェクトディレクトリ内に”mscgen"フォルダを作成しておく。(画像ファイル出力用)
  • wikiに下記のような記述を書いて更新すると、シーケンス図が表示される。
{{{
#!mscgen
msc {
  hscale = "1";

  a,b,c;

  a->b [ label = "call1()" ] ;
  b=>c [ label = "call2()" ];
  ...;
  c=>c [ label = "process(n)" ];
  a<<=c [ label = "callback()"];
  ---  [ label = "If more to run", ID="*" ];
  a->a [ label = "next()"];
}
}}}
  • 表示例



関連