blockdiagの文法まとめ


# ■ blockdiagとは

特定の書式に従ったテキストファイルを、png,svg,pdfなどの様々な形式の画像ファイルに変更するオープンソース。

以下のデモサイトでもテストができる。
http://blockdiag.com/ja/blockdiag/demo.html

# ■ インストール手順

Windowsでのインストール手順。

```
$ pip install webcolors
$ easy_install pillow
$ easy_install blockdiag
```
http://blockdiag.com/ja/blockdiag/introduction.html

# ■ 実行方法

下記のようなファイルを用意する。

```
blockdiag {
    // 記号が先頭だとコメントになる模様
    /* コメント */
    # コメント
    ( コメント
    > コメント
    " コメント"

    // フォント等の設定を行う
    default_fontsize = 24;

    // -,>を使って矢印の向きを使う
    node_id1 -> node_id2;
    node_id3 <- node_id4;
    node_id5 -- node_id6;
    node_id7 <-> node_id8;

    // 複数のノードのグループ化ができる
    // グループにしたノードは色枠で囲まれる
    group {
        node_id6; node_id8;
    }

}
```

```
# png変換
$ blockdiag simple.diag
# svg変換
$ blockdiag -Tsvg simple.diag
```


# ■ ラベル属性

ノードの形状、ノード上のフォントの設定を変更するための属性。

|**項目**|**項目内容**|**設定値**|**設定値内容**|**設定例**|**デフォルト値**|
|---|---|---|---|---|:---:|
|label = String|ノードに表示される文字列を定義。|||B [label = "Title"];|省略時は ノードIDがラベルとなる。|
|style = Type of line|ノードを囲む境界線の種類を指定。||||省略時は実線。|
|||dotted|点線。|B [style = dotted];||
|||dashed|破線。|C [style = dashed];||
|||Number, Number, ...|線の長さ、空白の長さをカンマ区切りで交互に指定。|D [style = "3,3,3,3,15,3"];||
|color = #RRGGBB or colorname|ノードの背景色を指定。||||指定がない場合は白。|
|||none|透明色|B [color = none];||
|||pink,red,blue,greenなど|指定した色|C [color = pink];||
|||#NNNNNN|#NNNNNN形式|D [color = "#888888"];||
|numbered = Integer|ノードの右上に表示させる番号を指定。|||B [numbered = 99];
C [numbered = A];||
|shape = Type of shape|ノードの形状を指定。||||省略時は box|
|||box|四角形|A [shape = "box"];||
|||routebox|丸み帯びた四角形|A [shape = "roundedbox"];||
|||diamond|ひし形|A [shape = "diamond"];||
|||eclipse|楕円|A [shape = "ellipse"];||
|||cloud|雲|A [shape = "cloud"];||
|||note|テキストファイルの抽象図形|A [shape = "note"];||
|||mail|メールの抽象図形|A [shape = "mail"];||
|||actor|人間|A [shape = "actor"];||
|||minidiam|小ひし形|A [shape = "minidiamond"];||
|||beginpoint|始点（黒点）|A [shape = "beginpoint"];||
|||endpoint|終点（2重丸）|A [shape = "endpoint"];||
|||dots|縦方向の3つの黒点|A [shape = "dots"];||
|||flowchart.condition|分岐（ひし形）|A [shape = "flowchart.condition"];||
|||flowchart.database|データベース（円柱）|A [shape = "flowchart.database"];||
|||flowchart.input|入力ファイル（ひし形）|A [shape = "flowchart.input"];||
|||flowchart.loopin|繰り返し処理開始|A [shape = "flowchart.loopin"];||
|||flowchart.loopout|繰り返し処理終了|A [shape = "flowchart.loopout"];||
|||flowchart.terminator|処理（丸み帯びた四角形）|A [shape = "flowchart.terminator"];||
|background = background image|ノードに表示する背景画像を指定。ファイルパス、または URL で指定する。|||A [label = "", background = "_static/python-logo.gif"];||
|stacked|複数のノードを重ね合わせた状態にする。|||A [stacked];
B[shape = "ellipse", stacked];||
|description = description|Sphinx 拡張で desctable オプションを利用している場合、図の下に各ノードの説明表を表示。|||C [label = "タイトル", description = "説明"];||
|icon = Image file|ノードに表示させるアイコン画像を指定する。ファイルパス、または URL で指定。|||A [icon = "_static/feed-icon-legacy_orange.png"];
||
|textcolor = #RRGGBB or colorname|ノードのラベル文字列の色を指定。||||省略時は黒。|
|||none|透明色|B [textcolor = none];||
|||pink,red,blue,greenなど|指定した色|C [textcolor = pink];||
|||#NNNNNN|#NNNNNN形式|D [textcolor = "#888888"];||
|width = Integer|ノードの幅を指定。||||省略時は128。|
|height = Integer|ノードの高さを指定。||||省略時は40。|
|fontsize = Integer|ノードのラベル属性のフォントサイズを指定。||||省略時は11。|
|rotate = Integer|ラベルの回転角を指定する。0, 90, 180, 270 のいずれかの値を設定できる。||||省略時は0。|
|||0||||
|||90||||
|||180||||
|||270||||


# ■ エッジ属性

ノード間を結ぶ線。

