blockdiag以外の派生もいくつかあります.actdiagとかネットワーク図に対応したものとか.
でもblockdiagだけでもオブジェクトの形が複数選択できて,色付けできて,矢印の種類や方向も変えられるので色々遊べます.
使ってて楽しいツールの存在って本当に嬉しい.
PlantUMLもGUI用ソフトもあったりでいいんだけど日本語が使えないのが残念.
もともとこれらに挑戦してたのはsphinxに埋め込みたいという理由があったのだけど,実はまだうまく動いていない.でも単体でもPDFやsvgファイル,画像ファイルと出力できるのでこれでも十分.画像ファイルは文字の解像度が悪いのが難点かな…
PDFで作成することにしてるので回避手段はあるから気にしない.さて,インストールについて,つまずいた点をメモする.
blockdiagを使ってみようと思ってインストールしたのですがエラーが出たので
その対応をメモ.
blockdiag.
http://tk0miya.bitbucket.org/blockdiag/build/html/introduction.html#by-easy-install
上記でダウンロード・インストール方法,使い方が書かれています.
blockdiagを使うメリット.
・テキストの追加・削除で図が変更できるので修正が簡単.
(図の挿入は,整形に非常に気を使う.)
・テキスト管理になるのでバージョン管理もできる.
が挙げられる.
↓このプレゼン資料に共感した方は試してみて!
私を今日悩ませたエラーくん.
-------------------------------------
% blockdiag.exe test.diag
Traceback (most recent call last):
File "C:\Python27\Scripts\blockdiag-script.py", line 8, in
load_entry_point('blockdiag==0.8.0', 'console_scripts', 'blockdiag')()
File "C:\Python27\lib\site-packages\blockdiag-0.8.0-py2.7.egg\blockdiag\command.py", line 133, in main
draw.draw()
File "C:\Python27\lib\site-packages\blockdiag-0.8.0-py2.7.egg\blockdiag\DiagramDraw.py", line 110, in draw
self.node(node, **kwargs)
File "C:\Python27\lib\site-packages\blockdiag-0.8.0-py2.7.egg\blockdiag\DiagramDraw.py", line 245, in node
font=self.font, badgeFill=self.badgeFill)
File "C:\Python27\lib\site-packages\blockdiag-0.8.0-py2.7.egg\blockdiag\noderenderer\__init__.py", line 54, in render
self.render_label(drawer, **kwargs)
File "C:\Python27\lib\site-packages\blockdiag-0.8.0-py2.7.egg\blockdiag\noderenderer\__init__.py", line 68, in render_label
lineSpacing=self.metrix.lineSpacing)
File "C:\Python27\lib\site-packages\blockdiag-0.8.0-py2.7.egg\blockdiag\ImageDrawEx.py", line 251, in textarea
lines = TextFolder(box, string, scale=self.scale_ratio, **kwargs)
File "C:\Python27\lib\site-packages\blockdiag-0.8.0-py2.7.egg\blockdiag\utils\PILTextFolder.py", line 14, in __init__
self.ttfont = ImageFont.truetype(font, fontsize)
File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 218, in truetype
return FreeTypeFont(filename, size, index, encoding)
File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 134, in __init__
self.font = core.getfont(file, size, index, encoding)
File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 34, in __getattr__
raise ImportError("The _imagingft C module is not installed")
ImportError: The _imagingft C module is not installed
-------------------------------------
と言われてしまう.
でもイメージモジュール Python Imaging Library 1.1.5 or later.はインストールしてるよ.
% python
>> import PIL
>>
PILがインストールされていないと,"import PIL"を実行した時点でエラーになります.それが出ないのでインストールはされている.
調べると,エラーに書いてあるとおり,自分のインストールしているPILはlibfreetype なしでコンパイルされていることが原因らしい.
なので,libfreetypeを含んでコンパイルしたものをインストールする必要があり,そのWindows向けインストーラは以下に置いてあります.
http://www.lfd.uci.edu/~gohlke/pythonlibs/
他にもここにはPython Cモジュールがたくさんあります.これで無事ブロック図が作成された.
その他オプション:
参考:"blockdiag でいろいろ書いてみる ? Stop Making Sense"
http://99blues.dyndns.org/blog/2010/12/blockdiag-%E3%81%A7%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%BF%E3%82%8B/
'--antialias'オプションを付けると、文字のギザギザがなくなり綺麗になります。
$ blockdiag --antialias bom.txt
改行する時は '\n' を挿入します。
'--' で無向グラフ(矢印なしの線) になります。
有効グラフ(矢印あり)の場合、'->', '<-', '<->' が使えます。
↓こんな感じで書くと,色で括られます.
group{
color = aquamarine;
submarine; submarine1; submarine2;
}
-T オプションでSVG/PDF出力.
- SVG
% blockdiag -Tsvg sample.diag
% blockdiag -Tpdf sample.diag
"//"以降の同じ行内はコメント扱い.