AquesTalkのrubyバインディング作りました。
komagata’s win32-aques_talk at master – GitHub
インストール
$ sudo gem install komagata-win32-aques_talk -s http://gems.github.com
使い方
$ irb
>> require "aques_talk"
=> ture
>> AquesTalk.play_sync("これわてすとですね?") # Shift_JIS only
=> 0
AquesTalkはwindows版dllのみが組み込んで配布することもOKとなっているのでwindows版をRubyから手軽に使いたいと思って作りました。
RubyバインディングといってもC言語拡張ではなく、ruby-ffi(Foreign Function Interface)を使っています。
ffiを使うことで、windowsのdllやlinuxのsoなんかの動的ライブラリをrubyから直接使うことが出来ます。
同じ用途で標準ライブラリのdlやdl2なんかがありますが、ffiはRubiniusやjRubyでも同じインターフェースで使えるところが特徴だそうです。
ポインタのオブジェクトや構造体をマッピングするための仕掛けをffiが用意してくれるの予想以上に便利!
グルー言語としてRubyを便利に使うためにCの資産などをどんどん活用していきたいです。
参照: