Submit Search
Upload
はじめてのReactiveCocoa
•
35 likes
•
11,068 views
章平 福井
Follow
ReactiveCocoaを1ヶ月つかってみたよ。
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 36
Download now
Download to read offline
Recommended
dotcle 経験0から Meteor iOS アプリを2ヶ月半で作ってリリースしてみた
dotcle 経験0から Meteor iOS アプリを2ヶ月半で作ってリリースしてみた
Nobutaka OSHIRO
App inventorで想いを形に
App inventorで想いを形に
Takeaki Tada
Meta1のSLAM機能を試してみた
Meta1のSLAM機能を試してみた
WheetTweet
SwiftでSNS投稿を行う
SwiftでSNS投稿を行う
Takashi Matsumoto
20161014 vrarmr勉強会発表資料 slideshare
20161014 vrarmr勉強会発表資料 slideshare
WheetTweet
iOSアプリのリジェクト体験談
iOSアプリのリジェクト体験談
Hisaharu Kato
20161125 Unity-Android連携の発表資料
20161125 Unity-Android連携の発表資料
WheetTweet
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
Fumiya Sakai
Recommended
dotcle 経験0から Meteor iOS アプリを2ヶ月半で作ってリリースしてみた
dotcle 経験0から Meteor iOS アプリを2ヶ月半で作ってリリースしてみた
Nobutaka OSHIRO
App inventorで想いを形に
App inventorで想いを形に
Takeaki Tada
Meta1のSLAM機能を試してみた
Meta1のSLAM機能を試してみた
WheetTweet
SwiftでSNS投稿を行う
SwiftでSNS投稿を行う
Takashi Matsumoto
20161014 vrarmr勉強会発表資料 slideshare
20161014 vrarmr勉強会発表資料 slideshare
WheetTweet
iOSアプリのリジェクト体験談
iOSアプリのリジェクト体験談
Hisaharu Kato
20161125 Unity-Android連携の発表資料
20161125 Unity-Android連携の発表資料
WheetTweet
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
Fumiya Sakai
iPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめ
Hiramatsu Ryosuke
Rnyoutube
Rnyoutube
yugo matsumoto
iOSローカライズことはじめ_Swiftビギナーズ20160109.pdf
iOSローカライズことはじめ_Swiftビギナーズ20160109.pdf
俊輔 嶺村
Swiftで初アプリリリースしてみて振り返り
Swiftで初アプリリリースしてみて振り返り
Hikari Yanagihara
iOSアプリを審査に提出してみた話
iOSアプリを審査に提出してみた話
Hideki Abe
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
Yahoo!デベロッパーネットワーク
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
LINE Corporation
Swift歴2ヶ月でアプリを8本リリースしてみた話
Swift歴2ヶ月でアプリを8本リリースしてみた話
Makoto Nishimoto
テレニコツイ
テレニコツイ
jz5 MATSUE
ABC 2012 spring
ABC 2012 spring
Takeaki Tada
Onlab [growth] hackers conference 2013 Ryosuke Matsumoto
Onlab [growth] hackers conference 2013 Ryosuke Matsumoto
Ryosuke Matsumoto
複数人でSwift開発を行うには
複数人でSwift開発を行うには
Yuya Fujiwara
React Native(Expo)ではじめる"ゆとり"モバイルアプリ開発
React Native(Expo)ではじめる"ゆとり"モバイルアプリ開発
Show Izumiya
スタートアップ勉強会
スタートアップ勉強会
Ken Haneda
嗚呼、素晴らしき哉 MonoTouch
嗚呼、素晴らしき哉 MonoTouch
hIDDENxv
LOUPE study#2
LOUPE study#2
Yuka Suzuki
Swiftvol.1
Swiftvol.1
Hikari Yanagihara
App inventor for bussiness
App inventor for bussiness
Takeaki Tada
!(びっくり)するかもしれないヤフーでのアプリ開発
!(びっくり)するかもしれないヤフーでのアプリ開発
Yahoo!デベロッパーネットワーク
Techcrunch hackathon 2013
Techcrunch hackathon 2013
Nao Tokui
More Related Content
Similar to はじめてのReactiveCocoa
iPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめ
Hiramatsu Ryosuke
Rnyoutube
Rnyoutube
yugo matsumoto
iOSローカライズことはじめ_Swiftビギナーズ20160109.pdf
iOSローカライズことはじめ_Swiftビギナーズ20160109.pdf
俊輔 嶺村
Swiftで初アプリリリースしてみて振り返り
Swiftで初アプリリリースしてみて振り返り
Hikari Yanagihara
iOSアプリを審査に提出してみた話
iOSアプリを審査に提出してみた話
Hideki Abe
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
Yahoo!デベロッパーネットワーク
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
LINE Corporation
Swift歴2ヶ月でアプリを8本リリースしてみた話
Swift歴2ヶ月でアプリを8本リリースしてみた話
Makoto Nishimoto
テレニコツイ
テレニコツイ
jz5 MATSUE
ABC 2012 spring
ABC 2012 spring
Takeaki Tada
Onlab [growth] hackers conference 2013 Ryosuke Matsumoto
Onlab [growth] hackers conference 2013 Ryosuke Matsumoto
Ryosuke Matsumoto
複数人でSwift開発を行うには
複数人でSwift開発を行うには
Yuya Fujiwara
React Native(Expo)ではじめる"ゆとり"モバイルアプリ開発
React Native(Expo)ではじめる"ゆとり"モバイルアプリ開発
Show Izumiya
スタートアップ勉強会
スタートアップ勉強会
Ken Haneda
嗚呼、素晴らしき哉 MonoTouch
嗚呼、素晴らしき哉 MonoTouch
hIDDENxv
LOUPE study#2
LOUPE study#2
Yuka Suzuki
Swiftvol.1
Swiftvol.1
Hikari Yanagihara
App inventor for bussiness
App inventor for bussiness
Takeaki Tada
!(びっくり)するかもしれないヤフーでのアプリ開発
!(びっくり)するかもしれないヤフーでのアプリ開発
Yahoo!デベロッパーネットワーク
Techcrunch hackathon 2013
Techcrunch hackathon 2013
Nao Tokui
Similar to はじめてのReactiveCocoa
(20)
iPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめ
Rnyoutube
Rnyoutube
iOSローカライズことはじめ_Swiftビギナーズ20160109.pdf
iOSローカライズことはじめ_Swiftビギナーズ20160109.pdf
Swiftで初アプリリリースしてみて振り返り
Swiftで初アプリリリースしてみて振り返り
iOSアプリを審査に提出してみた話
iOSアプリを審査に提出してみた話
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
Swift歴2ヶ月でアプリを8本リリースしてみた話
Swift歴2ヶ月でアプリを8本リリースしてみた話
テレニコツイ
テレニコツイ
ABC 2012 spring
ABC 2012 spring
Onlab [growth] hackers conference 2013 Ryosuke Matsumoto
Onlab [growth] hackers conference 2013 Ryosuke Matsumoto
複数人でSwift開発を行うには
複数人でSwift開発を行うには
React Native(Expo)ではじめる"ゆとり"モバイルアプリ開発
React Native(Expo)ではじめる"ゆとり"モバイルアプリ開発
スタートアップ勉強会
スタートアップ勉強会
嗚呼、素晴らしき哉 MonoTouch
嗚呼、素晴らしき哉 MonoTouch
LOUPE study#2
LOUPE study#2
Swiftvol.1
Swiftvol.1
App inventor for bussiness
App inventor for bussiness
!(びっくり)するかもしれないヤフーでのアプリ開発
!(びっくり)するかもしれないヤフーでのアプリ開発
Techcrunch hackathon 2013
Techcrunch hackathon 2013
はじめてのReactiveCocoa
1.
はじめての ReactiveCocoa 福井 章平 2014/07/26
2.
自己紹介 ❖ チンペイ( @tinpay
) ❖ ChatWork 株式会社 モバイルチーム ❖ 個人でもアプリ制作 速シリーズ(速Reminder、速Calendar、速Tweet、など) 日付の電卓、おえかキロク、失業保険電卓、など
3.
自己紹介 ❖ iOSアプリ開発 iPhone3Gがでたときから ❖ 20本ぐらいリリースしました。 ❖
iPhoneL♡VE部っていう飲み会なオフ会やってるので、 来てください。 http://loved-iphone.com/
4.
ReactiveCocoaに 1ヶ月前に初めて触れた
5.
初めてソースを見た時
6.
7.
そんな僕が 1ヶ月間、ReactiveCocoaで 実装してみました
8.
アジェンダ 1. ReactiveCocoaって? 2. メリットとデメリット 3.
まとめ
9.
アジェンダ 1. ReactiveCocoaって? 2. メリットとデメリット 3.
まとめ
10.
1. ReactiveCocoaって? Objective-Cで関数型リアクティブプロ • •
• • • • • • グラミングをサポートするライブラリ • • • • • Objective-CでMVVMを実現するため • • • • にReactiveCocoaを利用する
11.
pod "ReactiveCocoa" CocoaPodsで インストールしたら使えます
12.
リアクティブプログラミング MVVM って なんなん?
13.
リアクティブプログラミング ! コンピュータ用語におけるリアクティブプログラミングとは、変更を伝 播させるデータフロー指向のプログラミングパラダイムを指します。 それは静的ないし動的なデータフローを容易に表現できることを意味し ます。背後にある実行モデルが、変更をデータフローへ自動的に伝播さ せるということです。 たとえば、命令型プログラミングでは、a := b
+ c という式は、b + c が直ちに評価され、aに代入されることを意味します。あとで b や c が 変更されたとしても、それは a には反映されません。一方、リアクティ ブプログラミングの場合では、値が自動的に更新されることになりま す。 ! ! 出典 Reactive programming - Wikipedia, the free encyclopedia
14.
リアクティブプログラミング 時間とともに変化する値の関係性を • • • 記述してプログラミングする。
15.
【命令型プログラミング】 a = 1; b
= a + 2; a = 3; print(b); aの値が変わっても、 計算時からbの値はかわらない よくある例 // 3
16.
【リアクティブプログラミング】 a = 1; b
= a + 2; a = 3; print(b); aが変わると bの値も変わる aとbの関係は変わらない • • 数学の「関数」 y = x + 2 よくある例 // 5
17.
MVVM • Model データ・ビジネスロジック • View 画面・UI •
ViewModel Viewの値・動作を保持して、Modelとの情報伝達 を行う
18.
MVVM Model ViewModel View/ ViewController バインディング M VM
V ReactiveCocoaを使って バインディングすれば幸せに
19.
試しにバインディングしてみる
20.
ViewModelにバインディング ViewModel View/ ViewController hogeTextField.text fugaTextField.text piyoSlider.value NSString *hoge NSString *fuga NSNumber
*piyo
21.
ReactiveCocoaが無い時… - (void)viewDidLoad{ self.viewModel =
[[HogeHogeViewModel alloc] init]; self.hogeTextField.delegate = self; self.fugaTextField.delegate = self; self.hogeTextField.tag = 1; self.fugaTextField.tag = 2; [self.piyoSlider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged]; } ! -(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange: (NSRange)range replacementString:(NSString *)string{ NSMutableString *str = [textField.text mutableCopy]; [str replaceCharactersInRange:range withString:string]; if(textField.tag==1){ self.viewModel.hoge = self.hogeTextField.text; }else if(textField.tag==2){ self.viewModel.fuga = self.fugaTextField.text; } return YES; } ! - (IBAction)sliderValueChanged:(UISlider *)sender { self.viewModel.piyo = [NSNumber numberWithFloat:sender.value]; } 値が変わるところでViewModelにセットする必要がある。
22.
ReactiveCocoaがある時♪ - (void)viewDidLoad{ self.viewModel =
[[HogeHogeViewModel alloc] init]; [self.hogeTextField.rac_textSignal subscribeNext:^(NSString *txt) { self.viewModel.hoge = txt; }]; [self.fugaTextField.rac_textSignal subscribeNext:^(NSString *txt) { self.viewModel.fuga = txt; }]; RAC(self,piyo) = [self.piyoSlider rac_newValueChannelWithNilValue: [NSNumber numberWithFloat:0.f]]; } インスタンス生成時に 関係性を書くだけ
23.
試しにReactiveCocoaで 書きなおしてみる
24.
https://github.com/tinpay/RACWarikan 命令型で書いた時のソースと リアクティブで書いた時のソース比較
25.
アジェンダ 1. ReactiveCocoaって? 2. メリットとデメリット 3.
まとめ
26.
・ViewControllerがスッキリした メリット1 ・処理はViewModelに記述されている。 (MVVMの恩恵) ・ステータスによるUI分岐がなくなる
27.
・テストが書きやすい メリット2 ・ビジネスロジックはModelに記述され ている。 →UIに依存しないテストが書ける
28.
・一時的に使う変数がなくなった メリット3 ・バグが減る
29.
・難しい。。。。。 デメリット1 ・1ヶ月ぐらいでは、今までどおり書い た方が何倍も早い。イメージがわかない。 ・慣れるしかない!
30.
・Signalを連鎖しすぎるとみにくい デメリット2 ・保守が大変な気がする ・そこはテストでカバー??
31.
アジェンダ 1. ReactiveCocoaって? 2. メリットとデメリット 3.
まとめ
32.
まとめ むずかしい
33.
まとめ 直感的に書けない
34.
まとめ もどかしい
35.
まとめ でも ソースは きれいになる
36.
まとめ 頑張りましょう\(^o^)/ おわりhttp://www.tinpay.com/
Download now