2009年に書いた記事とかを振り返る

 1月から12月までに何を書いたかとか、その時にどんな事を考えていたかとかを振り返ってみます。後日談もいくつか書いたよ。

2009年1月

 昨年の12月に書いたComplement Naive Bayesの記事がウケたが、

 といった記事はウケず、機械学習がウケているのではなく、"はてなが使っている"というところが注目を集めたんだ、とわかってちょっと悲しくなった。
 Confidence Weightedはオンライン学習で今のところ最強、と目されてきたわけだが、今年のNIPSでAdaptive Regularization of Weight Vector (AROW)という論文をK. Crammerらが発表した。こちらのアルゴリズムはConfidence Weightedよりもノイズに強いそうだ。ちなみに、AROWについてはtwitterのyotarowさんの発言で知りました。

2009年2月

  • WEB+DB PRESS Vol. 49にレコメンデーションの解説記事 を書かせていただいた。11月ぐらいからボチボチ書いてはいたんだけど、書いても書いても終わらず、辛かった。辛かったが、あまり辛かったと書くと編集の方にこっちはもっと辛かったわと怒られそうなので、1回だけしか書かない事にする。その節は原稿遅れまして申し訳有りませんでした。
  • auto-complete-ruby.elを使ってオムニ補完する という記事も書いたが、PFIの社員は大半がこのブログを読んでいないので、会社でEmacsを使っていると同僚に何度もauto-complete.elの補完を不思議がられた。あとこの記事はもっとブックマークされるかと思ったんだけど意外と伸びなかった。(今見たら38ブックマークもされてた。いつの間にかだいぶブックマーク数が伸びてた。)auto-complete.elは本当に便利なので、もっと使われるべきだと思う。これなしで長い定数を何回も打ったりするのはもう嫌だ。

2009年3月

  • 3月は引越しをしたんだけど、部屋がなかなかみつからず、かなり大変だった。しかし、引っ越ししたおかげで通勤が片道17駅から片道2駅になったので、意義は大きかったと言える。
  • そろそろChaIMEについて一言いっておくか には「Viterbi Algorithmで求まるのは最もコストが低い経路だけで、2番目、3番目の変換候補はビタビだけでは求めることができない」と書いていたが、実はこれは微妙なところで、トップn個の最適パスを保持したままViterbiを適用すると、2番目、3番目の変換候補を出すことができる。ただ、これをViterbiとは呼ばないようだ。詳しくは Cube summing, approximate inference with non-local features, and dynamic programming without semirings (K. Gimpel et. al., ACL 2009)とかを参照してください。k-best proof semiringというのがトップn個のパスを保持して一気に上位k個の最適パスを求めるやつです。

2009年4月

 PythonでElementTreeを使ってXMLをパースする際に注意すべき点があるPythonで大きなXMLをパースする際に発生するかなりクリティカルな問題を回避するための豆知識なのだが、あまり注目されなかった。でっかいXMLをパースしたいという需要が、そもそも少ないのかもしれない。
 最近は、libxml-rubyのReaderを使うとこういうぶつ切り問題が発生しないので、こちらを使うようになった。ただ、libxml-rubyはreader.readが返す値がバージョンによって0になったりfalseになったりするみたいで、そこのところがちょっとめんどくさい。

2009年5月

 5月は一つしか記事を書いていない。5月中旬頃に納期の仕事があって、割とてんやわんやしていたなーということを、読み返して思い出した。書いた当時のことを思い出せると、自分で読んでいて面白い。
 脳科学の本はあれから何冊か買って読んだが、現代の脳科学の進歩ぶりには驚くばかりだ。自分の生きてるあいだにかなりの部分は解明されそうな勢いだし、将来的には自分もそのあたりでなにかできたらいいな、と思っている。

