RubyMotionはiOS SDKに疎い人にもオススメできる

2012-07-26
かなり古い記事です。現在も有効な内容であるかどうか分かりませんのでご注意ください。

iOSで作りたいモノが特にないのでこの頃あんまりアクティブに触ってはいないけど、一方で所感が確かな物になってきたので書いておきたい。

RubyMotionがリリースされたばかりの頃はiOS SDKの知識が必要なので敷居が高いのではと書いたが、それから三ヶ月弱立った現在、iOS SDKに疎くても気にせず開発できる環境が整ってきた。またREPLの存在によりiOS SDKを学ぶにも役に立つものだと思うようになった。
加えてどれほどの物が作れるのか、ということとサポートの話など。

Rubyらしく書く

BubbleWrapのようなRubyらしく書いていけるライブラリが順調に育っていて当初よりかなり良い感じになっている。
iOS SDKの知識がなくてもかなりの所までいけるようになっているんじゃないだろうか。

他にもDSL的なライブラリがいろいろできて盛り上がっているので、今後も「Rubyらしく」という面では更に洗練されていくだろう。

REPLの存在

何かを学んだり試したりする上でフィードバックがすぐに得られると言うのは大きい。
RubyMotionのプロジェクトではターミナル上でrakeと打ってシミュレーターを実行すると、そのままirbのようなインタラクティブ環境になる。ので色々と気軽に素早く試すことができる。

これはiOS SDKのAPIがどんな挙動をするのか知る上で非常に有効。Objective-Cではそのためにファイルにコードを書いてコンパイルする作業を繰り返さなくてはならないが、RubyMotionにはREPLがあるためプロンプトにコードを書けばすぐその場でその結果(UIの挙動も)を見ることができる。
快適さとスピードが違いすぎる。

これはもうAPIの動作検証用だけにRubyMotionというのも十分アリに思える。言いすぎかなあ。

どれほどの物が作れるのか

実際にApp Storeにリリースされたものもすでに多数ある。最近ではApp StoreのランキングでトップになったEverClipが公式ブログで話題になっていた。

自分で作ったものと言うことでは以前Objective-Cで書いたアプリをベタ移植してみたけど特に問題なく動いた。ベタ移植というのはObjective-Cの書き方を何も考えず踏襲しつつRubyに書き直したということ。さすがに配列やディクショナリのループなどはRubyっぽく書き直したが、クラスやメソッドなどはほぼそのまま。
この移植作業をしている間は写経している気分に近かった。

アプリの規模的には地図と位置情報を使って、SQLiteに保持したデータを地図上やテーブルビューのリストに表示するといったもので、大規模とまではいかないが簡単な動作サンプルのレベルではない。
これだけ作れれば大抵のユーティリティソフト系は問題ないだろう。

更にその後同じ物をRubyらしいコードでイチから書き直してみたが、さくっと気持ちよく書き上げることができた。
このライトウェイトな感覚は素晴らしいの一言だ。

サポートの話

上記の移植作業中にRubyMotionのバグを踏み抜くことがよくあったが、レポートすると対応は迅速で、だいたい次のリリースでは修正されていた。
なので見つけたらどんどんレポートすれば良いという点で個人的にRubyMotionのバグの心配はそんなにしていない。かなりおかしな英語でも再現コード付きで送れば理解してもらえる。コードは世界共通語。

気になるサポートの永続性に関してはMacRubyのコミッタでもある@watson1978さんのツイートで以下のような情報があった。

先のことは分からないが、今の勢いを見ていると差し引いても数年は大丈夫だろうと思う。

ちなみにRubyMotionのアップデートを受けるためのライセンスは1年おきに更新が必要で購入額の半額程度といった情報がある。

まとめ

積極的に人に勧めて問題ないレベルに達してきている。(感想には個人差があります)

Profile

フルスタック気味のフリーランスプログラマー。

どちらかと言うと得意はインフラ構築とサーバーサイドプログラミングですが、フロントエンドもぼちぼちやっています。

最近の興味範囲はWordPress、AWS、サーバーレス、UIデザイン。

愛車はセロー。カメラはペンタックス。旅好きです。横浜在住。