[rubymotion lt] nitronに見るiosアプリ開発の未来
TRANSCRIPT
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 Gemfilesource :rubygemsgem "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 endend
開発の流れ (6)
コントローラを作成する
# task_list_view_controller.rbclass TaskListViewController < Nitron::TableViewController collection { Task.all }end
# task_detail_view_controller.rbclass TaskDetailViewController < Nitron::ViewControllerend
開発の流れ (7)
データバインディング
開発の流れ (8)
動かしてみる
$ rake
(rake) Task.create(title: "Buy a pony", due: NSDate.date)
Railsっぽい!
例では紹介できなかったのですが、コントローラにアウトレットのイベントを書いてハンドリングすることもできます。
class TaskCreateViewController < Nitron::ViewController on :cancel do close endend
これからのRubyMotion
iOS LibraryのレイヤーをRubyっぽくラップしたRailsみたいなGemの出現によって、一気に盛り上がるような気がします。nitronからはそんな流れが垣間見れたのでした。
Have a good RubyMotion!!