BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MacとRuby総まとめ:MacRubyのAOT、ChocTopによるDMG作成

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

原文(投稿日: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ランタイムはガベージコレクションをサポートしていないためだ)

この記事に星をつける

おすすめ度
スタイル

BT