|
From: Kouhei S. <ko...@co...> - 2012-12-30 14:32:20
|
須藤です。 Ruby-GNOME2プロジェクトはRuby-GNOME2 1.1.9をリリースしまし た。 実験的にGObject Introspectionをサポートしました!これがもっ とちゃんとしたものになれば、GObjectベースのライブラリのRuby バインディングを自動的に作成できるようになります。 (ただし、全部機械的にやるとRubyっぽくないAPIもでてきてしま うので、自動で作成と人での微調整を合わせないといけません。) gem名はgobject-introspectionで % gem install gobject-introspection でインストールできます。 手元では、Clutterのサンプルにあるものを以下のようにRubyで書け ることは確認しています。 https://github.com/ruby-gnome2/ruby-gnome2/blob/master/gobject-introspection/sample/clutter-basic-actor.rb ちなみに、ClutterのRubyバインディングは以下のように10行程度 で書けます。(ただし、これはAPIの微調整をしていないので、 RubyっぽくないAPIが残っています。) https://github.com/ruby-gnome2/ruby-gnome2/blob/master/gobject-introspection/sample/clutter.rb require "gobject-introspection" module Clutter class Loader < GObjectIntrospection::Loader private def load_constant_info(info) return unless /\A(?:KEY_|COLOR_)/ =~ info.name super end load("Clutter", Clutter) end end == インストール方法 % gem install gtk2 == 変更点 === Ruby/GLib2 * 改良 * G_DEF_CLASS4をG_DEF_CLASS_WITH_PARENTに改名。 G_DEF_CLASS4はまだ使えるが、非推奨。 === Ruby/GObjectIntrospection * 追加。まだ実験的な扱い。 |