RubyCocoaをインストールしてみた。
コマンドラインから、iTunesを操作するツールを作ろうかな...と考えたのですが、Objective-Cでプログラミングするのも面倒だと思い、RubyCocoaを使ってみることにしてみました。
RubyCocoaとは
RubyCocoaのプロジェクトページによると...
オブジェクト指向スクリプト言語RubyによるMac OS X Cocoaプログラミングを可能にするRuby/Objective-Cブリッジを含むフレームワークです
とのことです。
LLで、OSのネイティブフレームワークを操作できるとは何とも素晴らしいことです。同様のフレームワークとして、MacRubyがありますが、今回は比較的日本語の情報が多い、RubyCocoaをインストールしてみました。
インストール方法
- sourceforge.netからバイナリをダウンロードします。(最新版は1.0.2)
- ダウンロードしたdmgファイルを展開し、pkgファイルをダブルクリックします。
- インストーラの指示に従い、インストールを行います。
テストプログラム
まずは実行確認のため"HelloWorld"を作ってみます。
今回は、CocoaのメソッドNSLogを使って、"HelloWolrd"とコンソール表示をさせてみました。
[helloworld.rb] require 'osx/cocoa' include OSX class Hello < NSObject def echo NSLog("HelloWorld") end end obj = Hello.alloc.init obj.echo
ここで一番重要な部分は、最初の2行です。
- "require 'osx/cocoa'"でCocoaフレームワークをロードします。
- "include OSX"で、Cocoaフレームワークをインクルードします。
- この記述を入れることで、Cocoaフレームワークのクラス・メソッド呼び出しを行う際、以下のように記述を省略することが出来ます。
- OSX::NSObject -> NSObject
- OSX::NSLog -> NSLog
- この記述を入れることで、Cocoaフレームワークのクラス・メソッド呼び出しを行う際、以下のように記述を省略することが出来ます。
ちなみに、上記のコードを本来のCocoaの使用言語Objective-Cで書くとこのような感じになります。
[helloworld.h] #import@Interface Hello : NSObject { } - (void) echo; @end [helloworld.m] #import "hello world.h" @implementation Hello - (void) echo { NSLog(@"HelloWorld"); } @end [main.m] #import "helloworld.h" int main (void) { Hello * obj = [ [Hello alloc] init]; [obj echo]; return 0; }
実行
RubyCocoaの実行は、Rubyスクリプトと同じように、シェルから実行することができます。
- Terminal.appを起動する。
- 以下のコマンドを実行する。
$ ruby helloworld.rb
- 実行結果が表示される。
2011-10-15 02:09:26.540 ruby[1565:60b] HelloWorld
コンパイル入らずで楽ちんですね★