98
RxSwift @ RxSwift

RxSwift コードリーディングの勘所@社内RxSwift勉強会

Embed Size (px)

Citation preview

Page 1: RxSwift コードリーディングの勘所@社内RxSwift勉強会

RxSwift @ RxSwift

Page 2: RxSwift コードリーディングの勘所@社内RxSwift勉強会

https://speakerdeck.com/bricklife/rxswiftfalseobserveontosubscribeonwoli-jie-suru

Page 3: RxSwift コードリーディングの勘所@社内RxSwift勉強会

• RxMarbles

Hot

• RxSwift Operator

ReactiveX

(Driver …)

Page 4: RxSwift コードリーディングの勘所@社内RxSwift勉強会

• Operator

• Hot / Cold

Page 5: RxSwift コードリーディングの勘所@社内RxSwift勉強会

• RxSwift v2.5.0 (2016 7 master)

• 1

Page 6: RxSwift コードリーディングの勘所@社内RxSwift勉強会

1

Operator source

Page 7: RxSwift コードリーディングの勘所@社内RxSwift勉強会
Page 8: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Sequence Map Filter

Page 9: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Sequence Map Filter

Page 10: RxSwift コードリーディングの勘所@社内RxSwift勉強会

filter

Page 11: RxSwift コードリーディングの勘所@社内RxSwift勉強会

filter

Filter

Page 12: RxSwift コードリーディングの勘所@社内RxSwift勉強会

filter

source filter

Observable

Page 13: RxSwift コードリーディングの勘所@社内RxSwift勉強会

map

Map

Page 14: RxSwift コードリーディングの勘所@社内RxSwift勉強会

source

Map source Sequence(Sequence Observable.of )

Page 15: RxSwift コードリーディングの勘所@社内RxSwift勉強会

source

Filter source Map

Page 16: RxSwift コードリーディングの勘所@社内RxSwift勉強会

source

Sequence Map Filter

source

Page 17: RxSwift コードリーディングの勘所@社内RxSwift勉強会

source

Sequence Map Filter

source

source

Page 18: RxSwift コードリーディングの勘所@社内RxSwift勉強会

source

Sequence Map Filter

source

source

Page 19: RxSwift コードリーディングの勘所@社内RxSwift勉強会

create Operator source

• create, just, of, error, never create

Operator source

• map filter Operator

Hot subscribeOn/observeOn

source

Page 20: RxSwift コードリーディングの勘所@社内RxSwift勉強会

create Operator source

• Operator

create Operator

Page 21: RxSwift コードリーディングの勘所@社内RxSwift勉強会

source

• source Observable

source ( ) subscribe

• ( )subscribe

Hot / Cold Operator

Page 22: RxSwift コードリーディングの勘所@社内RxSwift勉強会

source

• create Operator Observable

source

source

Sequence Map Filter

source

Page 23: RxSwift コードリーディングの勘所@社内RxSwift勉強会

2

Operator

Page 24: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Operator

Operator

• source subscribe

• source

Page 25: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Operator

Sequence Map Filter Observer

subscribe

Page 26: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Operator

subscribe

Sequence Map Filter Observer

subscribe subscribe

source subscribe

Page 27: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Operator

Sequence Map Filter Observer

on on on

Page 28: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Operator

subscribe

Sequence Map Filter Observer

subscribe subscribe

on on on

Page 29: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Operator

3

• source subscribe

• subscribe

• on

Page 30: RxSwift コードリーディングの勘所@社内RxSwift勉強会

: Filter

Page 31: RxSwift コードリーディングの勘所@社内RxSwift勉強会

: Filter

run subscribe

Page 32: RxSwift コードリーディングの勘所@社内RxSwift勉強会

: Filter

sink source subscribe

Page 33: RxSwift コードリーディングの勘所@社内RxSwift勉強会

: Filter

Sequence Map Filter Observer

subscribe

subscribe

Page 34: RxSwift コードリーディングの勘所@社内RxSwift勉強会

: Filter

Sequence Map Filter Observer

subscribe subscribe

source subscribe

Page 35: RxSwift コードリーディングの勘所@社内RxSwift勉強会

: Filter

Page 36: RxSwift コードリーディングの勘所@社内RxSwift勉強会

: Filter

on source

Page 37: RxSwift コードリーディングの勘所@社内RxSwift勉強会

: Filter

Next

Page 38: RxSwift コードリーディングの勘所@社内RxSwift勉強会

: Filter

Page 39: RxSwift コードリーディングの勘所@社内RxSwift勉強会

: Filter

Page 40: RxSwift コードリーディングの勘所@社内RxSwift勉強会

: Filter

Sequence Map Filter Observer

on

source

Page 41: RxSwift コードリーディングの勘所@社内RxSwift勉強会

: Filter

Sequence Map Filter Observer

on on

Page 42: RxSwift コードリーディングの勘所@社内RxSwift勉強会

✌('ω'✌ ) ✌('ω')✌ ( ✌'ω')✌

Page 43: RxSwift コードリーディングの勘所@社内RxSwift勉強会

3

• source subscribe

• subscribe

• on

Page 44: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Subject …

3

• source subscribe

• subscribe

• on

Page 45: RxSwift コードリーディングの勘所@社内RxSwift勉強会

create Operator …

• subscribe

Page 46: RxSwift コードリーディングの勘所@社内RxSwift勉強会

3

Sink / SinkIter

Page 47: RxSwift コードリーディングの勘所@社内RxSwift勉強会

( ) Operator

• source subscribe

• source

Page 48: RxSwift コードリーディングの勘所@社内RxSwift勉強会

