RubyMotion というiOSアプリ開発ツールをご存じでしょうか? iOSアプリ開発にはAppleの提供するObjective-C言語 + Xcode以外の開発ツールがいくつかあります。
有名なものには、JavaScriptで開発できる PhoneGap や Titanium などがあります、これらのツールはiOS上でJavaScript処理系が動作し画面やボタン表示などのライブラリーもJavaScriptに合わせた独自のものが提供されています。
RubyMotionはこれらのツールとは異なり、Ruby言語からObjective-C同等のオブジェクトコード(マシン語)を生成するコンパイラーです。通常のRubyは動的な言語でインタプリターで実装されていますが、RubyMotionは一部動的な機能は制限した Rubyプログラムをマシン語にコンパイルします。
したがって、上の図のように、画面やボタン表示などのライブラリーはObjective-Cと同じiOS SDK を直接利用しています。また、RubyMotionが生成するオブジェクトコード(マシン語)はObjective-Cと互換性が高く、RubyMotionからObjective-Cで作られたライブラリーが呼び出せるのはもちろん、Objective-CからRubyMotionで作られたライブラリーも呼び出せます。したがって、独自ツールで起こりがちなiOSバージョンアップに迅速に追従出来ないなどの問題点は起こりにくいと思います。
ただし、 iOS SDK の知識が強く要求されますので Ruby言語が出来るからといって簡単にiOS開発が出来るわけではないと思います。
既にObjective-CでiOS開発が出来る開発者にとって、RubyMotionはメリットがあるのでしょうか?
RubyMotionはRuby言語でプログラムが書ける以外に以下のような良い点も持っています
- Xcodeを強制されず、好きなエディターとコンソールで開発が出来る
- RSpecと同等なテストフレームワークが内蔵されいていテスト駆動開発が容易
- Objective-Cの資産が容易に取り込める
などが上げられます。それ以外に、私は以下の点がメリットかなと思います。
RubyはDSL(ドメイン特化言語)を記述するのに適した言語です、例えばゲームのようなアプリの場合、キャラクターを動かすような部分はObjective-Cで作り、ゲームのシナリオは Ruby を使ったDSL で記述すると、ゲームの内容を容易に変更できるようになり生産性を高める事が出来ると思います。