BT

MacとRuby総まとめ:MacRubyのAOT、ChocTopによるDMG作成

| 作者: Werner Schuster フォローする 9 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2009年7月23日. 推定読書時間: 2 分 |

原文(投稿日:2009/7/18)へのリンク

MacRubyがCocoaプラットフォームと密に統合しているのは、JRubyやIronRubyが基礎としているプラットフォームと統合しているのと比べて、大きな強みのひとつだ。MacRubyは、Mac開発者がRubyを使ってクライアントアプリケーションを開発する最善の方法だろう。experimentalブランチにおける最近の作業により、Ahead of Time (AOT) コンパイルも改善されてきている。

macrubycというAOTコンパイラに対するコマンドラインツールのインターフェイスを導入
macrubycを使うと、指定されたRubyファイルをMach-Oオブジェクトファイルにコンパイルしたり、最終的な実行ファイルを生成することができます。

今でもRubyアプリケーションをMacRubyで書いてインストールすることは可能だが、MacRubyランタイムと一緒に配布する必要がある。AOTを実装する目的は、この問題を解決することだ。

生成されたMach-Oオブジェクトはオブジェクトファイルそのものです。MacRuby実行ファイルを作るのにも使えますし、MacRuby Objective-C APIを利用するObjective-Cプロジェクトで使うこともできます。

生成された実行ファイルには、コンパイルされたRubyコードはもちろん、MacRubyも静的に組み込まれます。これはそのまま配布することができ、実行時にMacRubyやLLVMに依存しません。Rubyソースコードはネイティブの機械コードにコンパイルされるのです(実行時にJITコンパイラでやるのと同様の処理)。そのため、ソースコードを難読化するよい方法でもあります。最終バイナリはObjective-Cバイナリと同じように見えます(サイズがずっと大きいことを除いて)。

MacRubyで書かれたユーティリティのひとつに、Chris Wanstrath氏のBacondropというツールがある。ツール自体は小さなものだが、MacRubyをバンドルしているため、15MBほどの大きさになっている。AOTコンパイルしたバイナリにすれば、もっと小さくなるはずだ。

Bacondropは、RubyによるツールがMac開発者に役立つことを示す例でもある。BacondropはMac DMGファイル形式で配布されているが、これはDr Nic氏により開発されたChocTopというユーティリティによって作成したものだ。ChocTopというツールはすべてのCocoaアプリケーションで利用することができ、Sparkleセットアップを備えた(Sparkleはソフトウェアアップデートに対応する)ちょっと退屈なDMG作成を自動化してくれる。ChocTopにはDSLのような設定のための仕組みがあり、rakeファイルにいくつかのタスクを追加する。

MacRubyアプリケーションがすべてAOTコンパイルできるようになると、OS Xアプリケーション開発において、RubyはObjective-Cに対抗できる競争相手になりそうだ。(おそらくiPhoneではそうはならないだろう。iPhoneのObjective-Cランタイムはガベージコレクションをサポートしていないためだ)

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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