BT

MacRuby 0.3のリリースで、インターフェイスビルダーサポート、GUIの構築のHotCocoaが実現

| 作者: Werner Schuster フォローする 9 人のフォロワー , 翻訳者 編集部 フォローする 0 人のフォロワー 投稿日 2008年9月17日. 推定読書時間: 5 分 |
MacRuby 0.3(リンク)が利用可能である。
大幅な変更はメソッドディスパッチャーである。今では完全にObjective-Cランタイムに基づいている。MacRubyはObjective-Cランタイムを使用しており、Rubyクラスセマンティクスを実装し、またRubyメソッドをディスパッチする。これは重要な変更である。その理由は、コア実装を大きく簡略化し、また両世界間のあいまいさを取り除くからである。 .. Rubyについては、多くのバグが修正され、RubyGemsのコマンドを実行することができる。単純なgemsをインストールすれば、機能する。ただし、MacRubyがRailsを実行することを期待してはいけない。
MacRubyは、CocoaGUIを作成することをサポートしている。実際にはGUIの構築方法は2通りある。1つ目は、AppleのXCodeに同梱されているInterface Builder (IB)を使用することである。IBで作成されたGUIは、アクションやアウトレット(GUIコンポーネントへの参照を保持)経由でRubyクラスに接続 可能である。MacRubyはRubyで記述されたツールをシップし、アクセサーやメソッドのようなRubyコードの構造からアクションやアウトレットへマップする際に必要なメタデータを作成する。

rb_nibtool(リンク)はRubyで記述され、Ruby 1.9's Ripperライブラリを使用する。RipperはRubyソースを受け取り、LexerトークンのストリームとしてRubyコードへアクセス可能にする(Ruby 1.91では利用不可なParseTree(参考記事リンク)と類似)。rb_nibtoolはRubyソースファイルを取り、.nibファイルのクラス名を解明する。attr_accessor、 attr_writerおよびその他の呼び出しがアウトレット定義として解釈され、IDに続くib_actionがアクションを定義する。最後に、集めら れたすべてのデータは.nibファイルになり、GUI定義をRubyコードにひも付けする。

MacRubyやInterface BuilderでGUIを作成することはRuby on OS Xのオプションである。Windowsでは、Ruby In Steel IDEがGUI building with Visual StudioVisual StudioをIronRubyやRuby Connectorを使用しているMRIで提供している(リンク)

GUIを作成するもう1つの方法は、HotCocoa(リンク)であり、MacRubyに同梱されている。 Ruby Shoes(リンク)やRuby GUIライブラリなどのその他のRubyツールと似た、ビルダースタイルノーテーションを使用して、GUIの作成を可能にする。HotCocoaの実装を見てみると(リンク)、ビルドメソッド名がCocoa GUIコントロールへマップされる様子を確認できる(リンク)。さしあたり、HotCocoaに関するドキュメンテーションはほとんどないので、Ruby Connectorに同梱されるHotCocoaソースや例が、その使用方法を知る唯一の手段である。

他のRubyツールキットのようにHotCocoaはスケルトンアプリケーションを設定するツールに同梱されている。
hotcocoa classlist 
必要なすべてのライブラリおよび設定を備えた新たなアプリケーションを作成する。HotCocoaプログラムがどのようなものであるかを知るには、ロードされたすべてのクラスおよび上位クラスをリストした、簡単なデモがある。このコードはGUIをビルドし、スニペットを生成されたHotCocoaスケルトンアプリケーションのlib/application.rbファイルにコピーする)。
def start
 application :name => "Classlist" do |app|
 app.delegate = self
 window :frame => [100, 100, 500, 500], :title => "Classlist" do |win|
# Add a button to - clicking shows the data in the table
win << button(:title => "Show classes", :bezel => :regular_square).on_action {
klasses = []
ObjectSpace::each_object(Class){|x|
 klasses << {:klass => x.to_s, :ancestors => x.ancestors.join(',')}
}
@table.data = klasses
 }
 # create the table
@table = table_view(
 :columns => [
column(:id => :klass, :text => "Class"),
 column(:id => :ancestors, :text => "Ancestors")
] )
# put the table inside a scroll view
win << scroll_view(:layout => {:expand => [:width, :height]}) do |scroll|
scroll << @table
end
win.will_close { exit }
end
end
end

アプリケーションレイアウトは、アプリケーションを実行するための詳細を取り扱うRakeファイルに同梱されている。
macrake  


MacRubyについて詳しくは、Laurent Sansonetti氏のInfoQによるインタビューを参照のこと(参考記事)

原文はこちらです:http://www.infoq.com/news/2008/09/macruby-03-ib-hotcocoa

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT