Ruby 逆引きレシピ レシピ158-174

Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)

Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)

今日は病院に検査に行ってたので待ち時間に少し多めに読めました。

今日はレシピ 158 から 174 までを読みました。

第8章 他言語/外部ライブラリと9章 例外/ログのところです。

レシピ 159 より、RubyInline は Ruby に C の関数を埋め込んで実行時にコンパイルして呼び出すということができるライブラリです。型も適当に変換してくれるのでお手軽です。結構いろいろなライブラリが依存しているのでひそかに使っているんじゃないでしょうか。ただし実行時にコンパイラを呼び出しているため、実行環境に開発環境が揃っていないといけません。個人的に使うぶんにはいいのですがエンドユーザの環境が特定できないものに使うのはやめておいたほうがいいでしょう。

レシピ 159 より、DL の紹介がされています。DL は共有ライブラリの関数を呼び出すことができるとても強力なライブラリですが、1.9 ではかつて DL2 と呼ばれていたものが DL として標準添付されているので、レシピ本に紹介されている内容とはかなり異なっています。Importable モジュールは Importer と名前が変化していますし、PtrData に相当するものは CPtr となっていて機能も変化しています。さらに、今 trunk に標準添付されている DL の実装は x86-64 の対応などで問題があり、libffi を利用した実装に置き換えようと議論が進んでいます。 1.9.2 のリリース時には置き換わってこれ以上大きな変化がないようになっているといいなと思うのですが、libffi の Windows 対応が不安定などの理由でまだ確定はしていないようです。gem install ffiffi ライブラリをインストールして使うという手もありますが、使い方が違ってしまうのが難点ですね。

レシピ 160 より、Ruby から外部のライブラリを利用するのとは逆に C のプログラム内に Ruby インタプリタの機能を埋め込む時の方法が具体的に書かれています。これは個人的にとても貴重な記事でした。ただ、これは 1.8 の場合なので、1.9 でこれがどのくらい通用するのかは不明です。

レシピ 161 から 163 の JRuby のところは JRuby を触ったことがないので、読むだけでした。JRuby からは Java の資産を使うための仕組みが用意されているようですね。

レシピ 164 から 169 は例外機構についてマニュアルに書いてあるようなことの説明でしたので特に目新しいことはありません。

レシピ 170 から 174 は Logger と Syslog についての解説でした。これもよく利用しているライブラリなので特に初めて知ることはありませんでしたが、より高機能なログライブラリ Log4r というものがあることが名前だけ紹介されていたので、こちらは活用できればいいかなと思います。