RubyMine Enokiを使ったRubyMotion開発

RubyMine Enoki

RubyでiOSアプリを開発できるRubyMotionですが、とうとう、JetBrainsのRuby統合開発環境であるRubyMineのRubyMotion対応バージョンである「RubyMine Enoki」が使えるようになりました。

まだ正式リリースは少し先のようですが、EAP(Early Access Program)というベータ版・リリース候補版利用プログラムで一足先に使えるようになっています。

RubyMine Enoki Early Access: RubyMotion is on Board

RubyMineの現行バージョンは4.5で、Enokiはver.5のコードネームっぽいですが、スプラッシュスクリーンに「榎」(そう、あのえのきでございますよ)の透かしが大きく入っており、もっと引っ張るんじゃないかという期待感が高まります。

RubyMine Enoki

えのきの特徴

Enokiはメジャーバージョンアップなので色々と改良点や新規機能がある訳ですが、やっぱり気になるのはRubyMotionへの対応具合です。

  • メソッドのキーワード引数を認識
  • コード補完対応
  • RubyMotionコンソール(REPL)に対応
  • デバッガ対応

これまでも、Sublime Text 2でコード補完を実現するパッケージが作成されたりしていましたが、RubyMineを使い慣れているプログラマにとって、RubyMotion開発でもRubyMineが使えるのはとても喜ばしいですね。

また、EAPのEnokiは最近アップデートされ、build 124.67になりました。
このアップデートにより、RubyMine上のコンソールでのエラー出力の表示やRubyMineのデバッガを使ったデバッグができるようになっています。
エラー出力がされないのは超ツラかったので、非常に嬉しいですね。

という感じで、結構なキャッチアップ具合と言えるでしょう。JetBrains、相変わらず良い仕事です。

プロジェクトを作成してみる

まず、RubyMotionプロジェクトを作成します。

通常はコンソールで

motion create ExampleText

とかやる訳ですが、RubyMineのメニューから File > New Project … としても作成できます。

プロジェクト新規作成

プロジェクト生成

なお、コンソールで作成したプロジェクトは、File > Open Directory… で開けばRubyMotionプロジェクトとして認識されます。
(古いバージョンのRubyMotionで生成されたプロジェクトだと認識されないことがあります)

サンプルアプリ

今回は、サンプルとして楽天の商品検索APIの結果をテーブルビューで表示するアプリを使います。
ソースはこちらに置いてあります。
サンプルコード

今回のアプリではHTTPでデータを取得する必要があるのですが、HTTPアクセスにはBubbleWrapを使っています。

エディタ機能いろいろ

プロジェクトを作ったら、あとはせっせとコードを書きます。

RubyMotionではCRubyとは少し異なるシンタックスが使われます。
代表的なのはメソッドのキーワード引数ですね。
CRubyも2.0からは導入されることになっていますが、RubyMotionでは(MacRubyでも)既に使われています。

メソッドのキーワード引数

4.5以前のRubyMotionでムリヤリRubyMotionプロジェクトを開くと、キーワード引数の部分が構文エラー扱いになっていましたが、正しいシンタックスとして認識されています。

また、コード入力中の補完も効いています。

コード補完

実際使ってみると、補完候補がまだこなれていない印象が拭えませんが(キーワード引数の補完がうまくいなかいとか)、今後のアップデートに期待したいですね。
ともあれ、多くの場面でかなりコーディングが楽になりました。

ビルド&実行

このソースをビルドするとこんな感じに。

ビルド&実行

ちなみに、シミュレータでの実行結果はこうなります。
楽天の商品検索APIで「Ruby」を検索して、商品名とサムネイル画像をテーブルビューで表示しています。

シミュレータ

我々がこよなく愛するプログラミング言語はどこにも出てきません。
わざわざ「ルビー」で検索してくれる楽天APIには頭が下がります。

RubyMotionの目玉機能の一つである実行中のコンソール(REPL)にも対応ています。 ただ、反応はかなり遅いです。愛なくしては使えない感じです。クールガイにも使えるよう改善して欲しいですね。

実行時コンソール

デバッガ

デバッグモードでの実行では、ブレークポイントを使ったデバッグも可能です。

ブレークポイント

こんな感じで設定して、

デバッガ表示

こんな感じでウォッチできます。

特に設定は必要なく、RubyMotionプロジェクトとして認識されていれば、デバッグ実行するだけでOKです。超お手軽です。

ただ、色々いじってると、シミュレータのプロセスとの接続が切れてしまうことが多いです。
ここでも少なからず愛が必要ですが、現状でもまぁ十分助かります。
RubyMineでWebrick上のRailsアプリをデバッグしていても同様のdisconnectionは発生しますが、RubyMotionデバッグ時の方がキレやすい印象です。最近の中学生のようです。

まとめ

EAPの最初のバージョンはエラー出力がコンソールに出てこないとか、苦行のオモムキもありましたが、先日のバージョンアップでかなり良い感じになってきています。
一通りの開発作業が行えるので、「ごめん、さすがにムリ」な時は普通にiTermとか使うとかして、メイン環境として十分使える状態だと思います。 RubyMineに慣れているプログラマだけでなく、あまり触ったことの無いプログラマも一度試してみてはいかがでしょうか。