はじめる!Ruby(Motion)でiOSアプリ開発


ついにこの日がきました。そう、iPhoneiPadアプリ(iOSアプリ)をRubyで開発できるようになったのです。
さっそく、いっしょにやってみましょう。

[STEP1] RubyMotionのインストール

iOSアプリをRubyで開発するには RubyMotion が必要です。 Write cross-platform native apps in Ruby | RubyMotion から購入します。(実は無料ではないのですよね〜)
RubyMotionはあのMacRubyの開発者の Laurent Sansonetti がフルタイムで開発しているソフトウェアです。彼はすでにApple社から離れてヨーロッパでこんなことをしていたのですね。
今なら25%オフのセールをしていて日本円で12,348円です。(最後の8が5だったらよかったのにね)
iOSデベロッパープログラムと合わせると約2万円の出費ですね。これを高いと考えるか適切と考えるとかはこの記事を最後まで読んでから判断してもらえればと思います。(だって、他の選択肢がObjective-Cだからね)

RubyMotionを購入するとインストーラのダウンロードURLとライセンスキーが提供されます。
ダウンロードしたインストーラを起動してRubyMotionをインストールします。

ライセンスキーを入力するとRubyMotionのダウンロードが始まります。インストーラにはRubyMotion自体は含まれておらず、ライセンスキーで認証してからダウンロードさせる仕組みなのですね。

これでRubyMotionをインストールできました。
念のためインストールできたかどうか確認してみましょう。ターミナル.appを起動して次のコマンドを実行します。

$ motion -v
(以下、実行結果)
1.3

[STEP2] Xcodeのインストール

当然、RubyMotionでiOSアプリを開発するためにはiOS SDKが必要です。
iOS SDKXcodeに含まれているのでApp StoreからXcodeをインストールします。
また、iOS 5のシュミレータもインストールします。Xcodeを起動してメニュー[Xcode]-[Preferences...]を選択して、DownloadsタブのComponentsからiOS 5.0 Simulatorをインストールします。

[STEP3] Hello World

さぁ準備ができました。簡単なサンプルプログラムとして画面に「Hello World」というメッセージダイアログを表示するアプリケーションを作ってみましょう。
ターミナル.appを起動して次のコマンドを実行してアプリケーションのひな形を作成します。

$ motion create Hello
(以下、実行結果)
    Create Hello
    Create Hello/.gitignore
    Create Hello/Rakefile
    Create Hello/app
    Create Hello/app/app_delegate.rb
    Create Hello/resources
    Create Hello/spec
    Create Hello/spec/main_spec.rb

続いて次のコマンドを実行します。(RubyMotionはMac OS X標準添付のRubyインタプリタを使いますのでRVMなどで独自のRuby処理系をインストールしている場合は/usr/bin/rakeというようにrakeコマンドをフルパスで指定します)

$ /usr/bin/rake
(以下、実行結果)
(in /Users/kouji/work/RubyMotion/Hello)
     Build ./build/iPhoneSimulator-5.1-Development
   Compile ./app/app_delegate.rb
    Create ./build/iPhoneSimulator-5.1-Development/Hello.app
      Link ./build/iPhoneSimulator-5.1-Development/Hello.app/Hello
    Create ./build/iPhoneSimulator-5.1-Development/Hello.app/Info.plist
    Create ./build/iPhoneSimulator-5.1-Development/Hello.app/PkgInfo
    Create ./build/iPhoneSimulator-5.1-Development/Hello.dSYM
  Simulate ./build/iPhoneSimulator-5.1-Development/Hello.app
(main)>> 

ほら、もう動いちゃってます。なにこれ!!って感じですよね。

しかも最後の行に「(main)>> 」と表示されています。いかにも何か入力してくださいって感じですよね。じゃあ、その希望に答えちゃいましょう。

(main)>> alert = UIAlertView.new
(以下、実行結果)
=> #<UIAlertView:0x6c6f090>

(main)>> alert.message = "Hello World!"
(以下、実行結果)
=> "Hello World!"

(main)>> alert.show
(以下、実行結果)
=> #<UIAlertView:0x6c6f090>

どうです?みなさんの想像通りメッセージダイアログが表示されましたよね。

当然メッセージダイアログを消すこともできます。

(main)>> alert.hidden = true
(以下、実行結果)
=> true

「いいね」って感じですよね〜。

動作確認はこれくらいにして、一旦Helloを終了させます。

(main)>> quit

それではプログラムを作成してみましょう。
好きなエディタでファイル「Hello/app/app_delegate.rb」を開きます。そして次のように修正します。

class AppDelegate
  def application(application, didFinishLaunchingWithOptions:launchOptions)
    alert = UIAlertView.alloc.initWithTitle("Hello", message: "Hello World!", delegate: nil, cancelButtonTitle: nil, otherButtonTitles: "OK")
    alert.show
    true
  end
end 

さきほどと同様にrakeコマンドで実行します。

これでHelloは完成です。
実際のiOSバイスで試すにはiOSデベロッパプログラムに参加してから次のコマンドを実行するとできるようです。(すみません、まだ私も試せていません...)

$ rake device

[STEP4] これから

さぁ、これでRubyiOSアプリを開発する環境が整いましたね。あとはすばらしいアプリを開発するだけです。Rubyを使ってね :-)
https://github.com/HipByte/RubyMotionSamples でHelloも含めて11個のサンプルプログラムが公開されています。参考になるアプリがあるのもいいですね〜。

まとめ

RubyMotionを使えばiOSアプリをRubyで開発できます。間違いありません。
しかしながら、iOSアプリ開発ではGUIをどれだけ簡単にデザインできるかというのも重要なことです。XcodeのようなUIデザイナなしでどこまでできるのかなって感じです。
でもまだまだ発売されたばかりですから、これからのRubyMotionに期待します。
なにはともあれ、RubyMotionというすばらしいソフトウェアを提供してくれた HipByte に感謝します。