RxSwiftษڧձͦͷ1
View Slide
ࣗݾհ• Yusuke Hosonuma• ʢ࠷ۙͷʣҰݴɿ ʢ։ൃऀʹʣΊ͙Γ⁊͍ʢίʔυΛʣ͗• ࠷ۙɺݞ͜Γͱ͔ࠅ͍ͷͰϤΨΛ࢝Ί·ͨ͠ɻ
લճͷJOJORxSwift
લճ• ϦΞΫςΟϒϓϩάϥϛϯάʹֶ͍ͭͯΜͩ• ඇಉظετϦʔϜΛѻ͏ϓϩάϥϛϯά• ݴ͍͑ΔͱԿ͔͕ྲྀΕͯ͘ΔʮʯͰ͋Δ• ෦తʹObserverύλʔϯ͕ΘΕ͍ͯΔ
ิ• ϦΞΫςΟϒͱʮԠੑʯͱ͍͏ҙຯ• Կ͔ʹ࿈ಈͯ͠উखʹԿ͔͕มΘΔΠϝʔδ• ExcelͷࣜγεςϜϦΞΫςΟϒͳΞϓϦέʔγϣϯͱݴ͑Δ
ࠓճ
நతͳ֓೦ΛΕͯ
࣮ફతͳRxSwiftʹ͍ͭͯ
ֶΜͰ͍͖·͢ʂʢલճͷ༰ΕͯOKʣ
ΞδΣϯμ• RxSwiftͷϞδϡʔϧ• RxSwiftͷΠϯετʔϧ• Observable —> Observer ͷଓ• RxSwiftͷαϯϓϧίʔυ• ϥΠϒίʔσΟϯάʢؤுͬͯΈΔΑʂʣ
RxSwiftͷϞδϡʔϧ
RxSwiftͷϞδϡʔϧ• 2ͭͷϞδϡʔϧͰΓཱ͍ͬͯΔ• 1) RxSwift• 2) RxCocoa
1) RxSwift
1) RxSwift• import RxSwift• RxʢReactive ExtensionʣͷίΞ෦ͷػೳΛఏڙ͢ΔϞδϡʔϧ• UIKitͳͲʹґଘ͠ͳ͍७ਮͳϦΞΫςΟϒϓϩάϥϛϯάͷࡐྉΛఏڙ͢Δ• ଞͷϓϩάϥϛϯάݴޠͰຆͲಉ͡ʢͣʣ
2) RxCocoaࢲͷ͜ͱݺΜͩʁ
2) RxCocoa• import RxCocoa• UIKitͳͲiOSʹґଘͨ͠෦ͷػೳΛఏڙ• UIViewNSNotificationʹରͯ͠ɺrx_xxxͱ͍ͬͨϓϩύςΟ͕Ճ͞ΕΔɻ• ྫʣrx_tapɺrx_textɺrx_valueɺetc…
RxSwiftͷΠϯετʔϧ
RxSwiftͷΠϯετʔϧ• CocoaPodsͰ• CarthagoͰ• ͨͿΜকདྷతʹSwiftඪ४ͷύοέʔδϚωʔδϟͰ• ·͊ৄ͘͠ެࣜυΩϡϝϯτΛಡΜͰͶʂ
ObservableͱObserverͷଓ
Observerύλʔϯͷ෮श• GoFͷ23ͷσβΠϯύλʔϯͷ1ͭ• iOSͰNSNotification͕ͦͷྫ• Observableʢ؍ଌ͞ΕΔͷʣͱɺ• Observerʢ؍ଌ͢Δͷʣ͕ొ͠ɺ• Observableͷมߋ͕Observerʹ௨͞ΕΔ
RxSwiftͰͷ• ετϦʔϜ͕Observableʢ؍ଌ͞ΕΔͷʣ• ߪಡ͢Δͷ͕Observerʢ؍ଌ͢Δͷʣ• ্هʮʯͱʮ͓͋ͪΌΜʯʹஔ͖͑ͯOKʢ౧ଠϝλϑΝʔ࠶ͼʣ
ॏཁͳίϯηϓτ
Observableͱ
Observer
ଓʢbindʣ͢Δ͜ͱ͕ՄೳͰ͋Δ
ͱΓ͋͑ͣίʔυྫ
ྫʣλοϓ࣌ʹϥϕϧߋ৽
͜Ε͕Rxʹ͓͚ΔσʔλόΠϯσΟϯά
σʔλόΠϯσΟϯά• Observableʢ؍͞ΕΔͷʣͱɺ• Observerʢ؍͢Δͷʣɺ• ଓʢbindʣՄೳͰ͋Δɻ• Tͷҙຯ͢Δͱ͜Ζܕɻ• ͭ·Γಉ͡ܕͰͳ͚ΕଓͰ͖ͳ͍ɻ ʢTʹஔ͖͑ͯOKʣ
͏ҰίʔυΛݟͯΈΔ• 2.ͰจࣈྻܕͷετϦʔϜʢObservableʣʹม͢Δ͜ͱͰɺ• UILabelͷrx_textଐੑʢObserverʣʹଓ͍ͯ͠Δɻ• ͜ΕʹΑΓϘλϯλοϓͷετϦʔϜʹྲྀΕͨσʔλ͕ࣗಈతʹUILabelͷtextଐੑʹө͞ΕΔɻ
RxSwiftίʔυαϯϓϧ
1. Ϙλϯͷλοϓ
Ϙλϯͷλοϓ• DisposeBagͱ͍͏ͷϝϞϦཧ༻• ଞͷํ๏͋Δ͚Ͳɺ࠷ޙʹॻ͍͓͚ͯͱΓ͋͑ͣOKͱࢥͬͯେৎ
2. εϥΠμʔ
εϥΠμʔ
3. NSNotification
NSNotification
ࡉ͔͍ҧ͍͋Δ͚ΕͲ
ຊ࣭తͳߟ͑ํڞ௨͍ͯ͠Δ
͢ͳΘͪ• ObservableʢετϦʔϜʣΛ࡞Γग़͠ɺ• ετϦʔϜΛՃʢmapɺstartWithʣ͠ɺ• Observerʢ؍ଌऀʣʹଓ͢Δɻ
͜Ε͕Rxʹ͓͚ΔσʔλόΠϯσΟϯάRxετʔΧʔߦҝΛॿ͢ΔͷͰஅͯ͋͡Γ·ͤΜʢIt’s a jokeʣ
લճͷ෮श݉Ͷͯ• ετϦʔϜ҆ՁͰ؆୯ʹ࡞ΕΔ• ετϦʔϜΛՃ͢ΔͨΊͷखஈ͕ἧ͍ͬͯΔ• ετϦʔϜʢObservableʣɺ ؍ଌऀʢObserverʣʹଓ͢Δ͜ͱ͕ग़དྷΔ• ͯ͢ετϦʔϜͰ͋Δ
ϥΠϒίʔσΟϯά
όϦσʔγϣϯΛॻ͍ͯΈΔΑʂʢ࣌ؒ͋Εʣ
ࠓͷ·ͱΊ• RxSwiftͷϞδϡʔϧ• ίΞ෦ͷʮRxSwiftʯͱ• UIKit෦ͷʮRxCocoaʯ͕͋Δ• RxSwiftͷΠϯετʔϧ• CocoaPods·ͨCarthagoͰͲ͏ͧ
ࠓͷ·ͱΊ• Observable —> Observer ͷଓ• Rxʹ͓͚ΔσʔλόΠϯσΟϯάػߏ• TܕΛද͠ɺಉ͡ܕͳΒଓͰ͖Δ• ܕ͕ҟͳΔ߹ετϦʔϜΛՃʢmapͨ͠Γʣ͢Δ͜ͱͰɺಉ͡ܕͷετϦʔϜʹ͢Δ͜ͱग़དྷΔ
ࠓͷ·ͱΊ• RxSwiftͷαϯϓϧίʔυ• Ϙλϯλοϓ• εϥΠμʔ• NSNotification• ͲΕڞ௨ͨ͠ύλʔϯɺObservableͱObserverͷଓɺؒʹՃ͕͋ͬͨɻ
࠷ޙʹ
ࠓճͷεϥΠυͷ༰Λཧղ͢Ε
RxSwiftͷίʔυ͔ͳΓಡΊΔΑ͏ʹͳΔͱࢥ͍·͢
ެࣜυΩϡϝϯτΛಡΜͰΈ·͠ΐ͏ʂ
Thanks!