2009年6月

  • MySQLからCSVをダンプした後にするべきたった一つの修正 はかなり役立つtipsだと思うのだが、これもぜんぜんウケなかった。豆知識系はウケない、ということを学習したが、後で自分で検索して使うことがよくあるので、豆知識はこれからも書き続ける。7月ぐらいにMySQLからCSVでダンプするのに苦労している同僚がいたので、この記事をコピペしてヘルプした。いかにこのブログが同僚から読まれていないかをよく表しているエピソードであると思う。
  • Firefoxからsshのダイナミック転送を使って非公開サーバへアクセスする はもう、これがないと仕事ができない。これまでは単なるssh -Lでのトンネリングを使っていたけど、一度ダイナミック転送に慣れると、もうこの便利さから離れられない。記事を書いてた時点ではGoogle ChromeがSOCKSプロキシ対応済、というのは早とちりだったのだが、今では本当に対応している。いまだとメジャーなブラウザはだいたい対応している感じかな。

2009年7月

  • 7月はSinatra関係の記事をたくさん書いたが、ぜんぜんウケなかった。研究関連の記事を書いていても感じたが、ちょっとでもマイナーな方向に行くと、注目というのは全然集まらないものらしい。Sinatraは小物を作るには本当に便利なのでおすすめです。
  • 一方、ディレクトリの中にある大量の小さなファイルを高速に読み込む方法 はなぜかすごく注目を集めた。ネット上でも「ディスクキャッシュじゃないか」と複数回書かれて、実世界でも何度も「ディスクキャッシュじゃないの?」と言われて、割とうんざりした。その一つ前の記事がディスクキャッシュを簡単にクリアする方法であったとしても、そんなものは誰も読んでないらしい。このあたりで、ブックマークを集めても、書き手側には別にいいことはないのではないかと気づき始めた。

2009年8月

 8月には身内の不幸がありショックを受けた一方、仕事は忙しかった。始め頃と終わり頃にしか記事を書いていないのはそのせいだ。現実逃避で夏休みはChaIMEの開発をガリガリやっていたが、正直苦しかった。

2009年9月

 9月後半にはようやく立ち直りかけて、新しい記事を書いた。Googleのトップページを開くと毎秒100回JavaScriptが実行されるよ は、タイトルにGoogleと入れた時点で100ブックマークは行くなと思っていたが、予想外に伸びて600以上のブックマークを集めた。こちらも何度も「信じられない」とか書かれるわなんか変な匿名コメントはいくつもつくわで、いい事はなかった。この記事で、ブックマークを集めても、多くの人に読まれる以外には大して良いことはない、という事は自分の中でほぼ確信に変わった。実名出してやってれば違うのかもしれないけど。 変なコメントはそもそも議論ができる相手ではないので、黙って削除するべきだと学んだ。
 あと、どのページでJavaScriptが頻繁に実行されているのかを調べるためにわざわざFirefoxを改造したというのは牛刀的な感じで面白いと自画自賛していたんだけど、id:ofkしかそのネタに触れてくれず寂しかった。

2009年10月

 ChaIMEの2009年の開発成果を公開した。実装はこの公開時点からあんまり進んでないけど、次になにをするかは、今いろいろ考え中です。

2009年11月

 プログラミングHaskellを読んだ。このあとReal World Haskellも買ったが、こちらはだいぶ難しく、とても電車の行き帰りに読めるレベルの本ではないので、なかなか読み進められていない。そもそも、持ち歩くにはちょっと重い。あと、11月は、結局日記には書いていないが、京大の森さんのところにいってきてかな漢字変換の話をしたりしてきた。

2009年12月

 仕事が忙しくてストレスがたまり、11月ぐらいからだんだん日記を書く意欲も失せてきていたのだが、日記は後で読むと自分の役に立つものであるし、このままではいかんと、なんとか2本ほど記事を書いた。この記事で3本目で、2009年中にもう1本ぐらいは書けると思う。これからも週1ぐらいのペースで書いていければいいなと思っている。

まとめ

 2009年はびっくりするほどなにも良いことがなかったので、この記事を書き終えたら2009年のことはさっさと忘れて、2010年に向けて準備をはじめようと思う。それではみなさま、どうぞ良いお年を。