デバッグはかっこ悪い,テストはクールだというけれど
最近,プログラミングにおいては,テストを書いて,そのテストを通るコードを書いていくことで開発を進めていく”てすとどりぶんでべろっぷめんと”というのが流行っているらしい.
僕も流行りに乗ってTDDしたいのだが,どうやったら良いかわからない.というのも,機械学習のプログラムとか書いていて,どうやってテストしたら良いのだという関数が結構多い.WEB+DBプレスで初心者向けの特集があったが,この関数はこの入力の時はこういう値が返って欲しいとかそういうのは簡単だけど,そうでも無いときが結構多くて大変だと思う.人間が良くわからないから機械に勝手に計算してもらうのが機械学習なわけだし.
まあ,こういうこと言ってる時点で的外れなんだろうなあ.
最近,自分で作っているプログラムのリファクタリングをしたときに結構大変だったので,TDDいいなあと思った次第.
しかし,既存のツールがあるようなアルゴリズムの場合は比較すれば正しいかどうかはわかるが,自分で考えたような新しいアルゴリズムの場合,その正しさはどうやって示せば良いのだろう.
なんかうまく動いてるからできた!というのでは心許ない.機械学習系の場合は経験上すこしでも間違ってると全然うまくいかないので,それでもそれなりに良いのかもしれないが.
研究用ツールをソフトウェアとして公開するということ
わたしはSPOJUS++という音声認識器(デコーダ)を作っている.*1最近tri-phoneにも対応したので,そろそろ公開しても大丈夫かなという状況になりつつある.とりあえず夏までにドキュメントを書いて,公開したい.
もちろんソースコード込みでOSSとして公開するつもりなのだが,研究用ソフトウェアを公開するということには恐れもある.
何故かと言ったらバグが怖い.
バグによって本当は有効だった手法が有効でないと判断されたりすることも有り得ないわけではない.
普通の日曜プログラミングの成果を公開するなら別にどうってことないのだが,研究用となるとちょっと躊躇するところがある.もちろん,日曜プログラミングとかでも,セキュリティ上損害を与えたりするとなると問題だが.
もちろんバグとか保障しないよという意味でのオープンソースという側面もあるとは思うけど,ツールとして使うだけなら普通はソース読まないと思う.
絶対これはおかしいと思ったら読むかもしれんが,通常はバグなんかないと思って使うんじゃないかなあ.
ということで,主に研究用途のプログラムを公開してる人とか尊敬しますよね.
まあ,SPOJUS++はわたしが始めて書いたC++のプログラムなので,恥ずかしすぎて公開に躊躇するというのも大いにあるんですけどね.
いつも酒を飲んでからブログを書き出すので,まとまりとかないのだが,まあ,それも一興ということで.
ちくわ旨し
最近ちくわにはまっている.
私が現在住んでいる豊橋の名産ということで,ちくわを買ってしまうのだが,これがうまい.
信じられないほどうまい.
最近のビールのお供はもっぱらちくわである.
皆さんも是非ちくわ食べてください.
うまいですよ.
ええ.
そういえば先週は学振の書類を書いていました.
実際,見栄えが大事とかどうなのとか思いますが(大事なのはいうまでもないが,他分野で価値のある研究なんてわかるはずない中で,書き方で選ばれるというのはどうなのか.いやわかってるんですよ,人間そんなもんだってのは),凄い人は普通に通っているので,凄い人であるためには十分条件ではないが必要条件とはなっているのかもしれませんね.
じぶんはG-COEで給料を貰っていて学振が通ってもあまり状況が変わらないのでモチベーションがあがりませんでしたが(本当は状況が変わりまくるはずなのでモチベーションは上がるべき),なんとか頑張って最終的には形にできたかなあと思います.
作成する時間は短かったですが,いつも研究については同僚に夢を語っていて,それをそのまま文章にすれば良かったので対作成時間比では良いものができたんじゃないかと.
「〜は申請者が提案した手法であり」とか「この研究は非常に大きなインパクトを与える可能性がある」とか書いて悦に浸ったりね.
しかしdesireが欲しい
明日も多分ブログ書きます
ptexlive2009のインストールで [platex tate] test を通す
FreeBSD8.0-STABLE #0でptexlive2009をインストールしたときに,
[platex tate] test
を通したときのメモ.
こういうのは本当に書いておかないと忘れて同じ過ちを繰り返すはずなのでメモ.
ptexlive2009ではptexlive.sampleをptexlive.cfgにコピーした後,コメント箇所を外すなどして設定を書いていくらしいのだが,ptexlive.cfgには
### (任意) 既にライブラリが存在すれば、それを使う # conf_option --with-system-zlib # conf_option --with-system-libpng # using system-zlib # conf_option --with-system-freetype2 # using system-zlib # conf_option --with-system-gd # using system-libpng, system-freetype2 # conf_option --with-system-t1lib # conf_option --with-system-freetype # conf_option --with-system-xpdf ### OS 付属の freetype2 は pxdvi の縦書きに必要な otvalid モジュールが ### 無効になっていることが多いので注意。 ### '--with-system-gd' は '--with-system-freetype2' も意味する。
のような箇所があって,どうにもシステムのfreetype2を使わないぽいのだが,どうやら自分の環境ではバリバリにシステムのfreetype2を使ってしまって,以下のような警告がでてテストが通らなかった.
warning: FT_OpenType_Validate is disabled. Replace FreeType2 with otvalid-enabled version.
これはfreetype2でotvalidというモジュールが有効になっていない場合にでるらしい.
自分はfreetype2を /usr/ports/print/freetype2 から入れていたのだが,通常の入れ方では有効にならないようだ.
そこで
# cd /usr/ports/print/freetype2/ # make config
とかやってみたのだが,設定できるオプションは無いと言われてしまった.
仕方ないので
# emacs work/freetype-2.3.11/modules.cfg .. # OpenType table validation. Needs ftotval.c below. # -#AUX_MODULES += otvalid +AUX_MODULES += otvalid
としてmakeした.
これで
[platex tate] test
は無事乗り越えられた.
ただ,このやり方だと後でfreetype2を再ビルドした時にまた駄目になると思われるので,その場しのぎの方法である.
ぼけ防止には日記がいいらしい
ぼけ防止には日記がいいらしいので,日記を書いてみた.
それだけ..
というのでは寂しいので,少し近況を書きたいと思います.
今すごく忙しいので,正直そこまでわくわくしませんが,作業ができない分,ゆっくりと論文を読んだり考えたりできると思うので,多少は楽しみです.
この会議は色んなところから色んな分野の人が来るタイプのものらしいので,そういった人たちと会話するのも楽しみの一つです.
なぜかチェアマンの様なこともやらされるかもしれないので,それは恐れています.
ここ1年ほど作っていたSPOJUSの内容を今月末のSDPW2010で発表することになりました.
元々研究室にあったデコーダは古くからありすぎて管理が大変なことになっており,みんなが困っていたので作り直しました.
このデコーダは1パスデコーダなので,実時間で動けば魅力があります.
今回の実装では,最近の普通のPCならば実時間で動作すると思われます.
WFSTは合成が重いので,手軽にモデルを試したい時なんかにはまだまだいけると思うのですがどうなんでしょうか.
あとそれから先月年齢がインクリメントされました.
ありがとうございます.