開発合宿にいってきます

Tsukasa OISHI

明日から休日の2日間、越後湯沢まで開発合宿にいってきます。
このブログのシステム自体を新しく開発し直そうかとも思っていたのですが、もうちょっとおもしろそうなことをやろうかと思います。
今いろいろ考えているのがRubyでいかにパフォーマンスをあげるか、ということ。
Ruby1.8のスレッドはグリーンスレッドなのでCPUのコアが生かせません。1.9からはネイティブスレッドになったけど、I/O以外の処理を行うときはロックされていて同時に動いているのはひとつのスレッドだけです。
それでも1.8よりはいいはず。なにより、I/O処理だけでも並列で動かせるのは大きいかなと考えています。このあたりでうまくやってみたい。たとえば、I/O待ち + read/writeをマルチスレッドで実行し、readが完了したことをイベントとしてロジック用のスレッドに処理を渡す、とか。イベント駆動と似ているけど、イベント駆動はreadしている間に何もできないので。でもよくわかりません。ruby1.9のスレッドをそれほど触っていない、なによりRuby1.9自体をそれほど触っていないのです。このあたりをいろいろやってみようかな。
1.8も視野に入れるとやっぱりイベント駆動になりそう。Revを使えば簡単そうですね。EventMachineをちょっと使ったことがあるのだけど、立派すぎる、というか多機能すぎる気がするのでもうちょっとシンプルなものが欲しいのです。
またはスレッド化を諦めてマルチプロセスで何かできないか。プロセスを複数立ち上げて並列に処理をするというのは単純で、Ruby1.8でもマルチコアの恩恵にあずかれます。このあたりでスマートなライブラリが作れないかな。
なんてことをぼんやり考えていました。このあたりを開発合宿でちょこちょこやってみようと思います。

ちなみに、開発合宿といいながら開発をやるのはたぶんぼくひとりです。他のみんなはユルさんも含めてスキーをやるはずです。ぼくはひとりで雪見開発と洒落込みます。スノボーにも飽きてきたので。スノースクートはちょっとやりたいのですが。