$30 off During Our Annual Pro Sale. View Details »

rxswift2.pdf

Yusuke Hosonuma
June 13, 2016
150

 rxswift2.pdf

Yusuke Hosonuma

June 13, 2016
Tweet

More Decks by Yusuke Hosonuma

Transcript

  1. RxSwiftษڧձ
    ͦͷ1

    View Slide

  2. ࣗݾ঺հ
    • Yusuke Hosonuma
    • ʢ࠷ۙͷʣҰݴɿ

    ʢ։ൃऀʹʣΊ͙Γ⁊͍ʢίʔυΛʣ๰͗
    • ࠷ۙɺݞ͜Γͱ͔ࠅ͍ͷͰϤΨΛ࢝Ί·ͨ͠ɻ

    View Slide

  3. લճͷJOJORxSwift

    View Slide

  4. લճ
    • ϦΞΫςΟϒϓϩάϥϛϯάʹֶ͍ͭͯΜͩ
    • ඇಉظετϦʔϜΛѻ͏ϓϩάϥϛϯά
    • ݴ͍׵͑ΔͱԿ͔͕ྲྀΕͯ͘Δʮ઒ʯͰ͋Δ
    • ಺෦తʹ͸Observerύλʔϯ͕࢖ΘΕ͍ͯΔ

    View Slide

  5. ิ଍
    • ϦΞΫςΟϒͱ͸ʮ൓Ԡੑʯͱ͍͏ҙຯ
    • Կ͔ʹ࿈ಈͯ͠উखʹԿ͔͕มΘΔΠϝʔδ
    • Excelͷ਺ࣜγεςϜ͸ϦΞΫςΟϒͳΞϓϦ
    έʔγϣϯͱݴ͑Δ

    View Slide

  6. ࠓճ

    View Slide

  7. ந৅తͳ֓೦Λ཭Εͯ

    View Slide

  8. ࣮ફతͳRxSwift
    ʹ͍ͭͯ

    View Slide

  9. ֶΜͰ͍͖·͢ʂ
    ʢલճͷ಺༰͸๨ΕͯOKʣ

    View Slide

  10. ΞδΣϯμ
    • RxSwiftͷϞδϡʔϧ
    • RxSwiftͷΠϯετʔϧ
    • Observable —> Observer ͷ઀ଓ
    • RxSwiftͷαϯϓϧίʔυ
    • ϥΠϒίʔσΟϯάʢؤுͬͯΈΔΑʂʣ

    View Slide

  11. RxSwiftͷϞδϡʔϧ

    View Slide

  12. RxSwiftͷϞδϡʔϧ
    • 2ͭͷϞδϡʔϧͰ੒Γཱ͍ͬͯΔ
    • 1) RxSwift
    • 2) RxCocoa

    View Slide

  13. 1) RxSwift

    View Slide

  14. 1) RxSwift
    • import RxSwift
    • RxʢReactive ExtensionʣͷίΞ෦෼ͷػೳΛఏ
    ڙ͢ΔϞδϡʔϧ
    • UIKitͳͲʹґଘ͠ͳ͍७ਮͳϦΞΫςΟϒϓϩ
    άϥϛϯάͷࡐྉΛఏڙ͢Δ
    • ଞͷϓϩάϥϛϯάݴޠͰ΋ຆͲಉ͡ʢ͸ͣʣ

    View Slide

  15. 2) RxCocoa
    ࢲͷ͜ͱݺΜͩʁ

    View Slide

  16. 2) RxCocoa
    • import RxCocoa
    • UIKitͳͲiOSʹґଘͨ͠෦෼ͷػೳΛఏڙ
    • UIView΍NSNotificationʹରͯ͠ɺrx_xxxͱ͍ͬ
    ͨϓϩύςΟ͕௥Ճ͞ΕΔɻ
    • ྫʣrx_tapɺrx_textɺrx_valueɺetc…

    View Slide

  17. RxSwiftͷΠϯετʔϧ

    View Slide

  18. RxSwiftͷΠϯετʔϧ
    • CocoaPodsͰ΋
    • CarthagoͰ΋
    • ͨͿΜকདྷతʹ͸Swiftඪ४ͷύοέʔδϚωʔ
    δϟͰ΋
    • ·͊ৄ͘͠͸ެࣜυΩϡϝϯτΛಡΜͰͶʂ

    View Slide

  19. Observableͱ
    Observerͷ઀ଓ

    View Slide

  20. Observerύλʔϯͷ෮श
    • GoFͷ23ͷσβΠϯύλʔϯͷ1ͭ
    • iOSͰ͸NSNotification͕ͦͷྫ
    • Observableʢ؍ଌ͞ΕΔ΋ͷʣͱɺ
    • Observerʢ؍ଌ͢Δ΋ͷʣ͕ొ৔͠ɺ
    • Observableͷมߋ͕Observerʹ௨஌͞ΕΔ

    View Slide

  21. RxSwiftͰͷ࿩
    • ετϦʔϜ͕Observableʢ؍ଌ͞ΕΔ΋ͷʣ
    • ߪಡ͢Δͷ͕Observerʢ؍ଌ͢Δ΋ͷʣ
    • ্ه͸ʮ઒ʯͱʮ͓͹͋ͪΌΜʯʹஔ͖׵͑ͯ
    ΋OKʢ౧ଠ࿠ϝλϑΝʔ࠶ͼʣ

    View Slide

  22. ॏཁͳίϯηϓτ

    View Slide

  23. Observableͱ

    View Slide

  24. Observer͸

    View Slide

  25. ઀ଓʢbindʣ͢Δ͜ͱ͕
    ՄೳͰ͋Δ

    View Slide

  26. ͱΓ͋͑ͣίʔυྫ

    View Slide

  27. ྫʣλοϓ࣌ʹϥϕϧߋ৽

    View Slide

  28. ͜Ε͕Rxʹ͓͚Δ
    σʔλόΠϯσΟϯά

    View Slide

  29. σʔλόΠϯσΟϯά
    • Observableʢ؍࡯͞ΕΔ΋ͷʣͱɺ
    • Observerʢ؍࡯͢Δ΋ͷʣ͸ɺ
    • ઀ଓʢbindʣՄೳͰ͋Δɻ
    • Tͷҙຯ͢Δͱ͜Ζ͸ܕɻ
    • ͭ·Γಉ͡ܕͰͳ͚Ε͹઀ଓͰ͖ͳ͍ɻ

    ʢT͸ʹஔ͖׵͑ͯ΋OKʣ

    View Slide

  30. ΋͏Ұ౓ίʔυΛݟͯΈΔ
    • 2.ͰจࣈྻܕͷετϦʔϜʢObservableʣʹม
    ׵͢Δ͜ͱͰɺ
    • UILabelͷrx_textଐੑʢObserverʣʹ઀ଓ͍ͯ͠
    Δɻ
    • ͜ΕʹΑΓϘλϯλοϓͷετϦʔϜʹྲྀΕͨσʔλ͕
    ࣗಈతʹUILabelͷtextଐੑʹ൓ө͞ΕΔɻ

    View Slide

  31. RxSwift
    ίʔυαϯϓϧ

    View Slide

  32. 1. Ϙλϯͷλοϓ

    View Slide

  33. Ϙλϯͷλοϓ
    • DisposeBagͱ͍͏ͷ͸ϝϞϦ؅ཧ༻
    • ଞͷํ๏΋͋Δ͚Ͳɺ࠷ޙʹॻ͍͓͚ͯ͹ͱΓ͋͑
    ͣOKͱࢥͬͯେৎ෉

    View Slide

  34. 2. εϥΠμʔ

    View Slide

  35. εϥΠμʔ

    View Slide

  36. 3. NSNotification

    View Slide

  37. NSNotification

    View Slide

  38. ࡉ͔͍ҧ͍͸
    ͋Δ͚ΕͲ΋

    View Slide

  39. ຊ࣭తͳߟ͑ํ͸
    ڞ௨͍ͯ͠Δ

    View Slide

  40. ͢ͳΘͪ
    • ObservableʢετϦʔϜʣΛ࡞Γग़͠ɺ
    • ετϦʔϜΛՃ޻ʢmapɺstartWithʣ͠ɺ
    • Observerʢ؍ଌऀʣʹ઀ଓ͢Δɻ

    View Slide

  41. ͜Ε͕Rxʹ͓͚Δ
    σʔλόΠϯσΟϯά
    Rx͸ετʔΧʔߦҝΛॿ௕͢Δ΋ͷͰ͸
    அͯ͋͡Γ·ͤΜʢIt’s a jokeʣ

    View Slide

  42. લճͷ෮श΋݉Ͷͯ
    • ετϦʔϜ͸҆ՁͰ؆୯ʹ࡞ΕΔ
    • ετϦʔϜΛՃ޻͢ΔͨΊͷखஈ͕ἧ͍ͬͯΔ
    • ετϦʔϜʢObservableʣ͸ɺ

    ؍ଌऀʢObserverʣʹ઀ଓ͢Δ͜ͱ͕ग़དྷΔ
    • ͢΂ͯ͸ετϦʔϜͰ͋Δ

    View Slide

  43. ϥΠϒίʔσΟϯά

    View Slide

  44. όϦσʔγϣϯΛॻ͍ͯ
    ΈΔΑʂʢ࣌ؒ͋Ε͹ʣ

    View Slide

  45. ࠓ೔ͷ·ͱΊ
    • RxSwiftͷϞδϡʔϧ
    • ίΞ෦෼ͷʮRxSwiftʯͱ
    • UIKit෦෼ͷʮRxCocoaʯ͕͋Δ
    • RxSwiftͷΠϯετʔϧ
    • CocoaPods·ͨ͸CarthagoͰͲ͏ͧ

    View Slide

  46. ࠓ೔ͷ·ͱΊ
    • Observable —> Observer ͷ઀ଓ
    • Rxʹ͓͚ΔσʔλόΠϯσΟϯάػߏ
    • T͸ܕΛද͠ɺಉ͡ܕͳΒ઀ଓͰ͖Δ
    • ܕ͕ҟͳΔ৔߹͸ετϦʔϜΛՃ޻ʢmapͨ͠
    Γʣ͢Δ͜ͱͰɺಉ͡ܕͷετϦʔϜʹ͢Δ͜
    ͱ΋ग़དྷΔ

    View Slide

  47. ࠓ೔ͷ·ͱΊ
    • RxSwiftͷαϯϓϧίʔυ
    • Ϙλϯλοϓ
    • εϥΠμʔ
    • NSNotification
    • ͲΕ΋ڞ௨ͨ͠ύλʔϯɺObservableͱ
    Observerͷ઀ଓɺؒʹՃ޻͕͋ͬͨɻ

    View Slide

  48. ࠷ޙʹ

    View Slide

  49. ࠓճͷεϥΠυͷ಺༰
    Λཧղ͢Ε͹

    View Slide

  50. RxSwiftͷίʔυ͸͔ͳΓಡ
    ΊΔΑ͏ʹͳΔͱࢥ͍·͢

    View Slide

  51. ެࣜυΩϡϝϯτΛ
    ಡΜͰΈ·͠ΐ͏ʂ

    View Slide

  52. Thanks!

    View Slide