RubyMotion

RubyMotionを1週間触ってみた印象

2013-2-5 未だに一定のアクセスがあるようなので念の為追記。

ここにあるのは、2012年5月時点(出たばっかり)で会社として全面的に採用するかどうか、という前提の話なので、もはや役に立つ情報ではありませんm(_ _)m
※ じゃあ非公開にしろよという話なんですが、僕自身このプレゼン資料のネガティブさを大変反省していて、忘れないように残しています。

当時から個人のおもちゃとしては十分おもしろかったですが、あれからRubyMotion自体もどんどん進化して、周辺環境も整っており、組織的な採用を検討する価値があるのではないでしょうか? Pixate とかとの親和性も高そう。(僕も再チャレンジしたいんだけど、お金と時間が足りない^^)

追記おしまい。


 

5-11に会社でオープンソースカフェに行ったんだけどその時にしゃべった。
新しい情報はないし、若干ネガティブなので見ても良いことはないと思う。
こういうしょうもない発表はもうしないぞ、という反省の意味も込めて貼っとく。

あ、当日は省略したけど、XcodeとRubyMotionで作った同じプロジェクト(超適当ブラウザ)は以下のGitHubに置いてある。
RubyMotionApps/TinyBrowser at master · tnantoka/RubyMotionApps · GitHub

その場であった指摘とか


  • インタラクティブにコンソールから操作とかできるのはメリットあるのでは?
    → 確かにその通り。資料に入れなかった僕のミス。ただ現時点ではそこまでメリット感じず。
  • gemでの拡張性
    → その反面Objective-Cのライブラリが一部しか使えないという制約もある。
  • Objective-Cを吐ける機能があったら良いよね!
  • 楽しければそれでいいじゃん!!

まとめ


元々僕はこういうツールは苦手。
でも会社にはRubyは書けるけどObj-Cは触れない人がいて、その目的になら使える?と考えたんだけど、まだ会社で使うのは無理かな、という印象。

いずれにしろできたばかりの現時点で評価を下すのは早いと思う。公開してすぐ判断下されたら開発側もたまらんだろうし。

ただ、余裕のない僕としてはこれ以上時間を投資できないと判断しました。
しばらくはウォッチの体制に入ります。

というわけでObjective-Cでの開発に戻ります、作るぞー。

RedcarエディタでRubyMotionの入力補完

ここ最近RubyMotionをいじってるんだけど、一番不便なのはXcodeのあのサクサクなオートコンプリートの恩恵を受けられないこと。
iOSのAPIは命名規則的に超長くなりがちなので空で打つのとか絶対無理。

そんな中、

RubyMotion Autocompletion – kattrali’s library

なるものを発見。これは使うっきゃない。

Redcar?


RedcarはRuby製のTextMate風テキストエディタらしい。(GPLなオープンソース)
JRubyで動作し、クロスプラットフォームなのがウリ。

早速入れてみよう。
installはgemで。
試した環境はrvmなruby1.9.2。

redcarコマンドでRubyMotionのプロジェクトとかを指定して開けばOK。

な感じ。

Redcar+RubyMotion


次に当初の目的であったRubyMotionのプラグインを入れる。

Redcar+RubyMotion by kattrali

redcarを終了して、

すればOK。
READMEに書いてある、rm ~/.redcar/cache/textmate-bundles.cache は不要だった。

これで、Redcarにcocoaメニューが追加される。

これは良い!


  • Save時にsyntaxエラーを表示してくれる
  • Control + Shift + Spaceで入力補完
  • Command+Rで実行(他にもいろんなrakeコマンドが実行できる)

などなど…。

Javaなので起動がちょっと重いけど、十分なメリットがある。

しばらくこれで開発しよう。

My First RubyMotion App: Very Simple Web Browser

Japanese Version

I try to development my fisrt RubyMotion App.
It’s a very simple web browser.

The following is snapshot of finished product.

Let’s start.

Creating Project


Create and Run “Browser” project.
Still blank, black background app.

No problem.

White Background ViewController


