「ひとかじりのりんご」

へっぽこエンジニアの備忘録。こちらは旧ブログ。新しい方はこちら→「http://sbkro.github.io」

RubyCocoaをインストールしてみた。

コマンドラインから、iTunesを操作するツールを作ろうかな...と考えたのですが、Objective-Cでプログラミングするのも面倒だと思い、RubyCocoaを使ってみることにしてみました。

RubyCocoaとは

RubyCocoaのプロジェクトページによると...

オブジェクト指向スクリプト言語RubyによるMac OS X Cocoaプログラミングを可能にするRuby/Objective-Cブリッジを含むフレームワークです

とのことです。
LLで、OSのネイティブフレームワークを操作できるとは何とも素晴らしいことです。同様のフレームワークとして、MacRubyがありますが、今回は比較的日本語の情報が多い、RubyCocoaをインストールしてみました。

環境

インストール方法

  1. sourceforge.netからバイナリをダウンロードします。(最新版は1.0.2)
  2. ダウンロードしたdmgファイルを展開し、pkgファイルをダブルクリックします。
  3. インストーラの指示に従い、インストールを行います。

テストプログラム

まずは実行確認のため"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の使用言語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 

コンパイル入らずで楽ちんですね★

結論

RubyCocoaを使うことで、RubyからMacのネイティブフレームワークを操作することが出来ました。今回はコマンドラインでの実行でしたが、Xcodeを組み込むことで、GUIプログラムも実装可能です。時間があれば挑戦してみたいと思います。