2009-11-18

MacRuby を試そう!

追記@2010-11-26

MacRuby に関しては以下の記事も参照のこと:

MacRuby の 0.5 beta 2 がリリースされたというので、試してみる気になった。

アナウンスに貼られたリンクから zip のインストールパッケージをダウンロード。zip を展開し、中の PKG ファイルをダブルクリックすればインストール開始。MacRuby の本体などは /usr/local/bin 以下に、Xcode のプロジェクトテンプレートは /Library/Application Support/Developer/3.0/Xcode 以下にそれぞれインストールされる。

インストールが完了するとこうなる(↓):

[macmini:~] mnbi% which macruby
/usr/local/bin/macruby
[macmini:~] mnbi% macruby -v
MacRuby version 0.5 (ruby 1.9.0) [universal-darwin10.0, x86_64]

また、Xcode の新規プロジェクト作成パネルはこう(↓):

MacRuby のプロジェクトテンプレート
送信者 Macをプログラムする

「RubyによるMac OS Xデスクトップアプリケーション開発入門」を見ながらサンプルを試してみたり(p.224 〜 234)。

MacRuby コンパイラ

ところで、MacRuby にはコンパイラもあるらしい。

(0.5 beta 2 のリリースノートより抜粋)

Better Ahead-of-Time Compiler

Many compiler bugs have been fixed and the macrubyc utility is now able to generate fat binaries, via the —arch argument.

$ macrubyc hello.rb -o hello --arch i386 --arch x86_64

Also, macrubyc will generate by default executables linking against MacRuby.framework dynamically, which greatly reduces the executable size. In order to build a full standalone executable, the —static argument must be passed.

試さずにはおられまい。

[macmini:~] mnbi% which macrubyc
/usr/local/bin/macrubyc
[macmini:~] mnbi% macrubyc -v
MacRuby version 0.5 (ruby 1.9.0) [universal-darwin10.0, x86_64]

こんなコードを書いてみた。

(hello.rb)
 1: # hello.rb -- just print a short greeting message to the world.
 2: class Greeting
 3:   MORNING   = "Goood moooring!"
 4:   AFTERNOON = "Good afternoon."
 5:   EVENING   = "Good eeevening!!"
 6:   NIGHT     = "Good night."
 7:   def initialize(time)
 8:     @message = case (time % 24)
 9:                when 0..5   then NIGHT
10:                when 6..11  then MORNING
11:                when 12..18 then AFTERNOON
12:                when 19..23 then EVENING
13:                end
14:   end
15:   def say_it
16:     puts @message
17:   end
18: end
19: 
20: t = nil
21: if ARGV.count > 0 then
22:   t = ARGV.shift.to_i
23: else
24:   t = Time.now.hour
25: end
26:
27: greeting = Greeting.new(t)
28: greeting.say_it

コンパイルして、実行してみる。

[macmini:~] mnbi% macrubyc hello.rb -o hello --arch x86_64
[macmini:~] mnbi% ./hello 
Good eeevening!!
[macmini:~] mnbi% ./hello 6
Goood moooring!

おお、ちゃんと動くじゃないか。でも、本当にバイナリなのか? hello.ohello ができているので file コマンドで調べてみる。

[macmini:~] mnbi% file hello.o
hello.o: Mach-O universal binary with 1 architecture
hello.o (for architecture x86_64): Mach-O 64-bit object x86_64
[macmini:~] mnbi% file hello
hello: Mach-O 64-bit executable x86_64

疑ってゴメンナサイ。

Xcode のターゲットにも「Compile」があるから、MacRuby で書いた Cocoa アプリの方もコンパイルできるようだ。う〜ん、MacRuby 恐るべし。

関連リンク

参考文献

0 件のコメント:

コメントを投稿