2009年12月28日(Mon) 山頂見えるけどちょっとVog [長年日記]
● それぞれのイベントに独立にタイムゾーンを設定できるカレンダーはRuby 1.9.2で可能になる?
Palm OSでは簡単に実現できていたように見える、それぞれのイベントに独立にタイムゾーンを設定する機能がなぜモダンなカレンダーアプリケーションに無いのか、理由かもしれないことを思いついた。
akrさんによる、Ruby札幌02での講演「Rubyにおける2038年問題の解決」(PDF) で思い出させていただいたのが、POSIXのzoneinfoのAPIが基本的に単一のタイムゾーンしか扱えないようにできている、ということ。システムコールの時刻に関するAPIはローカル時刻を扱う時にシステム全体のタイムゾーンか、あるいはTZ環境変数を見るんだよね。僕の作ったアプリケーションのいくつかは、マルチスレッドになれないなあ、とひやひやしながら、TZ環境変数を書き換えながらローカル時刻を扱っている。カレンダーアプリケーションでイベントを表示したり編集したりするたびにプロセス全体にロックをかけてTZ環境変数を操作してたら、実用にならないくらい遅くなりそうだ。POSIXなんて知らなかったPalm OSにはこういう制限が無かったのかもしれない。
これに対して、Ruby 1.9.2ではTimeオブジェクごとに任意の時差(ってタイムゾーンだよね)を指定可能になるのだそうだ。みなさん、これは使いやすいカレンダーアプリを作るチャンスですよ♪特にGoogle calendarさん〜。僕も書きたいけどきっと余裕が無い orz。
ってSunbirdのローカルなカレンダーは既に複数タイムゾーンに対応してるんだよね。どうやって実装されてるのか見てみたい。いつ。
● 自転車のサドルが来た。Sette Lynx。ケツに合うといいな。
最近のツッコまれどころ