Next, add white background ViewController.
Wrap by NavigationController for easy using NavigationBar.

Here is AppDelegate.

Here is BrowserViewController.
Now, only setting backgroundColor.

Showing Toolbar and NavigationBar


NavigationBar is displayed by default.
So, I just set Toolbar’s hidden to false in BrowserViewController#viewDidLoad.

Loading Google by WebView


Adding UIWebView.
And defining “loadRequest” method for loading webpage.

delegate is set to self.

OK.

Adding LocationBar


Creating TextField for inputting URL.
Adding to NavigationBar and call “loadRequest” in textFieldShouldReturn.
(delegate is self)

Ref: NavigationBarにテキスト欄を表示させる | nk-z.memo

Forward, Back, Refresh, Stop


Adding buttons to toolbar, and set action for calling webView’s methods.

Ref: ツールバーのボタン (UIBarButtonItem) の隠し API – 24/7 twenty-four seven

Adjustment for Usability


Showing indicator when loading, and switch Enable/Disable buttons in Delegate methods of webView.

Ref: UIWebView下で、UIButtonの活性/不活性にする: iPhoneアプリ開発備忘録

Conclusion


That’s all. Did you have fun?

Full source code is available on GitHub.
I’ll add other samples soon.
RubyMotionApps/Browser at master · tnantoka/RubyMotionApps · GitHub

Enjoy iOS Development by Ruby :-)

Sorry for my English.

初めてのRubyMotionアプリ:超シンプルなWeb Browser

English Version

ようやく自分で何か作ってみる。

文字表示するだけ、とかつまらないのでWebViewを使ったシンプルなウェブブラウザを作ってみよう。

完成品はこんなの。

では、さっそく。

プロジェクトの作成


まずはプロジェクトを作成して動かしてみるところまで。

うん、特に何も問題ないですね。

真っ白なViewController


お次は、カスタムViewControllerを作って背景を白にするところまで。
ViewControllerを直接RootViewControllerにはせず、NavigationControllerでWrapします。(NavigationBarを使いたいだけ)

AppDelegateはこんな感じ。

BrowserViewControllerは背景色の設定のみ。

ToolbarとNavigationBarを表示


ナビゲーションバーはデフォルトで出ているはずなのでツールバーのHiddenをfalseにすればOK。

BrowserViewControllerのviewDidLoadでやります。

WebViewでGoogleを読み込む


UIWebViewを追加。loadRequestというメソッドを定義してGoogleを読み込んでみます。
delegateはselfにしておきます。

OKですね。

ロケーションバー


URL入力欄をつくります。

NavigationBarにテキスト欄を表示させる | nk-z.memo を参考にNavigationBarに埋め込みました。
Enterされた時にloadRequestを実行するため、selfをdelegateに設定し、textFieldShouldReturnメソッドを定義しています。
(以下のコード内のViewDidLoadは抜粋)

進む、戻る、更新、中止


ツールバーにそれぞれのボタンを追加し、対応するWebVIewのメソッドをアクションに設定します。
ViewDidLoadに以下を追加。

参考
ツールバーのボタン (UIBarButtonItem) の隠し API – 24/7 twenty-four seven

最後に微調整


ローディング中にIndicatorを表示したり、ボタンを押せる時だけ有効にしたりします。
BrowserViewControllerで以下のようなWebViewのDelegateメソッドを追加すればOK。

参考
UIWebView下で、UIButtonの活性/不活性にする: iPhoneアプリ開発備忘録

おしまい


ちょっと眠くてやっつけ感がでましたが、思ったよりはまらず動きました。
(IBじゃなく)コーディングベースでiOS開発したことある人なら、難なくいけるでしょう。

ただ、この程度だとXCodeの方がはるかにお手軽ですねー。
テキストとか配列とか日付とかバリバリ処理するようなアプリになるとRubyのメリットが生きてくるのかな?

ソースはGitHubで公開しています。
RubyMotionApps/Browser at master · tnantoka/RubyMotionApps · GitHub

しばらくはいじるので、サンプルは適宜追加されるはずです。

 

1 2  Scroll to top