しょんぼり技術メモ

まいにちがしょんぼり

nwdiagで手軽にネットワーク図を作成

感動したのでメモ。環境はMac OS X SnowLeopard/homebrew。

インストール

$ brew install python
$ /usr/local/share/python/pip install --upgrade distribute
$ /usr/local/share/python/pip install pil
$ /usr/local/share/python/pip install nwdiag
$ /usr/local/share/python/pip install blockdiagcontrib-cisco
$ /usr/local/share/python/pip install reportlab

いろいろ試行錯誤した結果なので何か抜けてるかも。blockdiagcontrib-ciscoCiscoアイコンを使うためのパッケージ、reportlabはPDF形式で出力するためのパッケージ。

とりあえず書いてみる

http://blockdiag.com/nwdiag/build/html/examples.html#simple-diagramhttp://blockdiag.com/blockdiag/build/html/examples.htmlを参考に。

diagram{
  network network1 {
    address = "192.0.2.0/16";

    node1
    node2 [address="192.0.2.2"];
    node3 [address="192.0.2.3"];
  }

  network "network-2" {
    address = "10.0.0.0/8";

    node3    [address="10.0.0.3"];
    "node-4" [shape="cloud"];
    "ルータ" [address="10.0.0.254", shape="cisco.router"];
  }

  group some_group_1 {
    label="グループ1";

    node1
    node2
  }
}

次のようにして実行する。フォントはお好みで。

$ /usr/local/share/python/nwdiag --font=/Library/Fonts/Osaka.ttf --antialias fig1.diag

"--font"でフォントを指定。"--antialias"でアンチエイリアスのかかった画像を出力。出力ファイル名を省略すると、ファイル名.pngで出力されるようだ。この例だと、次のようなfig1.pngが得られる。

$ /usr/local/share/python/nwdiag --font=/Library/Fonts/Osaka.ttf --antialias -T pdf -o output.pdf fig1.diag

"-T pdf"でPDF出力。"-o filename"で出力ファイル名を指定。こうすると、output.pdfが得られる。

…ところで、PDFだとCiscoアイコンがひっくり返ってしまうのはなんでだろう…?

Ciscoアイコンの一覧はblockdiagcontrib-cisco — blockdiagcontrib.cisco quick reference v documentationを参照。

ブラウザで試す

nwdiagのほかにも、ベースとなったblockdiag、シーケンス図のseqdiagやアクティビティ図のactdiag、本家ともいえるgraphvizなどもブラウザ上で試せる。これは素晴らしい。