RubyMotion LT

nitronに見る
iOSアプリ開発の未来
西見 公宏 / Masahiro Nishimi
(@mah_lab)
SonicGarden Inc.
自己紹介




   http://thinkit.co.jp/book/2012/06/07/3569
提供




     http://www.sonicgarden.jp/
RubyMotionを
はじめて見る人のイメージ



もしかして:
Objective-Cのコードを
Rubyで書き直しているだけ
事実



Objective-Cのコードを
Rubyで書き直しているだけ
いやいや、これはちょっと。。

もう少しRubyっぽくならんか?
Railsみたいな感じに開発でき
んものか?
そこでnitronですよ




  https://github.com/mattgreen/nitron
nitronとは

● Master-Detailなテーブルビューを持つアプリを
  超高速に作れるようになるラッパーライブラリ。
● CoreDataにActiveRecordっぽい文法でアクセス
  する機能もサポート。(でもRelationはサポートし
  てない!)
● データバインディングとアウトレットを無理やりサ
  ポート。
2012/7/20現在テストコードが1
行も書かれていない強気なGem
ですが、RubyMotionで書くコー
ドって後々こうなっていくんだろ
うなーという希望を持てるGemで
す。
開発の流れ (1)
プロジェクトを作成してnitronをBundle

$ motion create task

$ vi Gemfile
source :rubygems
gem "rake"
gem "nitron"

$ bundle install
$ rm app/app_delegate.rb
開発の流れ (2)
Rakefileの設定

$:.unshift("/Library/RubyMotion/lib")
require 'motion/project'

require 'rubygems'
require 'bundler'
Bundler.require

Motion::Project::App.setup do |app|
...
開発の流れ (3)
StoryboardとCoreDataの用意




XcodeでMaster-Detailプロジェクトを作り、
生成されたStoryboardとxcdatamodeldを
Xcodeプロジェクトからコピーする。
開発の流れ (4)
CoreDataの設定

Taskエンティティを作成する。
開発の流れ (5)
Taskモデルを作成する

class Task < Nitron::Model
 def self.all
   order("due")
 end

 def due
  primitiveValueForKey("due").to_s
 end
end
開発の流れ (6)
コントローラを作成する
# task_list_view_controller.rb
class TaskListViewController < Nitron::
TableViewController
 collection { Task.all }
end

# task_detail_view_controller.rb
class TaskDetailViewController < Nitron::ViewController
end
開発の流れ (7)
データバインディング
開発の流れ (8)
動かしてみる

$ rake

(rake) Task.create(title:
"Buy a pony", due: NSDate.date)
Railsっぽい!

例では紹介できなかったのですが、コントローラに
アウトレットのイベントを書いてハンドリングすること
もできます。

class TaskCreateViewController < Nitron::ViewController
 on :cancel do
   close
 end
end
これからのRubyMotion

iOS LibraryのレイヤーをRubyっぽくラップ
したRailsみたいなGemの出現によって、一
気に盛り上がるような気がします。nitronか
らはそんな流れが
垣間見れたのでした。
Have a good RubyMotion!!

[RubyMotion LT] nitronに見るiosアプリ開発の未来