mscgenを日本語化してDoxygenで出力する
■mscgenとは
mscgenはテキストで記号を組み合わせることで、シーケンス図を記述することができる。
また、doxygenと連携させることにより、コード中にmscgenによる記法を埋め込み、HTMLで画像としてシーケンス図を確認することができる。

http://www.mcternan.me.uk/mscgen/


b0232065_1411989.png





■mscgen日本語化について
デフォルトではmscgenは日本語を使うことはできない。
日本語を使うには「CFLAGS=-DUSE_FREETYPE」を付与してMakeしなおすことで、フリーフォントが指定できるようになる。

gccが入っているMacOSやLinuxでは単純であるが、Windowsでビルドしなおす場合は注意が必要である。

■Windowsでのリビルドの手順
1. Cygwinを入手する

2, Cygwin上でgccなどを使用してMakeをした場合、作成されたバイナリファイルは cygwin.dll に依存してしまう。
 つまり、Cygwinが存在しない環境では動作しなくなってしまう。
 gcc3の時には"-mno-cygwin"を付与することにより、cygwin.dllに依存しないバイナリが作成できたが、現在gcc4ではこのオプションが使用できなくなっている。
 このために、「i686-w64-mingw32-gcc」を用いてビルドを行なう必要がある。
 
 この設定方法は下記を参照。
  http://www.plustar.jp/lab/blog/?p=11983

 この説明にあるようにapt-cygを用いてインストールすると作業しやすい。

3. コンパイラを用意したら、windows用のgdライブラリをgdwin32をダウンロードする。
 通常のgdライブラリを使用するとリンクに失敗する。
 これはcygwin.dllに依存しないライブラリとcygwin.dllに依存するライブラリを混在させることにより不整合が発生するからだ。
 そのため、cygwin.dllに依存しないgdライブラリを下記のように取得する。

 $ svn checkout http://mscgen.googlecode.com/svn/trunk/gdwin32 /tmp/gdwin32


4. 次にようやくmscgenの存在するフォルダに移動してconfigureを実行する。

$ ./configure CC=i686-w64-mingw32-gcc CFLAGS="-mno-cygwin -DUSE_FREETYPE"
GDLIB_CFLAGS="-I/tmp/gdwin32/include"
GDLIB_LIBS="-L/tmp/gdwin32/lib -lbgd"


このコマンドを実行するとMakeファイルが作成されるのでメイクを実行する

$make
これによりsrcフォルダにmscgen.exeが作成されてる。

0.20のソースコードをWIndow7 64bitで32bitアプリケーションとしてビルドしたものを下記に置く。
 >> http://needtec.sakura.ne.jp/mscgen/mscgen.zip
インストーラでインストールしたexeを置き換えるとよい。
 ★Exeしかいれてない。bgd.dllがないと動かない。

■フォントの変更方法
フォントの変更方法は二種類ある。

1つは-Fパラメータを使用する方法だ。

mscgen -F "C:\Windows\Fonts\msmincho.ttc" -T png -i data.txt -o test.png


もう一つは環境変数「MSCGEN_FONT」を用いる方法だ。

set MSCGEN_FONT=C:\Windows\Fonts\msmincho.ttc
mscgen -T png -i data.txt -o test.png



■Doxygenで使用する方法
DoxygenWizerdのExpertのMSCGEN_PATHにmscgenのフォルダ名を設定する。

ヘッダコメント等に以下のような記述があると、シーケンス図を作成する。

/*@msc
*arcgradient = 0, width="800";
*
*bootstrap_code, dataset_controller, publisher, subscriber, PubSub_controller, EMS, Broker, ResourceRegistry;
*--- [label="define science data XP"];
*bootstrap_code->; PubSub_controller [label="declare science data XP"];
*PubSub_controller ->; EMS [label="declare science data XP"];
*EMS ->; Broker [label="declare science data XP"];
*EMS ->; ResourceRegistry [label="わっふるわっふる"];
*EMS << ResourceRegistry [label="OK"];
*PubSub_controller << EMS [label="OK"];
*bootstrap_code << PubSub_controller [label="OK"];
*--- [label="define new topic"];
*dataset_controller ->; PubSub_controller [label="define new topic(dataset name)"];
*PubSub_controller ->; ResourceRegistry [label="new Topic()"];
*PubSub_controller << ResourceRegistry [label="resource_id"];
*dataset_controller << PubSub_controller [label="resource_id"];
*--- [label="define/register a publisher"];
*publisher ->; PubSub_controller [label="register publisher"];
*PubSub_controller ->; ResourceRegistry [label="new Publisher"];
*PubSub_controller << ResourceRegistry [label="resource_id"];
*publisher << PubSub_controller [label="resource_id"];
*--- [label="publish! (or perish)"];
*publisher ->; Broker [label="send data"];
*... [label="see send diagram"];
*subscriber ->; PubSub_controller [label="subscribe(topic)"];
*PubSub_controller ->; EMS [label="new subscription"];
*EMS ->; Broker [label="bind to queue"];
*EMS << Broker [label="OK"];
*PubSub_controller << EMS [label="OK"];
*publisher ->; Broker [label="data"];
*subscriber <- Broker [label="data"];
*@endmsc
/



doxygenを実行する際に環境変数を指定して実行する

set MSCGEN_FONT=C:\Windows\Fonts\msmincho.ttc
"C:\Program Files\doxygen\bin\doxygen.exe" Doxyfile


正直、MSゴシックとかのフォントだと汚い。
b0232065_14141088.png


■参考
Issue 75: Failed to build native win32 executable
 http://code.google.com/p/mscgen/issues/detail?id=75
CygwinでMinGWコンパイル環境構築
 http://www.plustar.jp/lab/blog/?p=11983
[PR]
by mima_ita | 2013-03-30 14:17 | memo
<< VBAのIntやFixはバグっ... Jeditableを使用したイ... >>



実験ですお
検索
カテゴリ
最新の記事
.NET4.5におけるasy..
at 2014-07-02 00:46
.NETでTwitterを検..
at 2014-06-29 00:49
Redmineのプラグインで..
at 2014-06-28 03:29
IO.popenのwrite..
at 2014-06-28 03:25
RedmineのWikiでU..
at 2014-06-28 03:16
以前の記事
最新のトラックバック
その他のジャンル
ブログパーツ