blue_field

技術的なメモとか読書記録とかいろいろ(の予定

RubyMotionが楽しい

ここ1ヶ月くらい、RubyMotionを週末にいじりながら、iOS開発の世界に入門しています。これがなかなか楽しい。 (※一応書いておくと、僕はプログラマーとして働き始めて3年目ですが、iOS開発の経験は全くありません)

2年前くらいにXcode + Objective-C を触ったこともあるのだが、Railsを少しかじった程度のエンジニアにとってあの独特な記法はどうしても馴染まず、そのまま挑戦を断念...Xcode(そしてオブシー)に対する謎の苦手意識だけが残った状態でお蔵入りとなってしまった。

で、2014年。さすがにネイティブアプリ全く開発したことないのエンジニアとしてマズいでしょ...みたいな気運が高まり、ここ最近RubyMotionをかじっているという感じです。

ひと通りチュートリアルなどをやって、とりあえず何か作ってみるかーという段階。Pocketに突っ込んだ記事を読むリーダーアプリを試しに書いています。

ysk1031/Pokebu

まだほとんど形になっていないので、リンク貼るのも恥ずかしいくらいだが...

なんで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のときに限らないが、ドキュメント見るときはこれを使って検索している。VimEmacsはじめエディタとの連携機能もあるので、買っておいて損はないと思う。

エコシステム

まだ難しいことやってないので、RubyMotion用のgemなどはほとんど使っていない。周辺のライブラリの充実度はどうなんだろう。 また、開発者人口はそんなに多くないと思うので、こういったライブラリ群がちゃんとメンテナンスされているのかな、という疑問もある。iOSのバージョンはどんどん上がっていくし。。

チーム開発で使うという選択肢

これもまだ分からない部分ではあるけど、デザイナーを含めた複数人でチームを組んで開発していくという状況を想定すると、やっぱりXcodeを使った標準的な環境でやっていくのがベターなんだろうな、という予想。StoryBoardもTerminalからコマンド叩けば使えると聞いたけど、ちょっとハードル高いかもしれない。

参考になった記事

読んでみて参考になったRubyMotion関連の記事とかコードとか。

全然見れてないのだが、スクリーンキャストのサイトもあった。
The RubyMotion Screencast - MotionInMotion

おわり

とりとめない感じで書いてしまったが、RubyMotion使ってみての所感でした。いつも使っているエディタで気軽に書き始められる、この点はメリットとしてやはり大きいと思っています。楽しい。

スキル的にまだまだゴミレベルなのが辛いとこだが、とりあえず飽きずに続けられそうなので引き続き学んでこうと思う。最初のうちだけかもしれないけど、rakeしてアプリが意図した動きをしてくれた時はすごく嬉しいw

先日Android対応も発表されていましたし、胸アツな感じですね。
Announcing the public Beta of RubyMotion for Android - RubyMotion Blog