あーしかしスパムコメントが多い。FC2はほんと引っ越そうかなぁ…。次はどこがいいだろう?
さて、ここ数日、Microsoft製のアプリケーションに泣かされています。
まずExcel。Excelで対数グラフを書く事自体はさほど難しくないのですが、Excelの対数グラフは最大・最小に10の冪乗しか指定できません。
例えば音響系でよく使う、20〜20kHzまでの周波数特性グラフを書く場合、Excelでは10〜100kHzまでの範囲を指定する他ありません。よーするに左右が余るんですな。
で、同期の友人が先輩に
「f特グラフを描きたいんやけど、どうも普通にやったら左右に余白ができてしまうんやわ。マクロとかでどうにか余白をなくせへん?」
と頼まれた次第で。
で、私と同期で「まさか天下のExcel様がその程度の事できないわけないやろー。普通にできるんちゃうの?」って思ってググったところ、ほんとに出てこない。つーかできないって記事しか出てこない(笑)
mjskとか思いながら、んじゃ他のスプレッドシートだとどうなるんだろうと思ってOpenOffice.orgでチャレンジ。
その結果、至極あっさりと実現。うっそん、OOoやりおるなーと思ったんですが、ふとよく見るとなんか違和感が。
きっちりと範囲としては20〜20kHzで対数的に増加してるんですが、その増分値が10の巾乗じゃない。主目盛が「20,200,2000,20000」って感覚なんですね。それはちと具合が悪い。
ひっじょーに惜しいなーと思ったんで解決策はないかとググったところ、Gnumericというソフトが仕様を満たしてくれると書いてあったのでそちらをインストールしてれっつちゃれんじ。
その結果、こちらは完璧に要求通りのグラフを描いてくれました! やるなGnumeric、そしてオープンソース。そしてなんて使えないんだExcel2003!><
ちなみに、名誉のために言っておくと、Excel2007では実現できるらしいです。つーかそこまでできなかったのかよとかいうツッコミはなしの方向で。
で、なんとかOOoやGnumericで実現できましたが、そんなソフト私以外インストールしているはずもなく、Excelにて先輩に提出する必要があります。
で、OOoやGnumericは保存形式にExcel2003を選べますので、物は試しということでグラフの範囲を20〜20kHzにしてExcel形式で保存してみました。
で、それらのファイルをExcelで開いたところ、なんとちゃんと余白がないグラフになっているじゃないですか!
ただ、軸のラベルは「10〜100kHz」の範囲となっていました(苦笑)
先輩曰く、「軸のラベルは別になくても問題ない」とのことなので、軸のラベルをなくしてしまうことに。
んが、OOoで出力したものもGnumericで出力したものも、どちらもExcelで開いた時には主目盛が「20,200,2000,20000」になってました。んー、Excelへのコンバータは同じものを使っているのか…?
とりあえず、グラフの描画範囲としてはExcelの技術的には任意の範囲で対数グラフを描くことができるようです。ただ、それはExcel上からは操作できないらしい。だので、VBAマクロなら実現可能かもしれません。
まぁ、やり方すら分からないところからチャレンジするくらいなら、OOoでエクスポートしたExcelを使う方がよほど楽でしょう。なんでか知らないですがExcelで作成したファイルよりもファイルサイズが半分位になってましたし、Excelは無駄が多いのかもしれません(笑)
で、それを昨日やってたんですが、同期が先輩に状況を報告し忘れていたらしく、今日その先輩が「あれどうなった?」と尋ねに来ました。
かくかくしかじかでーって説明をしたところ、「ものによっては10Hzからのグラフを描いたりするから、10〜20kHzとかやるとどうなんの?」とのお言葉。
確かに、10Hzからのスタートなら主目盛の間隔は「10,100,1000,10000」になりそうです。
で、やってみたところドンピシャリ! OOoからExcel形式に保存してもちゃんと軸が10の巾乗で並んでくれました。
一応「こんなんできましたー」と先輩に報告。特にリアクションはなかったけれど、多分明日にはレスポンスが帰って来るでしょう。
なんでもやってみるもんです。
で、今日はさらに別の問題にぶち当たりました。現在、業務で使用する予定のツールをVB2008で書いているのですが、そいつが吐き出すXMLコメントのXMLファイルからドキュメントを生成しようと考えたんですね。
C#であればDoxygenで生成できるんですが、あいにくVBは非対応です。しゃーないのでなんかツールないかなーと探してたんですが、無料で使えるものの少ないこと少ないこと。
というか、事実上、Sandcastleしか出てきませんでした。
こいつ、Microsoft謹製のヘルプファイル生成ツールなんですが、アホみたいに使い辛い。出来上がるヘルプファイルは素晴らしいんですが、それを生成するための労力が掛かりすぎる。
なんせ、いくつかのツールを全部コマンドラインから実行する必要があります。おまけに引数がやたらめったら長いし。
そげなツールなので、GUIのフロントエンドがいくつか作られています。というか、今も精力的に更新を続けているツールはSandcastle HelpFileBuilderくらいなもんです。
まだDoxygenがC#に対応していなかった頃、一度だけSandcastleとSHFBにチャレンジしたんですが、そんときもめちゃくちゃ苦労したんですよね…。そんでもって出来上がったドキュメントは後のDoxygenよりも見にくいんだから救えない。
そんな記憶が蘇ってきた訳ですが、それからずいぶん時間も経ったので進化しているだろうと淡い期待を抱いておりました。
結果として、その期待は脆くも砕け散ります。Sandcastle自体は相変わらずCUIのみでの提供だし、M$からGUIツールの提供もなし(ExpressEditionだからかも知れません。上位エディションにはあるのかも。そんな記述見つかってないけど)。
で、SHFBは着実に進化しておりました。つーかタイミングが悪かったのか、ネット上に転がっている情報はSHFB1.17のものが多いのに、今リリースされているのはSHFB1.18。しかもここでガラリと仕様が変わったらしく、指南サイト通りに実行できない。
というかマニュアルの「Get Start」どおり、新規プロジェクトを作成しようとしてるのにそこで
「D:\SandcastleHelpFilebuilder.targetがimportできません。タグで宣言されたパスが正しいか確認してください」とかいう訳の分からないエラーが出て作成できないし。
事実そんなファイルありません。つーか指定した覚えもないし、なんでそんなパスが指定されるのかも意味不明。プロジェクトファイルをD:の階層(実際はもっと深い)に配置しようとしたからD:\うんたらって言われますが、C:の階層に置けばC:\うんたらと文句を言われます。
で、エラーメッセージ通りにググったけれどもそんな報告見つからない。私にはこれが限界でした。
つーかドキュメントを作るためだけに何でこんなに苦労せにゃならんのかと小一時間問い詰めたい。
C#ならDoxygenで作れるから、VB.NETC#のコンバータを掛けてしまおうかしら。別にドキュメントが欲しいのであってビルドできるか、とか実行できるかってのは重視しないしね。
最悪その形でいこう。明日古いバージョンのSHFBも試してはみるけれど、ほんと使いにくいったらありゃしない。M$の社員はアレ使ってるんだろうか…?
過去の遺産を見る限り、うちの部署でプログラムにコメント埋めてそれからドキュメント生成って事はまったくしてないようだしなぁ。誰も見やしない仕様書を書いていることだろう。
あんなもんに工数掛けるくらいならもっと意味のある文書を作ればいいのにね。まぁ、アウトプットがないと仕事をしている証拠にならないからしゃーないっちゃしゃーないんだけど。
ほんと、なんかどこかずれてる気がするわー…。