|項目|項目内容|設定値|設定値内容|設定例|デフォルト値|
|---|---|---|---|---|:---:|
|label = String|短い文をエッジに表示。|||||
|style = Type of edge line|エッジの線の種類を指定。||||省略時は実線|
|||dotted|点線で繋ぎます。|A -> B [style = dotted];||
|||dashed|破線で繋ぎます。|B -> C [style = dashed];||
|||none|エッジを消。|C -> D [style = none];||
|||Number, Number, ...|線の長さ、空白の長さをカンマ区切りで交互に指定。|D -> E [style = "3,3,3,3,15,3"];||
|hstyle = Type of head shape|矢印の形状を指定。|||||
|||generalization|汎化 |A -> B [hstyle = generalization];||
|||composition|コンポジション |B -> C [hstyle = composition];||
|||aggregation|集約 |C -> D [hstyle = aggregation];||
|color = #RRGGBB or colorname|エッジの色を指定。||||省略時は黒。 |
|||none|透明色|B -> C [color = "none"];||
|||pink,red,blue,greenなど|指定した色|B -> C [color = "pink"];||
|||#NNNNNN|#NNNNNN形式|B -> C [color = "#888888"];||
|dir = direction|矢印の向きを指定。|||||
|||none|矢印を書かずにノードを繋ぐ。|A -> B [dir = none];||
|||forward|矢印を左のノードから右のノード、または上のノードから下のノードに向かって書く。|B -> C [dir = forward];||
|||back|矢印を右のノードから左のノード、または下のノードから上のノードに向かって書く。|C -> D [dir = back];||
|||both|矢印を両方に書く。|D -> E [dir = both];||
|folded|エッジを折り返す。|||C -> D [folded];||
|textcolor = #RRGGBB or colorname|エッジのラベルの色を指定。省略時は黒。|||||
|||none|透明色|A -> B[label=title, textcolor=none];
||
|||pink,red,blue,greenなど|指定した色|A -> B[label=title, textcolor=pink];
||
|||#NNNNNN|#NNNNNN形式|A -> B[label=title, textcolor=#888888];
||
|thick|エッジを太く。|||B -> D[thick];||
|fontsize = Integer|エッジのラベルのフォントサイズを指定。|||A -> B [label='text', fontsize=16];|省略時は11。|


# ダイヤグラム属性

図形全体の設定。

|項目|項目内容|設定値|設定値内容|設定例|デフォルト値|
|---|---|---|---|---|:---:|
|node_width = Integer|ノードの幅を指定。|||node_width = 200;|省略時は128。|
|node_height = Integer|ノードの高さを指定。|||node_height = 100;|省略時は40。|
|span_width = Integer|ノード間の横幅を指定。|||span_width = 240;|省略時は64。|
|span_height = Integer|ノード間の縦幅を指定。|||span_height = 120;|省略時は40。|
|default_fontsize = Integer|ノードのラベル属性に使用するフォントサイズを指定。|||default_fontsize = 24;|省略時は11。|
|default_shape = Shape|ノードの形状のデフォルトを指定。||||省略時はbox。|
|||box|四角形|||
|||routebox|丸み帯びた四角形|||
|||diamond|ひし形|||
|||eclipse|楕円|||
|||cloud|雲|||
|||note|テキストファイルの抽象図形|||
|||mail|メールの抽象図形|||
|||actor|人間|||
|||minidiam|小ひし形|||
|||beginpoint|始点（黒点）|||
|||endpoint|終点（2重丸）|||
|||dots|縦方向の3つの黒点|||
|||flowchart.condition|分岐（ひし形）|||
|||flowchart.database|データベース（円柱）|||
|||flowchart.input|入力ファイル（ひし形）|||
|||flowchart.loopin|繰り返し処理開始|||
|||flowchart.loopout|繰り返し処理終了|||
|||flowchart.terminator|処理（丸み帯びた四角形）|||
|orientation = portrait|縦書きモードに。||||省略時は横書きモード。|
|default_node_color = #RRGGBB or colorname|ノードのデフォルトの色を指定。||||省略時は白。|
|||none|透明色|default_node_color = none;||
|||pink,red,blue,greenなど|指定した色|default_node_color = pink;||
|||#NNNNNN|#NNNNNN形式|default_node_color = "#888888";||
|default_group_color = #RRGGBB or colorname|グループのデフォルトの色を指定。||||省略時はオレンジ。|
|||none|透明色|default_group_color = none;||
|||pink,red,blue,greenなど|指定した色|default_group_color = pink;||
|||#NNNNNN|#NNNNNN形式|default_group_color = "#888888";||
|default_linecolor = #RRGGBB or colorname|ノードの枠とエッジのデフォルトの色を指定。||||省略時は黒。|
|||none|透明色|default_linecolor = none;||
|||pink,red,blue,greenなど|指定した色|default_linecolor = pink;||
|||#NNNNNN|#NNNNNN形式|default_linecolor = "#888888";||
|default_textcolor = #RRGGBB or colorname|ノードラベル、エッジラベル、グループラベルのデフォルトの色を指定。||||省略時は黒。|
|||none|透明色|default_textcolor = none;||
|||pink,red,blue,greenなど|指定した色|default_textcolor = pink;||
|||#NNNNNN|#NNNNNN形式|default_textcolor = "#888888";||
|edge_layout = normal or flowchart|Experimental エッジレイアウトルールを指定。|||||

---


## ■ 参考サイト

* https://gist.github.com/hashrock/208b84c61558663e40bb