LoginSignup
39
38

More than 5 years have passed since last update.

ブロック図生成ツール blockdiagを導入してみました

Last updated at Posted at 2014-10-06

はじめに

■blockdiagとは

公式サイトより
http://blockdiag.com/ja/index.html

blockdiag シリーズはシンプルなテキストからブロック図などの画像を生成する画像生成ツール群です。

■今回試したこと

「テキストベースの定義ファイルから画像ファイルを生成」
こちらを試してみました。

■参考サイト

・公式サイトより、CentOS6.2の場合
http://blockdiag.com/ja/blockdiag/introduction.html#centos-6-2

・公式サイトより、実行方法、フォント設定
http://blockdiag.com/ja/blockdiag/introduction.html#id10

▽その他
マウスなしで図が描ける!blockdiagに惚れました
http://d.hatena.ne.jp/torazuka/20110620/blockdiag

導入

■環境

AWS EC2(CentOS 6.5)
Python 2.6.6

■インストール

# yum install python-setuptools python-imaging ipa-gothic-fonts
# easy_install blockdiag

※easy_installとは、pythonのsetuptoolsに含まれるコマンドラインツール。web上からパッケージをDLしインストールする。

▽エラー対処2より

# yum install python-devel zlib-devel libjpeg-devel

▽エラー対処4より

# yum install freetype-devel.x86_64

▽エラー対処1より

# easy_install pillow
# easy_install webcolors
# easy_install funcparserlib

▽エラー対処3より

# easy_install -U reportlab==2.5

▽インストール確認(pythonパッケージ)

# pip freeze | grep -i "blockdiag\|pillow\|webcolors\|funcparserlib"

設定

■フォント

▽実行時にフォントを指定する場合

$ blockdiag -f /usr/share/fonts/ipa-gothic/ipag.ttf simple.diag

▽$HOME/.blockdiagrcにて定義する場合

$ vi $HOME/.blockdiagrc
--------------------
[blockdiag]
fontpath = /usr/share/fonts/ipa-gothic/ipag.ttf

動作確認

ブロック図を生成するには blockdiag コマンドを実行する。
※公式サイトで謳っているexampleが格納されていないため手動で作成。

■ディレクトリ移動

まずは作成する画像が表示できるwebサーバのdocumentroot配下に移動する

# cd /var/www/html

■シンプルなブロック図より

# vi simple.diag
-----------------
blockdiag {
   A -> B -> C -> D;
   A -> E -> F -> G;
}

・ブロック図を生成

# blockdiag simple.diag
# blockdiag -Tsvg simple.diag
# blockdiag -Tpdf simple.diag
※上からPNG形式、SVG形式、PDF形式

・ブラウザから確認
http://example.com/simple.png
20141006_blockdiag_sample01.png

http://example.com/simple.svg
20141006_blockdiag_sample02.png

http://example.com/simple.pdf
20141006_blockdiag_sample03.png

■日本語の利用より

# vi nippon.diag
-----------------
blockdiag admin {
   // Set M17N text using label property.
   A [label = "起"];
   B [label = "承"];
   C [label = "転"];
   D [label = "結"];

   A -> B -> C -> D;

   // Use M17N text directly (need to quote).
   春 -> 夏 -> 秋 -> 冬;

   // Use M17N text including symbol characters (need to quote).
   "春は 曙" -> "夏 = 夜" -> "秋.夕暮れ" -> "冬 & つとめて";
}

・ブロック図を生成

# blockdiag nippon.diag
# blockdiag -Tsvg nippon.diag
# blockdiag -Tpdf nippon.diag
※上からPNG形式、SVG形式、PDF形式

・ブラウザから確認

http://example.com/nippon.png
20141006_blockdiag_sample04.png

http://example.com/nippon.svg
20141006_blockdiag_sample05.png

http://example.com/nippon.pdf
20141006_blockdiag_sample06.png

補足

■エラー対処1

・diagコマンド実行時に下記エラーが出力された場合

# blockdiag simple.diag
--------------------
Traceback (most recent call last):
  File "/usr/bin/blockdiag", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 2655, in <module>
    working_set.require(__requires__)
  File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 648, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 546, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: Pillow

・pillowがインストールされていないことを確認

# pip freeze | grep -i "pillow\|webcolors\|funcparserlib"
※pipとは、Pythonにおけるパッケージ管理システム

・pillowのインストール

# easy_install pillow

▽pillow導入後だと下記エラー

pkg_resources.DistributionNotFound: webcolors

・webcolorsのインストール

# easy_install webcolors

▽webcolors導入後だと下記エラー

pkg_resources.DistributionNotFound: funcparserlib

・funcparserlibのインストール

# easy_install funcparserlib

・導入確認

# pip freeze | grep -i "pillow\|webcolors\|funcparserlib\|reportlab"
Pillow==2.6.0
funcparserlib==0.3.6
webcolors==1.4

■エラー対処2

▽pillowインストールにて下記エラーが出力された場合

(省略)
_imaging.c:3570: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘init_imaging’
error: Setup script exited with error: command 'gcc' failed with exit status 1

・下記パッケージを導入する(フォーラムより)

# yum install python-devel zlib-devel libjpeg-devel
------
zlib-devel-1.2.3-29.el6.x86_64
libjpeg-turbo-devel-1.2.1-3.el6_5.x86_64
python-devel-2.6.6-52.el6.x86_64

・対処、下記パスを通す(フォーラムより)

# export CFLAGS=-Qunused-arguments
# export CPPFLAGS=-Qunused-arguments

・改めてインストールコマンド実行

# easy_install pillow

■エラー対処3

▽PDF形式のブロック図を作成出来ない場合

# blockdiag -Tpdf simple.diag
ERROR: unknown format: PDF

▽reportlabをインストールする

easy_install -U reportlab==2.5

※注釈: 最新版reportlab3.1.8は、下記より私の導入しているpythonをサポートしていないようなので古いversionを導入しています。

# python
Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36)

>>> import reportlab
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/site-packages/reportlab-3.1.8-py2.6-linux-x86_64.egg/reportlab/__init__.py", line 11, in <module>
    raise ImportError("""reportlab requires Python 2.7+ or 3.3+; 3.0-3.2 are not supported.""")
ImportError: reportlab requires Python 2.7+ or 3.3+; 3.0-3.2 are not supported.

■エラー対処4

▽日本語を含むサンプルブロック図を作成しようとした際

# blockdiag nippon.diag
ERROR: The _imagingft C module is not installed

▽参考サイト
[python]PILで_imagingftのインポートエラーが出た場合
http://d.hatena.ne.jp/pashango_p/20110919/1316408103

要はPILのコンパイル時にFreeType2がインストールされていなかった事が原因。
Linux(OpenSuse)ならば、「freetype2-devel」パッケージをインストールしてから、PILをインストールすれば解決する。

▽freetype-develをインストール

# yum install freetype-devel.x86_64

▽PILをアンインストール・インストール
(公式サイトより)PIL パッケージの再インストール

# easy_install -m PIL
# \rm -rf /usr/lib/python2.6/site-packages/PIL-1.1.7-py2.6-linux-x86_64.egg

# easy_install PIL

▽pillowも再インストール

# easy_install -m pillow
# \rm -rf /usr/lib/python2.6/site-packages/Pillow-2.6.0-py2.6-linux-x86_64.egg

# easy_install pillow

▽上記設定後、再度コマンドを実行すると無事PDF形式にて出力出来ました。

# blockdiag nippon.diag

# ls -l nippon.pdf
-rw-r--r-- 1 root root 20415 10月  6 16:47 2014 nippon.pdf

以上になります。

39
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
38