Slide 1

Slide 1 text

RxSwift

Slide 2

Slide 2 text

About me 4 Ӊࠤݟ ެี (@usamik26) 4 ϑΣϯϦϧגࣜձࣾ 4 iOS ΞϓϦΤϯδχΞ 4 0x29ࡀʹͳΓ·ͨ͠

Slide 3

Slide 3 text

Reactive Programming

Slide 4

Slide 4 text

Reactive Programming 4 Πϕϯτ΍஋ͷؔ܎ੑʢσʔλϑϩʔʣΛهड़ 4 ͦͷهड़ͰɺҰํͷมԽΛଞํʹ఻೻ 4 ϝοηʔδૹ৴͕Ӆṭ͞ΕΔ 4 σʔλόΠϯσΟϯά͸ Reactive ͳ࢓૊Έͱ͍͑Δ

Slide 5

Slide 5 text

Functional Reactive Programming 4 ඇಉظσʔλετϦʔϜ 4 ࣌ؒ࣠ʹԊͬͯ஋͕ྲྀΕΔϦετ 4 ετϦʔϜʹର͢ΔϦετૢ࡞ 4 map ΍ filter ͱ͍ͬͨؔ਺ܕͷΠσΟΦϜ

Slide 6

Slide 6 text

RP / FRP ͷར఺ 4 Πϕϯτۦಈॲཧ͕ॻ͖΍͍͢ 4 ඇಉظॲཧ͕ॻ͖΍͍͢ 4 GUI ϓϩάϥϛϯάͱ૬ੑ͕ྑ͍

Slide 7

Slide 7 text

Reactive Programming for iOS

Slide 8

Slide 8 text

Reactive Programming for iOS 4 ReactiveCocoa 4 ReactKit 4 RxSwift 4 ͻͱͪ͘ʹ Reactive ͱ͍ͬͯ΋ߟ͑ํ͕ͪΐͬͱͣͭҧ ͏ 4 ͦΕͧΕʹྑ͕͋͞Δ

Slide 9

Slide 9 text

RxSwift

Slide 10

Slide 10 text

RxSwift ͷಛ௃ 4 ReactiveX ϑΝϛϦʔ 4 ࠷ۙਖ਼ࣜʹՃΘͬͨ 4 Swift ωΠςΟϒ 4 ίΞʢRxSwiftʣ͸ Swift ͷΈ 4 Ұ෦ʢRxCocoaʣ͸ Objective-C ΛؚΉ

Slide 11

Slide 11 text

ReactiveX 4 http://reactivex.io 4 ֤ݴޠ൛͕͋Δ 4 Rx.NET (C#) 4 RxJava 4 RxJS 4 RxSwift 4 ɾɾɾͳͲ 4 Learn once, apply anywhere

Slide 12

Slide 12 text

RxSwift ͷಋೖ 4 Dynamic Library ͱͯ͠ಋೖʢiOS 8 Ҏ߱ʣ 4 CocoaPods 4 Carthage 4 ϓϩδΣΫτ಺ʹ૊ΈࠐΈʢiOS 7 ରԠʣ 4 CocoaSeeds

Slide 13

Slide 13 text

RxSwift / RxCocoa 4 RxSwift 4 Observable / ֤छ Operator / Scheduler ͳͲ 4 RxCocoa 4 UIKit / NSURLSession / KVO ͳͲ

Slide 14

Slide 14 text

Examples

Slide 15

Slide 15 text

Examples 4 ҎԼΛݟΔͱΑ͍ 4 README 4 RxExample ϓϩδΣΫτ

Slide 16

Slide 16 text

Examples 1 combineLatest(firstNameLabel.rx_text, lastNameLabel.rx_text) { $0 + " " + $1 } >- map { "Greeting \($0)" } >- subscribeNext { greeting in greetingLabel.text = greeting }

Slide 17

Slide 17 text

Examples 2 let userRequest: Observable = 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 }

Slide 18

Slide 18 text

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 }

Slide 19

Slide 19 text

Documents 4 ReactiveX ຊՈ͕෼͔Γ΍͍͢ 4 http://reactivex.io 4 RxSwift 4 Documentation/API.md ͳͲ

Slide 20

Slide 20 text

RxSwift 2.0

Slide 21

Slide 21 text

RxSwift 2.0 4 ݱࡏ։ൃதʢGit ϒϥϯν rxswift-2.0ʣ 4 Swift 2 ରԠ 4 ԋࢉࢠ͕ >- ͔Β . ʹมߋ 4 ಺෦ϩδοΫ : RxResult ͔Β try - catch ʹ

Slide 22

Slide 22 text

RxSwift ͓͢͢Ί