Q&A:Doxygenで構造を記述して各種UML図・メッセージシーケンスチャート・フローチャート等を出力するには?
Q:Doxygenで構造を記述して各種UML図・メッセージシーケンスチャート・フローチャート等を出力するには?
A:各種サポートツールを使用し、図の構造をテキスト等で記述し出力する。
自動的に出力される図については、下記を参照
『Q&A:Doxygenで自動的にクラス図・コラボレーション図(コミュニケーション図)・呼び出し関係図等を出力するには?』
詳細
各種サポートツール(PlantUML・Mscgen・Graphviz・Dia 等)を使用して出力する。
(以下Doxygenコマンド・設定項目は親サイトにリンク)
例は下記の設定で出力
PlantUML
図の種類
- UML
- シーケンス図
- ユースケース図
- クラス図
- アクティビティ図
- コンポーネント図
- 状態遷移図(ステートマシン図)
- オブジェクト図
- 配置図
- タイミング図
- UML 以外
- ワイヤーフレーム
- アーキテクチャ図
- 仕様及び記述言語(SDL)
- Ditaa
- ガントチャート
- マインドマップ
- WBS 図(作業分解構成図)
- AsciiMath や JLaTeXMath による、数学的記法
- ER図
設定
PlantUML をインストールし下記を設定する。(Java 及び シーケンス図とアクティビティ図 以外を出力するには、Graphviz も必要)
- PLANTUML_JAR_PATH【plantuml.jar ファイルのパス】:インストールパス
- PLANTUML_CFG_FILE【PlantUMLの設定ファイル】:設定ファイルを使用する場合に指定
- PLANTUML_INCLUDE_PATH【PlantUMLのインクルードファイルのパス (複数指定可)】:
!include
ステートメントを使用する場合に指定
使用方法
@startuml と @enduml の間のテキスト(PlantUML 言語)に従って、図を出力できる。
中間ファイルの “inline_umlgraph_cache_all.pu” でエラーになる場合は、実行前に削除する。
例
/// 関数の説明(PlantUML)
/// @par アクティビティ図
/// @startuml
/// start
/// if (判定 ? ) then(yes)
/// :処理A;
/// else (no)
/// :処理B;
/// endif
/// stop
/// @enduml
/// @par 状態遷移図(ステートマシン図)
/// @startuml
/// [*] --> 状態A
/// 状態A -> 状態B
/// 状態B --> 状態C
/// 状態C -> 状態A
/// 状態A --> [*]
/// @enduml
void funcPlantUML() {
}

Mscgen
図の種類
- メッセージシーケンスチャート(MSC:Message Sequence Chart)
設定
Mscgen をインストールし下記を設定する。(Doxygen 1.8.16 以降は組み込みの為、インストールは不要)
- MSCGEN_PATH【Mscgen実行ファイルパス】:インストールパス(Doxygen 1.8.16 以降は項目なし)
- MSCFILE_DIRS【mscファイルパス (複数指定可)】:@mscfile【シーケンスチャート:ファイル挿入】を使用する場合に指定
使用方法
@msc と @endmsc の間のテキスト(Mscgen 言語)に従って、図を出力できる。
テキストは外部ファイルに出すことが可能で、@mscfile で挿入する。
例
/// 関数の説明(Mscgen)
/// @par メッセージシーケンスチャート
/// @msc
/// c [label="Client"],s [label="Server"];
/// c=>s [label = "MSG1"];
/// c<=s [label = "MSG2"];
/// @endmsc
/// @par メッセージシーケンスチャート(ファイル)
/// @mscfile diagrams.msc
void funcMscgen() {
}
【diagrams.msc】
msc {
c [label="Client"],s [label="Server"];
c=>>s [label = "MSG3"];
c<<=s [label = "MSG4"];
}

Graphviz
図の種類
- ノード(各種形状)と エッジ(ノード間の関係:各種線分)で表現できる図
設定
Graphviz をインストールし下記を設定する。
- DOT_PATH【dotツールのインストールパス】:インストールパス
- HAVE_DOT【dotツールの使用有無】(Wizard-Diagrams-“Use dot tool from th GraphViz package”):YES
- DOTFILE_DIRS【DOTファイルパス (複数指定可)】:@dotfile【DOT:ファイル挿入】を使用する場合に指定
使用方法
@dot と @enddot の間のテキスト(DOT言語)に従って、図を出力できる。
テキストは外部ファイルに出すことが可能で、@dotfile で挿入する。
例
/// 関数の説明(Graphviz)
/// @par 図1
/// @dot
/// digraph {
/// layout = circo;
/// X -> A;
/// X -> B;
/// X -> C;
/// }
/// @enddot
/// @par 図2
/// @dotfile diagrams.dot
void funcGraphviz() {
}
【diagrams.dot】
digraph {
rankdir = LR;
node [shape = record];
l [label = "A|B|<c>C"];
r [label = "{<x>X|Y|Z}"];
l:c -> r:x [label = "c - x"];
}

Dia
図の種類
- UML
- フローチャート
- ER図
- データベース
- ネットワーク
- 回路図
- その他各種図
- 独自の図形の作成も可能
設定
Dia (MS Visio ライクな作図ソフト)をインストールし下記を設定する。
日本語化:インストール時に [English] を選択、[Translations] にチェックを付けたまま実行する。起動後、メニューの [入力メソッド] を [シンプル] に設定する。(Windows版 ver 0.97.2 で検証)
- DIA_PATH【Dia実行ファイルパス】:インストールパス
- DIAFILE_DIRS【Diaファイルパス (複数指定可)】:Dia 図表ファイルのパス
使用方法
Dia で作成した図表ファイルを @diafile で挿入する。
例
/// 関数の説明(Dia)
/// @par フローチャート
/// @diafile diagrams.dia
void funcDia() {
}

その他
図の種類
- 任意の図
設定
- IMAGE_PATH【画像ファイルパス (複数指定可)】 :画像ファイルのパス
使用方法
ドローイングソフト等で作成した画像ファイルを挿入する。