Slide 1

Slide 1 text

RxSwi + MVVM ishkawa

Slide 2

Slide 2 text

ishkawa?

Slide 3

Slide 3 text

近況 新プロジェクトでRxSwi をハー ドに使った 試行錯誤で大変だったけど良いところもわかってきた

Slide 4

Slide 4 text

RxSwi + MVVM を前提とした設計

Slide 5

Slide 5 text

MVVM: レイヤー の切り分けが良い感じ

Slide 6

Slide 6 text

UI は変わりやすい

Slide 7

Slide 7 text

デー タの操作は変わりにくい

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

RxSwi : デー タのUI への反映が自動的

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

を3 行で の値が流れてくる川 演算できる (map, filter, zip など) に接続できる

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

c l a s s T w e e t V i e w : U I V i e w { . . . f u n c b i n d ( ) { v i e w . l i k e B u t t o n . r x _ t a p . b i n d T o ( v i e w M o d e l . l i k e T r i g g e r ) . a d d D i s p o s a b l e T o ( d i s p o s e B a g ) v i e w M o d e l . l i k e d . b i n d T o ( v i e w . l i k e B u t t o n . r x _ s e l e c t e d ) . a d d D i s p o s a b l e T o ( d i s p o s e B a g ) } }

Slide 20

Slide 20 text

View 1 度ストリー ムを繋いでしまえば反映は自動的 やることは入出力のストリー ムを接続するだけ 実装コストは低いので頻繁に変更されてもつらくない

Slide 21

Slide 21 text

ViewModel 実装コストは高いが変更されにくい

Slide 22

Slide 22 text

画面を跨ぐグロー バルなイベント

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

状態の変更は画面間で共有されてほしい グロー バルなものはグロー バルなもので表そう

Slide 25

Slide 25 text

f i n a l c l a s s G l o b a l O b s e r v a b l e s { s t a t i c l e t l i k e d T w e e t = P u b l i s h S u b j e c t < T w e e t > ( ) }

Slide 26

Slide 26 text

であり でもある グロー バルな があると... どこからでも変更を流せる どこからでも変更を購読できる

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

変更はグロー バルな で通知 値の送信も購読もViewModel が担当する View にはViewModel の値をバインドするだけ View は画面間の同期について考える必要がない バインドしてれば自動的に同期される

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

まとめ

Slide 36

Slide 36 text

MVVM のレイヤー の切り分けは良い感じ 変更の反映が自動的に行われる グロー バルな変更も同様に接続できる その結果... 変更されやすい箇所の実装コストを下げられる 実装コストが高いところは変更されにくくなる