RubyMotionが楽しい
ここ1ヶ月くらい、RubyMotionを週末にいじりながら、iOS開発の世界に入門しています。これがなかなか楽しい。 (※一応書いておくと、僕はプログラマーとして働き始めて3年目ですが、iOS開発の経験は全くありません)
2年前くらいにXcode + Objective-C を触ったこともあるのだが、Railsを少しかじった程度のエンジニアにとってあの独特な記法はどうしても馴染まず、そのまま挑戦を断念...Xcode(そしてオブシー)に対する謎の苦手意識だけが残った状態でお蔵入りとなってしまった。
で、2014年。さすがにネイティブアプリ全く開発したことないのエンジニアとしてマズいでしょ...みたいな気運が高まり、ここ最近RubyMotionをかじっているという感じです。
ひと通りチュートリアルなどをやって、とりあえず何か作ってみるかーという段階。Pocketに突っ込んだ記事を読むリーダーアプリを試しに書いています。
まだほとんど形になっていないので、リンク貼るのも恥ずかしいくらいだが...
なんでRubyMotionか
なぜObjective-C (Swift) で書いてないのかというと、RubyMotionに対して取っ付きやすさを感じたことが大きい。普段会社でRailsを書いている身としては、Rubyのシンタックスを使ってiOS書けるというのは、大きな魅力として映った。(ちと代金が高いけど、しっかり開発を続けてくれている印象だし、まあしょうがないかな...) あとは、前述の謎の苦手意識も未だにあったw
すごく単純な例でアレだが、例えばtableView:numberOfRowsInSection:
を比較すると、こんな感じになる。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [items count]; }
- RubyMotion
def tableView(tableView, numberOfRowsInSection: section) @items.count end
RubyMotionしか触れていないので、一般的な開発方法と比較した時のメリット・デメリットみたいなのは良く分からない。以前Rebuildで、伊藤直也さんが「個人で週末にカジュアルな感じでiOS開発をする、というケースにはすごく合っている」みたいなことをおっしゃっていた記憶があるが、それにはすごく賛成です。人それぞれだとは思うが、僕にとってはだいぶ敷居下がる感じがあるし、楽しく書ける。Xcodeとりあえず使わなくても良いし...
Cocoa TouchのAPIは使いこなさきゃいけない
Cocoa Touchの存在は当然無視できない。いくらRuby風に書けてもここは避けて通れないので、適応するしかないようだ。いまのところ右も左も分からないので、「実現したいことをググる => コードが出てくる => ドキュメント眺めて内容を理解する => 書いてみる」、みたいなのの繰り返し。クラス名やメソッド名がいちいち長かったりして、最初はクソ...とか思いながら書いていたが、慣れてくるとそんなに嫌いじゃないことが分かってきた。
AppleのドキュメントがObjective-C (Swift) で書かれているのは当たり前だが、ググって出てくるコードも大半がオブシー。なので、苦手意識はだいぶ薄れた。書くのはまだ難しいと思うが、読むことへの抵抗(ハードルの高さ)は減ってきた気がする。。
エディタとか
RubyMotionに限らず、この数ヶ月はAtom Editorを使ってコードを書くことが多い。RubyMotion用の補完パッケージがあったので、ありがたく利用しています。Cmd + Ctrl + Space
で補完候補が出る。補完機能ないとさすがに無理すね...
あとはDash.appが便利。RubyMotionのときに限らないが、ドキュメント見るときはこれを使って検索している。VimやEmacsはじめエディタとの連携機能もあるので、買っておいて損はないと思う。
エコシステム
まだ難しいことやってないので、RubyMotion用のgemなどはほとんど使っていない。周辺のライブラリの充実度はどうなんだろう。 また、開発者人口はそんなに多くないと思うので、こういったライブラリ群がちゃんとメンテナンスされているのかな、という疑問もある。iOSのバージョンはどんどん上がっていくし。。
チーム開発で使うという選択肢
これもまだ分からない部分ではあるけど、デザイナーを含めた複数人でチームを組んで開発していくという状況を想定すると、やっぱりXcodeを使った標準的な環境でやっていくのがベターなんだろうな、という予想。StoryBoardもTerminalからコマンド叩けば使えると聞いたけど、ちょっとハードル高いかもしれない。
参考になった記事
読んでみて参考になったRubyMotion関連の記事とかコードとか。
- RubyMotion JP
- RubyMotion Runtime Guide
- RubyMotion Tutorial: Ruby で iOS アプリを作ろう
- Rubyist が RubyMotion で iOS アプリの開発を始める方法 - Qiita
- 実践!RubyMotionの連載記事一覧 - Mobile Touch - モバイル/タブレット開発者およびデザイナー向け情報ポータル
- 初めてのRubyMotionアプリ:超シンプルなWeb Browser - tobioka.net - You Ain't Gonna Need It
- RubyMotion を1年以上使い続けてみての雑感 - naoyaのはてなダイアリー
- HipByte/RubyMotionSamples
- HipByte社が出してる公式のサンプル集
- naoya/HBFav2
- RubyMotion製iOSアプリ "HBFav"のコード。アプリ愛用してます
全然見れてないのだが、スクリーンキャストのサイトもあった。
The RubyMotion Screencast - MotionInMotion
おわり
とりとめない感じで書いてしまったが、RubyMotion使ってみての所感でした。いつも使っているエディタで気軽に書き始められる、この点はメリットとしてやはり大きいと思っています。楽しい。
スキル的にまだまだゴミレベルなのが辛いとこだが、とりあえず飽きずに続けられそうなので引き続き学んでこうと思う。最初のうちだけかもしれないけど、rake
してアプリが意図した動きをしてくれた時はすごく嬉しいw
先日Android対応も発表されていましたし、胸アツな感じですね。
Announcing the public Beta of RubyMotion for Android - RubyMotion Blog