Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RxSwift + MVVM

RxSwift + MVVM

Reactive Swift Meetup at Wantedly

Yosuke Ishikawa

April 13, 2016
Tweet

More Decks by Yosuke Ishikawa

Other Decks in Technology

Transcript

  1. RxSwi + MVVM
    ishkawa

    View Slide

  2. ishkawa?

    View Slide

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

    View Slide

  4. RxSwi + MVVM
    を前提とした設計

    View Slide

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

    View Slide

  6. UI
    は変わりやすい

    View Slide

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

    View Slide

  8. View Slide

  9. View Slide

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

    View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

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

    View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. 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
    )
    }
    }

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  23. View Slide

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

    View Slide

  25. 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
    >
    (
    )
    }

    View Slide

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

    View Slide

  27. View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. View Slide

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

    View Slide

  34. View Slide

  35. まとめ

    View Slide

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

    View Slide