Slide 1

Slide 1 text

RxSwiftͷεέδϡʔϥ USAMI Kosuke Fenrir Inc.

Slide 2

Slide 2 text

RxSwift • ඇಉظΠϕϯτΛड͚औΔͨΊͷ࿮૊Έ • UI Πϕϯτड͚औΓ • Web API Ϩεϙϯεड͚औΓ • σʔλͷมԽͷ؂ࢹ

Slide 3

Slide 3 text

ྫ hogeObservable .subscribe(onNext: { _ in // ΠϕϯτΛड͚औͬͨͱ͖ͷॲཧ })

Slide 4

Slide 4 text

ඇಉظΠϕϯτͱεϨου • ඇಉظΠϕϯτʹಉظతͰͳ͍ʹผεϨουͰൃੜ͢Δ • Rx ͰεϨου͸ͲͷΑ͏ʹѻΘΕΔͷ͔ʁ

Slide 5

Slide 5 text

εέδϡʔϥ • Rx ͰεϨουʹ౰ͨΔ֓೦ • ʢਖ਼֬ʹ͸εϨουͱ1ର1Ͱ͸ͳ͍͚Ͳɺ͜͜Ͱ͸লུʣ

Slide 6

Slide 6 text

༨ஊɿRx ͷࡾཁૉ • Observable • Operator • Scheduler

Slide 7

Slide 7 text

εέδϡʔϥ

Slide 8

Slide 8 text

Observable ͱ Observer • ΠϕϯτൃੜݩͱΠϕϯτॲཧ

Slide 9

Slide 9 text

Scheduler • ͦΕͧΕʹεέδϡʔϥΛࢦఆͰ͖Δ

Slide 10

Slide 10 text

observeOn • ΠϕϯτॲཧͷεέδϡʔϥΛม͑Δ

Slide 11

Slide 11 text

ྫ hogeObservable .observeOn(MainScheduler.instance) .subscribe(onNext: { _ in // ϝΠϯεϨουͰಈ࡞͢Δ })

Slide 12

Slide 12 text

subscribeOn • ΠϕϯτൃੜݩͷεέδϡʔϥΛม͑Δ

Slide 13

Slide 13 text

ྫ hogeObservable .subscribeOn(hogeScheduler) .do(onNext: { _ in // hogeScheduler Ͱಈ࡞͢Δ } .observeOn(MainScheduler.instance) .subscribe(onNext: { _ in // ϝΠϯεϨουͰಈ࡞͢Δ })

Slide 14

Slide 14 text

εϨου੍ޚ·ͱΊ • subscribeOn : Πϕϯτൃੜݩͷεέδϡʔϥࢦఆ • Web API ࣮ߦεϨουͷࢦఆ • σʔλϕʔεΞΫηεεϨουͷࢦఆ • observeOn : Πϕϯτॲཧͷεέδϡʔϥͷࢦఆ • UI ॲཧεϨουͷࢦఆ

Slide 15

Slide 15 text

஫ҙ఺ • subscribeOn Ͱ੾Γସ͑Ͱ͖ͳ͍৔߹͕͋Δ • ͦΕ͸ Observable ͷੑ࣭ʹΑΔ

Slide 16

Slide 16 text

Hot ͱ Cold

Slide 17

Slide 17 text

subscribeOn ͕ޮ͔ͳ͍৔߹ • Hot ͳ Observable ͷ৔߹͸੾Γସ͑Ͱ͖ͳ͍ • Cold ͳ Observable ͷ৔߹͸੾Γସ͑Ͱ͖Δ

Slide 18

Slide 18 text

ྫɿ੾Γସ͑Ͱ͖ͳ͍έʔε let hogeRelay = BehaviorRelay(value: "A") let hogeThread = Thread() { sleep(1) hogeRelay.accept("B") sleep(1) hogeRelay.accept("C") } hogeThread.start()

Slide 19

Slide 19 text

ྫɿ੾Γସ͑Ͱ͖ͳ͍έʔε hogeRelay .subscribeOn(MainScheduler.instance) .do(onNext: { _ in // hogeThread Ͱ accept ͨ͠΋ͷ͸ hogeThread Ͱಈ࡞ } .observeOn(MainScheduler.instance) .subscribe(onNext: { _ in // ϝΠϯεϨουͰಈ࡞͢Δ })

Slide 20

Slide 20 text

Observable ͷ෼ྨ : Hot / Cold • Hot • subscribe ͠ͳͯ͘΋ετϦʔϜ͕ྲྀΕΔ • subscribeOn Ͱ੍ޚͰ͖ͳ͍ • Cold • subscribe ͨ͠ΒετϦʔϜ͕ྲྀΕग़͢ • subscribeOn Ͱ੍ޚͰ͖Δ

Slide 21

Slide 21 text

ͲΕ͕ Hot ͰͲΕ͕ Cold ͔ʁ • Hot • Subject ΍ Relay • Rx ͷ֎ଆ͔ΒετϦʔϜʹΠϕϯτΛૹΕΔ • Cold • ্هҎ֎͸͍͍ͩͨ Cold • Rx ͷ੍ޚԼʹ͋Δ

Slide 22

Slide 22 text

·ͱΊ

Slide 23

Slide 23 text

·ͱΊ • εέδϡʔϥ • ੾Γସ͑Δํ๏ • Hot ͱ Cold • Hot ͸੾Γସ͑Ͱ͖ͳ͍