[rubymotion lt] nitronに見るiosアプリ開発の未来

20
RubyMotion LT nitronに見る iOSアプリ開発の未来 西見 公宏 / Masahiro Nishimi (@mah_lab) SonicGarden Inc.

Upload: masahiro-nishimi

Post on 27-May-2015

1.914 views

Category:

Documents


4 download

TRANSCRIPT

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

RubyMotion LT

nitronに見る

iOSアプリ開発の未来

西見 公宏 / Masahiro Nishimi (@mah_lab)SonicGarden Inc.

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

自己紹介

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

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

提供

http://www.sonicgarden.jp/

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

RubyMotionを

はじめて見る人のイメージ

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

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

事実

Objective-CのコードをRubyで書き直しているだけ

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

いやいや、これはちょっと。。

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

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

そこでnitronですよ

https://github.com/mattgreen/nitron

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

nitronとは

● Master-Detailなテーブルビューを持つアプリを超高速に作れるようになるラッパーライブラリ。

● CoreDataにActiveRecordっぽい文法でアクセスする機能もサポート。(でもRelationはサポートしてない!)

● データバインディングとアウトレットを無理やりサポート。

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

2012/7/20現在テストコードが1行も書かれていない強気なGemですが、RubyMotionで書くコードって後々こうなっていくんだろうなーという希望を持てるGemです。

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

開発の流れ (1)

プロジェクトを作成してnitronをBundle

$ motion create task

$ vi Gemfilesource :rubygemsgem "rake"gem "nitron"

$ bundle install$ rm app/app_delegate.rb

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

開発の流れ (2)

Rakefileの設定

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

require 'rubygems'require 'bundler'Bundler.require

Motion::Project::App.setup do |app|...

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

開発の流れ (3)

StoryboardとCoreDataの用意

XcodeでMaster-Detailプロジェクトを作り、生成されたStoryboardとxcdatamodeldをXcodeプロジェクトからコピーする。

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

開発の流れ (4)

CoreDataの設定

Taskエンティティを作成する。

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

開発の流れ (5)

Taskモデルを作成する

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

def due primitiveValueForKey("due").to_s endend

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

開発の流れ (6)

コントローラを作成する

# task_list_view_controller.rbclass TaskListViewController < Nitron::TableViewController collection { Task.all }end

# task_detail_view_controller.rbclass TaskDetailViewController < Nitron::ViewControllerend

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

開発の流れ (7)

データバインディング

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

開発の流れ (8)

動かしてみる

$ rake

(rake) Task.create(title: "Buy a pony", due: NSDate.date)

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

Railsっぽい!

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

class TaskCreateViewController < Nitron::ViewController on :cancel do close endend

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

これからのRubyMotion

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

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

Have a good RubyMotion!!