2009年1月31日土曜日

つまらないけど重要

趣味で開発している時には問題にならないけど、仕事で開発となるとついてまわるのが仕様書の問題。特に大きい会社では仕様書を書くのに割く時間は馬鹿にならない。ソフトウェアの場合、doxygenみたいなツールを使えば、わりとつまらない図を書いたりする時間も削減できたりするんだけど、ハードウェアだとなかなか良いツールがない(知らないだけ?)。

という事で、ソースから図を自動生成しようかな・・・とか考える。とりあえず
  • スクリプトでお手軽かつ適当に生成したい(テキストベースが楽ちん)
  • Wordに貼付けた際に汚くならない(ベクトルデータが良い)
って方針ですか。そう考えて思い出したのがSVG。XMLが出てきた当時、どう使うと便利なんだろう・・・とか思い悩んだもんですが、今や空気みたいなもんですね。出力するにはテキストが楽。でも入力時に解析するにはバイナリの方が楽。。。そんなわがままを受け入れてくれるのがXMLのうれしいところです。

さっそくSVGの仕様書(*1)を眺めてみたわけですが、結構シンプルで簡単。仕様書にも図付きでサンプルが載っていて、みながら数分で基本的な図形は作れるようになります。あとは、ここで理解したタグをスクリプトから自動生成してやるだけ。RTLからの変換にはRubyを使いました。って事でできたのが下の図。こんな馬鹿げた図でも、VisioやExcelでヘロヘロ作っていたらどんどん時間が飛んでいきます。くだらない事にタラタラ時間使って「忙しい」とか言う人間にはなりたくないものです。作業の効率化は研究者、技術者にとって永遠の課題です。

ソースはこんな感じ。お手軽ですよね。
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<g>
<text fill="black" x="62" y="50" font-size="6">RI2S1_DATA</text>
<line stroke="black" stroke-width="1" x1="50" y1="53" x2="250" y2="53"/>
<polygon fill="black" stroke="black" stroke-width="1" points="244,50 244,56 250,53"/>
</g>
... 中略 ...
</svg>
生成したSVGのプレビューや変換にはInkscape(*2)を使いました。Ubuntuからはapt-getでヘロっとインストールできました。EPSへの変換ができます。SVG Import Filter(*3)を使えばOpenOffice経由で色々と変換も可能。いきなりWMFとかにも出来るんだけど、グループ化を解除すると黒い豆腐になる問題があって、どういう経路で変換するのがベストかは今のところ模索中です。

*1: Scalable Vector Graphics (SVG) 1.1 Specification
*2: Inkscape
*3: SVG Import Filter for OpenOffice 2.0

0 件のコメント: