Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

RxSwift

2,618 views

Published on

http://kanmoba.connpass.com/event/18762/

Published in: Software
  • Be the first to comment

RxSwift

  1. 1. RxSwift
  2. 2. About me 4 宇佐見 公輔 (@usamik26) 4 フェンリル株式会社 4 iOS アプリエンジニア 4 0x29歳になりました
  3. 3. Reactive Programming
  4. 4. Reactive Programming 4 イベントや値の関係性(データフロー)を記述 4 その記述で、一方の変化を他方に伝播 4 メッセージ送信が隠 される 4 データバインディングは Reactive な仕組みといえる
  5. 5. Functional Reactive Programming 4 非同期データストリーム 4 時間軸に沿って値が流れるリスト 4 ストリームに対するリスト操作 4 map や filter といった関数型のイディオム
  6. 6. RP / FRP の利点 4 イベント駆動処理が書きやすい 4 非同期処理が書きやすい 4 GUI プログラミングと相性が良い
  7. 7. Reactive Programming for iOS
  8. 8. Reactive Programming for iOS 4 ReactiveCocoa 4 ReactKit 4 RxSwift 4 ひとくちに Reactive といっても考え方がちょっとずつ違 う 4 それぞれに良さがある
  9. 9. RxSwift
  10. 10. RxSwift の特徴 4 ReactiveX ファミリー 4 最近正式に加わった 4 Swift ネイティブ 4 コア(RxSwift)は Swift のみ 4 一部(RxCocoa)は Objective-C を含む
  11. 11. ReactiveX 4 http://reactivex.io 4 各言語版がある 4 Rx.NET (C#) 4 RxJava 4 RxJS 4 RxSwift 4 ・・・など 4 Learn once, apply anywhere
  12. 12. RxSwift の導入 4 Dynamic Library として導入(iOS 8 以降) 4 CocoaPods 4 Carthage 4 プロジェクト内に組み込み(iOS 7 対応) 4 CocoaSeeds
  13. 13. RxSwift / RxCocoa 4 RxSwift 4 Observable / 各種 Operator / Scheduler など 4 RxCocoa 4 UIKit / NSURLSession / KVO など
  14. 14. Examples
  15. 15. Examples 4 以下を見るとよい 4 README 4 RxExample プロジェクト
  16. 16. Examples 1 combineLatest(firstNameLabel.rx_text, lastNameLabel.rx_text) { $0 + " " + $1 } >- map { "Greeting ($0)" } >- subscribeNext { greeting in greetingLabel.text = greeting }
  17. 17. Examples 2 let userRequest: Observable<User> = API.getUser("me") let friendsRequest: Observable<[Friend]> = API.getFriends("me") zip(userRequest, friendsRequest) { user, friends in return (user, friends) } >- observeOn(MainScheduler.sharedInstance) >- subscribeNext { (user, friends) in // bind to UI }
  18. 18. Examples 3 searchTextField.rx_text >- throttle(0.5, MainScheduler.sharedInstance) >- distinctUntilChanged() >- map { query in API.getSearchResults(query) >- retry(3) >- startWith([]) >- catchError([]) } >- switchLatest >- map { results in // bind to UI }
  19. 19. Documents 4 ReactiveX 本家が分かりやすい 4 http://reactivex.io 4 RxSwift 4 Documentation/API.md など
  20. 20. RxSwift 2.0
  21. 21. RxSwift 2.0 4 現在開発中(Git ブランチ rxswift-2.0) 4 Swift 2 対応 4 演算子が >- から . に変更 4 内部ロジック : RxResult から try - catch に
  22. 22. RxSwift おすすめ

×