2010年10月02日

日記的なもの

最近、興味のあるライブラリを使いたいがために、ツギハギだらけのコードを書くことが多い。

JRuby+Railsに手続き的なところとプレゼンテーション的なことは任せて、重い処理はJavaで書いて、行列計算したい時はPythonに任せて、CPANにしかないマイナーな処理はPerlに任せるみたいな。もちろんCやJavaのライブラリも多用する。

そうやってありものを組み合わせていくと、意外と読みやすいコードができあがる。「あのライブラリを呼びたい」という意識で各言語のモジュールを書くことから、自然と各処理が意味合いを持って分割されるようになる。

これをデザインパターンの1つ、ブラックジャックパターンと呼ぶ、かもしれない。



最近、Luceneがお気に入り。テーブルっぽく検索要素を構成させることもできるし、中身を引っ張ることもできるし、全文検索は当然音速だし、集計関数やトランザクションは使えないけど、ただ検索するだけならある意味最強なんじゃないかと思う。

自宅で何かを処理する際にはシングルスレッドで動かす場合が多いし、わざわざトランザクションという毒を飲まなくても良いか、なんてことを思った。



最近、自分のプログラミングの能力の低さと知識の乏しさを痛感するケースが増えてきた。一般的な開発現場では不足を感じることは少なかったのだが、研究室的なところで働いたり知識を書籍にしようと試みると、これほど足りないのかと驚く。

特に性能向上について。ボトルネックを見つけて解消する。その行為自体は得意だと思ってきたけど、情報爆発を起こしたデータに対して、もう一段高いレベルで高速化を図る処理を見ていると、とても自分の知識では生み出せないものだということが良くわかる。

というわけで、日々勉強。いつまで経ってもいっぱしのプログラマに届かない気がしてきたけど、諦めるのも癪なので日々勉強。



先日、排他処理と、一意の連番のIDを生成する処理を書く必要が出た時に、面倒だからMySQLの行ロックとauto inclementに任せるような書き方をした。

面倒だからこれでいーやと軽い気持ちで書いたのだけど、考えてみるとそうやって書いたコードの性能をもし自作で書こうとしたらけっこうタイヘンだよなぁと思う。

世の中、便利なソフトウェアがいっぱいで助かる。先日、Cassandraを初めて使ってみたのだけど、なんというか至れり尽くせりというか、まぁ、KeyValueだから不便なところは不便なんだけど、データのスケールアウトについてはなんか、手取り足取り介助をしてくれる優しいヘルパーさんみたいに思えた。



ラグナセカのザナルディのオーバーテイクの動画を見た。やはりあのシーンは興奮するなぁ。当時、BSで中継がやってるのを見た時は乾いた笑いが出た。阿呆なのか、こいつは阿呆なのか、と。

スポーツを見るのは面白い。

そういえば今月はスポーツではないけど将棋の面白いイベントが2つありますな。1つは11日に行われる女流棋士の清水さんとコンピュータ将棋の一戦。

もう1つは大きなニュースになりそうな永世七冠をかけた竜王戦。第一局は14日(木)から。この前の王座戦は少し追っていたのだけど、なんというか、40歳になっても人間の脳って凄いんだなぁと思えたりしました。