0.9.3がリリースされました。0.9.3に関することはメーリングリストでのアナウンスを見てください。0.9.3ではWindows用のgemも提供するようにしました。このgemにはgroonga/rroongaのビルド済みのバイナリが含まれているのでビルド環境がないことが多いWindowsでも簡単に使えるようになっています。1.9.1にも対応しています。そもそも、gemにはWindowsや32bit環境などのプラットフォームを指定することはできますが、Rubyのバージョンは指定することができません。そのため、Rubyのバージョン毎にgemを用意することはできません。用意する場合はgemのパッケージ名を"rroonga187"や"rroonga191"などと変えなければいけません。これはカッコワルイですね。解決法は、1つのgemの中に1.8用のバイナリと1.9用のバイナリを両方いれ、実行時にどちらを使うかを切り替える、です。以下のようにバイナリを配置します*1。1.9.1のWindows用バイナリそして、groonga.soを読み込む部分を以下のようにします。"#{major}.#{minor}/groonga.so"これで、適切なバイナリを読み込むことができます。この他に、rroongaのように依存しているDLL(libgroonga.dll)がある場合はそのDLLがあるフォルダをPATHに入れなければいけない、などといった注意点がありますが、それはまたいつか機会があったら触れるかもしれません。GNU/Linux上のMinGWで作る方法を紹介します。1.8.7と1.9.1をMinGWでクロスコンパイルします。これにはrake-compilerが便利です。rake-compilerまず、MinGWをインストールします。1.8.7-p249をビルドします。EXTS=--without-extensionsクロスコンパイルしたrubyはextconf.rbを実行してMakefileを作れればいいだけなので、拡張ライブラリなどはいりません。環境変数として「EXTS=--without-extensions」を指定すると拡張ライブラリはビルドされないのですが、もっとカッコイイ方法がありそうな気がします。1.9.1-p378もビルドします。EXTS=--without-extensionsただ、これは失敗します。失敗したら以下のパッチを当てます*3。}このパッチは以下のように適用できます。/tmp/ruby-1.9.1-build-fix.diffもう一度、同じコマンドでビルドすると成功します。1.9.1ができたので、これを利用してgem用のバイナリをクロスコンパイルします。これには、rake-compilerが提供するRake::ExtensionTaskが便利です。Rake::ExtensionTaskの使い方を紹介しますが、ここでは、もうすでにRakefileがあり、その中でGem::Specificationを作っているものとします。specがGem::Specificationだとすると、Rakefileに以下を追加することでcrossタスクが定義されます。'x86-mingw32'endRake::ExtensionTask.newに"groonga"を指定していますが、このようなRakefileを使うときは、以下のようなファイル構成になっている必要があります。Rakefile...ext/の下にRake::ExtensionTask.newで指定した名前と同じディレクトリを作り、その下にextconf.rbを置きます。crossタスクを使って1.8.7用のバイナリと1.9.1用のバイナリをクロスコンパイルするには以下のようにします。RUBY_CC_VERSION=1.8.7:1.9.1うまくいくとlib/1.8/groonga.soとlib/1.9/groonga.soができます。これらを両方含んだgemを作るには以下のようにします。RUBY_CC_VERSION=1.8.7:1.9.1これでpkg/rroonga-0.9.3-x86-mingw32.gemができます。あとは、このgemをrubygems.orgにアップロードすれば完了です。GNU/Linux上で作成する方法を紹介しました。1.8.xと1.9.xの両方をサポートしてみてはいかがでしょうか。Codeの学生の応募の締切りは今週の土曜日だそうです。Code)Rubyとオープンソースに興味のある学生の方は応募してみてはいかがでしょうか。Codeはフリーソフトウェアの開発に関わるよい機会といえます。Codeのおかげで開発が進んできました。角谷HTML化計画(2005-10-26))ぜひ、このような機会を活かして、フリーソフトウェアの開発に積極的に参加してみてください。Windowsでも拡張子は.soでいいのです。gemというらしいです。この問題はtrunkではすでに修正されています。4.0とGFDLのデュアルライセンスで自由に利用できます。クリアコードはプログラミングが楽しいソフトウェア開発者を1名募集しています。クリアコードは「クリアコードをいい感じにする人」を1名募集しています。クリアコードはフリーソフトウェア開発で培った技術力を提供しています。Thunderbird)とRubyとGroonga(全文検索)に関連した開発を得意としています。