-
chatwork
-
@tinpay さん
-
ソースを見た瞬間はどうしろというのだと思った。
- 時間とともに変化する値の関係性を記述する。
- Model, View, ViewModel
- Model - ViewModel - View/ViewController
- VMとVをReactiveCocoaでBindingすると幸せになれる
- テストが書きやすい
- 一時的に使う変数がなくなった
- 難しい。
- 慣れるしかない
- まずはViewModelへのデータバインディングから始めるとよいかも。
- Signalを連鎖し過ぎると読みにくくなる。
- 難しい。
- 直感的に書けない。
- ソースはきれいになる。
- サンプル: https://github.com/tinpay/RACWarikan
- @ninjinkun さん
- https://speakerdeck.com/ninjinkun/yuruyakanareactivecocoafalsedao-ru
- わかりやすい資料
- http://ninjinkun.hatenablog.com/entry/introrxja
- 関数型リアクティブプログラミング (FRP) は非同期データストリームを用いるプログラミングである
- アプリが非常に多くの状態と非同期処理を持っている
- Modelの更新、通知、Viewの更新
- delegateメソッド or NSNotificationCenter
- FrilでのLike
- 利用者
- Github, Netflix (サーバー)
- Chatwork, Freee, Fabric
- RACにロックインされるような実装は避ける
- RACオブジェクトをモジュール間のインタフェースに使用しない
- 用途
- テキストのValidation
- Delegateラッパー
- KVOラッパー
- とにかくMutableなものはVMにあつめる。JSONから生成されたNSObjectはImmutableに。
- VMに対するユニットテストを書く
- RACはbindのみに使う
- タイムラインAPI + 商品詳細API = 商品ViewModel
- 商品ViewModelをRACでbind
- 商品ViewModelを更新する
- Viewには自動的に状態が反映される
- 商品JSONの集約…
- MicrosoftによるRPの実装の一つ
- RACはその流れに沿ってる
- うかつにFRPと言わないほうがよい
- コアライブラリとして使っている。
- 新規開発だからそうできた。
- 1ヶ月でアプリを出したい。
- ただし変更に強い設計にしたい
- サービスの特徴
- ユーザーの入力に応じていろいろな表示を更新することが多い
- UIViewCOntrollerの状態管理
- APIリクエストの発行
- Model(s)の管理
- octokit.objc
- @ikesyo さんのQiitaに資料がまとまっている
-
Pros
- MVVMの各今ポーネコードが統一される
- Signal設計が楽しい
- NSNotification#rac_addObserverForNameとかUITextField#rac_textSignalが便利
-
Cons
- SubscriberやRACSignalが難しい
- ...
-
RACObserveでKVOの置換えからやるとよいのでは。
- @ikesyo さん
- RACのコミッター
- http://www.slideshare.net/syoikeda/var-rac3-reactivecocoa-swift-reactive
-
@uasi さん
-
@at_aka さん
- rac_liftSelector
- distinctUntilChanged