( ) Operator

• source subscribe

• source

subscribe observer

Page 49: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Filter

Page 50: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Filter

Page 51: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Filter

Page 52: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Sink

Page 53: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Sink

• ( )source observer

• Filter FilterSink Map MapSink

Operator Sink

Page 54: RxSwift コードリーディングの勘所@社内RxSwift勉強会

(subscribe )

Page 55: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Sequence Map Filter Observer

Page 56: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Filter

Sequence Map Filter Observer

subscribe run

subscribe(observer)

Page 57: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Filter

Sequence Map Filter Observer

subscribe(observer)

observer

Page 58: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Filter

Sequence Map Filter Observer

observer FilterSink

FilterSink(observer)

Page 59: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Filter

Sequence Map Filter Observer

FilterSink source subscribe

source.subscribe(FilterSink(observer))

Page 60: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Map

Sequence Map Filter Observer

source.subscribe(FilterSink(observer))

Page 61: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Map

Sequence Map Filter Observer

source.subscribe(FilterSink(observer))

observer FilterSink(observer)

Page 62: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Map

Sequence Map Filter Observer

MapSink(FilterSink(observer))

observer FilterSink

Page 63: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Map

Sequence Map Filter Observer

source.subscribe(MapSink(FilterSink(observer)))

MapSink source subscribe

Page 64: RxSwift コードリーディングの勘所@社内RxSwift勉強会

(on )

Page 65: RxSwift コードリーディングの勘所@社内RxSwift勉強会

MapSink

Sequence Map Filter Observer

MapSink(FilterSink(observer)).on(.Next(2))

Page 66: RxSwift コードリーディングの勘所@社内RxSwift勉強会

MapSink

Sequence Map Filter Observer

selector

.Next(2) → .Next(4)

Page 67: RxSwift コードリーディングの勘所@社内RxSwift勉強会

MapSink

Sequence Map Filter Observer

FilterSink(observer).on(.Next(4))

Page 68: RxSwift コードリーディングの勘所@社内RxSwift勉強会

FilterSink

Sequence Map Filter Observer

FilterSink(observer).on(.Next(4))

Page 69: RxSwift コードリーディングの勘所@社内RxSwift勉強会

FilterSink

Sequence Map Filter Observer

value % 4 == 0

Page 70: RxSwift コードリーディングの勘所@社内RxSwift勉強会

FilterSink

Sequence Map Filter Observer

observer.on(.Next(4))

Page 71: RxSwift コードリーディングの勘所@社内RxSwift勉強会

✌('ω'✌ ) ✌('ω')✌ ( ✌'ω')✌

Page 72: RxSwift コードリーディングの勘所@社内RxSwift勉強会

subscribe(MapSink(FilterSink(observer)))

Sequence Map Filter Observer

subscribe(FilterSink(observer))subscribe(observer)

observer Sink

source subscribe

Page 73: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Sequence Map Filter Observer

observer.on(.Next)FilterSink(observer).on(.Next)

MapSink(FilterSink(observer)).on(.Next)

Sink

observer

Page 74: RxSwift コードリーディングの勘所@社内RxSwift勉強会

SinkIter

Page 75: RxSwift コードリーディングの勘所@社内RxSwift勉強会

SinkIter

• merge flatMap ( )

Observable<Observable<E>>

Page 76: RxSwift コードリーディングの勘所@社内RxSwift勉強会

SinkIter

Observable<Observable<E>>

Page 77: RxSwift コードリーディングの勘所@社内RxSwift勉強会

SinkIter

Observable<Observable<E>> Observable

subscribe Sink

Page 78: RxSwift コードリーディングの勘所@社内RxSwift勉強会

SinkIter

Observable<Observable<E>> Observable

subscribe SinkIter

Page 79: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Cold Observable

Page 80: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Cold Observable

• subscribe

• subscribe

Page 81: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Just

Page 82: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Just

subscribe ….

Page 83: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Just

Page 84: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Cold

Page 85: RxSwift コードリーディングの勘所@社内RxSwift勉強会

Cold

subscribe

Just Map Filter Observer

subscribe subscribe

on on on

Page 86: RxSwift コードリーディングの勘所@社内RxSwift勉強会

BehaviorSubject

Page 87: RxSwift コードリーディングの勘所@社内RxSwift勉強会

BehaviorSubject

subscribe

Page 88: RxSwift コードリーディングの勘所@社内RxSwift勉強会

BehaviorSubject

Page 89: RxSwift コードリーディングの勘所@社内RxSwift勉強会

BehaviorSubject

observer

Page 90: RxSwift コードリーディングの勘所@社内RxSwift勉強会

BehaviorSubject

subscribe

Page 91: RxSwift コードリーディングの勘所@社内RxSwift勉強会

BehaviorSubject

subscribe observer

Page 92: RxSwift コードリーディングの勘所@社内RxSwift勉強会

BehaviorSubject

Page 93: RxSwift コードリーディングの勘所@社内RxSwift勉強会

BehaviorSubject

on

Page 94: RxSwift コードリーディングの勘所@社内RxSwift勉強会

BehaviorSubject

Page 95: RxSwift コードリーディングの勘所@社内RxSwift勉強会

BehaviorSubject

Observer

Page 96: RxSwift コードリーディングの勘所@社内RxSwift勉強会

✌('ω'✌ ) ✌('ω')✌ ( ✌'ω')✌

Page 97: RxSwift コードリーディングの勘所@社内RxSwift勉強会

• Rx Operator

Page 98: RxSwift コードリーディングの勘所@社内RxSwift勉強会