2011年12月09日

blockdiagをemacsで編集しやすく

実はかなり前に作成したのですが,gitで公開する手間を面倒臭がったり,このブログを書くのを面倒臭がったりで紹介が遅れました.ごめんなさい.


もしかしたら,もう似たようなものが出ているかもしれませんね.その時は名前だけでもリネームしようかな.


blockdiag は簡単な図を作るのにかなり楽チン.
覚えると(覚える量もホント少ない.ユーザフレンドリー高し!)単純な図なら,例えば,作業ステップとか数分でかける.まぁそのくらいならパワポやExcelでもかけますが.Blockdiagのかなり優れていると思う点として,自分は次の2点を感じている.


1. PNG, SVG, PDF で吐き出せる.特にSVGで吐き出せるのできれいな図として作りたいときは嬉しい.


2. 修正が楽.多分これが一番の売り文句ではと思うのだけど,一度作った図面,特に,UMLのようなものを作成した場合に効果が大きい.


プロジェクトが進むに連れて,中身はより複雑に,管理・修正の手間はより煩雑になりやすい.特に2. の問題(修正・管理の手間)に貢献できるのがこのblockdiag.

線の引き直しや,ブロックの順番変更,
(seqdiagの場合)シーケンス図の並びを変えるのすらあっさりできる.1本1本の線を引き直す必要なんてない.
移動したい行を切り取って,新しい行に貼りつけるだけで他のシーケンスを触る必要なんてない.
また,差分をgit やmarcurial で管理して,変更履歴をとっておくこともできる!
管理ツールをソースコードと同じようにできるのは作業の煩雑性を抑えるのに良いです.




詳しくは,本家サイトでもみてください.とても良くメンテされています.このモチベーションを見習いたい.

http://blockdiag.com/en/blockdiag/index.html



さて,前置きが長くなりましたが,blockdiagは,いわゆるテキストエディタで編集して作っていくものなので,自分が普段使用しているエディタを用いるほうが作業効率は上がります.自分は,emacs 使いなので,blockdiag のコードに色付けしてくれたりする拡張モードが欲しいなと思ってました.



そんな時,見つけたのが,graphviz-dot.el.


参考: graphbiz-dot-mode.el
http://users.skynet.be/ppareit/projects/graphviz-dot-mode/graphviz-dot-mode.html



graphviz はblockdiag とも近くて,様々な図面を自由にかけるツールです.なので,ほとんどこの応用で(ほぼコピペ)blockdiag 向けのモードを作成することが出来ました.作成にあたっては,graphviz-dot.el の制作者であるPieterさんに連絡を取り,これを利用させてもらうことに快諾頂きました.


簡単なショートカットの例として,

Ctrl-c c でコンパイルをかけることも出来ます.
エラーが出なければ,Ctrl-c p でそのまま表示させることも出来ます.
M-; はコメントアウト,
C-cC-cでも同様,コメントアウト.
C-c p はプレビュー.



あとは,キーワードは適当に色付けしています.emacsの設定をガシガシいじっている方なら各自でできそうですが,何か追加して欲しいキーワードがあれば,requestください.



ちょっと問題があって,blockdiag / actdiag / netdiag / seqdiag など全てにおいて拡張子が同じ(*.diag)なので, 実行コマンドを自動的に切り分けることができないということ.


今は自分は,C-c c 実行時に,実行コマンドを書き換えたりしてるのだけど,ファイル形式から判断する方法あるのかなぁ.



こちらで公開しています.

■blockdiag-mode.el

https://github.com/maple/emacsfiles/blob/master/blockdiag-mode.el



※うれしいことに,作者の方に,コメント部で *.diag ファイルの中身を判断する例を教えていただいたので作り込むか考えます.(自分は,elipsはほとんど分からないのです…)

ラベル:blockdiag Emacs graphviz
posted by maplewine at 19:31| Comment(2) | TrackBack(0) | Computer | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
中の人です。

>今は自分は,C-c c 実行時に,実行コマンドを書き換えたりしてるのだけど,ファイル形式から判断する方法あるのかなぁ.

おおよそ推測できますが、わからないパターンがあります。
ここは blockdiag シリーズを作り始めたときの設計ミスです。

おすすめは図を書く際に diagram { ... } ではなく blockdiag { ... } や seqdiag { ... } と書くことです。
これでファイル先頭を確認すれば判別できるようになります。
Posted by tk0miya at 2011年12月13日 15:06
tk0miyaさん
よく見つけて下さいました!そして判別案ありがとうございます!
そうですね,そのように書きこむ癖を付けたいと思います.
そして判別する処理も考えてみます!
Posted by 管理人 at 2011年12月13日 23:43
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック