Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RxSwift勉強会
Search
Yusuke Hosonuma
May 31, 2016
190
0
Share
RxSwift勉強会
Yusuke Hosonuma
May 31, 2016
More Decks by Yusuke Hosonuma
See All by Yusuke Hosonuma
KotlinTest で始める Property-based Testing/kotlintest-property-based-testing
yusukehosonuma
2
1.6k
Marzipan の正体は何だったのか そして SwiftUI の衝撃/wwdc19_marzipan_swiftui
yusukehosonuma
2
970
標準パッケージにおけるテストでの利用例から学ぶ testing / quick パッケージ/golang-testing-quick
yusukehosonuma
4
12k
Swift で ParameterizedTest をやってみた話/swift-parameterized-test
yusukehosonuma
4
2.3k
Property-based test beginning with SwiftCheck
yusukehosonuma
1
6.2k
XCTest(再)入門/reintroduction-to-xctest
yusukehosonuma
0
650
ソースコードから読み解く - Quick はどのように実装されているのか?/quick-code-reading
yusukehosonuma
7
11k
Swift 4.2 はどのような進化をしているのか/whats-new-swift42
yusukehosonuma
16
15k
HTTPモックライブラリ「Mockingjay」を使ってみた話/swift-mockingjay
yusukehosonuma
5
4.3k
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
120
Everyday Curiosity
cassininazir
0
210
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
180
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
Building Adaptive Systems
keathley
44
3k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
570
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
340
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
240
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
250
Transcript
RxSwiftษڧձ ͦͷ0
ࣗݾհ • Yusuke Hosonuma • ݴޠJavaɺObjective-CɺSwiftɺଞ৭ʑ • ʢ࠷ۙͷʣ࠲ӈͷɿ ͝จ10ؒอकՄೳͳίʔυͰ͔͢ʁ •
QiitaͰ1,000͑ͨΑʂ
RxSwift ʢ͋ʔΔ͍͑ͬ͘͢͢;ͱʣ
͊͞RxSwiftॻͧ͘ʂ
None
ʁ
None
ʂʁ
None
ͦΜͳ͜ͱʹ ͳΒͳ͍Α͏ʹ
·ͣ
ϦΞΫςΟϒ ϓϩάϥϛϯάͷ
ߟ͑ํ͔Βֶ΅͏ʂ
ࠓͷຊ
ϦΞΫςΟϒϓϩάϥ ϛϯάͱԿ͔ʁ
ඇಉظσʔλετϦʔϜ Λ༻͍Δϓϩάϥϛϯά
ඇಉظσʔλετϦʔϜͷྫ • I/OΠϕϯτ • ΫϦοΫΠϕϯτ • λονΠϕϯτ • etc…
͑ɺͦΕͷ Ͳ͕͜৽͍͠ͷʁ
ϦΞΫςΟϒϓϩάϥ ϛϯάͰ
ຆͲͯ͢Λ ετϦʔϜͰߟ͑Δ
ԿͰετϦʔϜ • ม • Ϣʔβೖྗ • ϓϩύςΟ • σʔλߏ •
etc…
ͱ͜ΖͰ ετϦʔϜͬͯԿʁ
ҰݴͰ͍͏ͳΒ
Կ͔͕ྲྀΕͯ͘Δ ʮʯ
౧͕ྲྀΕͯ͘ΔσʔλετϦʔϜʢʣ
ετϦʔϜ ͍ΖΜͳૢ࡞͕ग़དྷΔ
ετϦʔϜͷૢ࡞ • ࡞ ⾣ ৽ͨͳΛ࡞ΕΔ • ߹ʢmergeʣ ⾣ Λ߹ྲྀͯ͠Ұͭʹ͢Δ͜ͱ͕ग़དྷΔ •
มʢfilterɺmapɺflatMapʣ ⾣ ແࢹͨ͠Γɺ౧ଠʹม͑ͨΓʢڧҾʁʣ
ετϦʔϜͷ ՄೳੑΛߟ͑Δ
ͦͷલʹ RxSwiftʹ͍ͭͯগ͠
ུྺ • ReactiveX (Rx) ϑΝϛϦʔͷҰһ • Rxࣗମ.NETൃʢ࣮ރΕٕͨज़ʣ • ڝ߹ʮReactiveCocoaʯʮSwiftBondʯͱ͔
ֶͿϞνϕʔγϣϯ • ঢ়ଶมΛݮΒͤΔ • ෳࡶͳॲཧΛγϯϓϧʹهड़Ͱ͖Δ • ॲཧΛએݴతʹهड़Ͱ͖Δ ʢؔܕͷӨڹڧ͘ड͚ͯΔʣ • ͏ͪͷϓϩδΣΫτͰਖ਼ࣜ࠾༻ʢϐϯνͩΑʂʣ
ؓٳ
ετϦʔϜ
࣌ؒॱʹฒΜͩ ਐߦதͷΠϕϯτͷྻ
None
ҎԼͷ3छྨ͕ྲྀΕͯ͘Δ • ʢԿΒ͔ͷܕʣ • Τϥʔ • ྃ • ʹ͔͠ڵຯͳ͍ͱ͖ɺ Լ2ͭແࢹ͢Δ͜ͱ
͜ͷʢʹʣ ྲྀΕͯ͘ΔͷΛ
ࢹʢlistenʣ͢Δ
ϦΞΫςΟϒ༻ޠͩͱ subscribingʢߪಡʣ
·͊ͭ·Γ
Ͱચ୕͠ͳ͕Β ౧ΛͬͯΔ͓͋ͪΌΜ
μϒϧΫϦοΫͷ ετϦʔϜʹ͍ͭͯߟ͑Δ
ී௨ʹ࣮͢Δͱʁ
μϒϧΫϦοΫͷ࣮ • ΫϦοΫͨ͠λΠϛϯάΛ͓֮͑ͯ͘ม • ִ࣌ؒؒΛௐΔ • τϦϓϧΫϦοΫݕ͠ͳ͍Α͏ʹ • ؆୯ʹͰ͖ͦ͏͚ͩͲΘΓͱ໘ͦ͏
ετϦʔϜͰߟ͑Δͱʁ
250msͷִ͕ؒແ͍࣌ؒͰ ΠϕϯτΛ·ͱΊΔ
Πϕϯτͷ·ͱ·ΓΛ ݸʹม͢Δ
ݸ͕2ͷ͚ͭͩΛ ϑΟϧλʔ͢Δ
ΫϦοΫͷ ετϦʔϜ͔Β
μϒϧΫϦοΫͷ ετϦʔϜ͕ग़དྷͨʂʁ
ετϦʔϜͷՄೳੑ͕ ݟ͖͑ͯ·ͤΜ͔ʁ
͕͖ͳͷϦΞΫςΟϒϓϩάϥϛϯά͚ͩ͞ʂ ໋ྩܗϓϩάϥϛϯάͳΜͯΫιήʔͩʂ
ͦΖͦΖऴΘΓͰ͕͢
͜Ε͔ΒͷཱྀͷಓඪΛ
ಓඪ • ʲ༁ʳ͋ͳ͕ͨٻΊ͍ͯͨϦΞΫςΟϒϓϩά ϥϛϯάೖ http://ninjinkun.hatenablog.com/entry/introrxja • RxSwift: ReactiveX for Swift
https://github.com/tid-kijyun/RxSwift/blob/ translates-into-japanese/README-ja.md • ໎͍ͬͨ࣌ͭͰʮʯΛࢥ͍ग़͢͜ͱ
ͪͳΈʹ෦తʹ
Observerύλʔϯ͕ ΘΕ͍ͯ·͢
͘͜͠ײ͡Δ༻ޠ ͦͷ͋ͨΓ͔Βདྷ͍ͯ·͢
Observer༻ޠ • Subject • Observable • Observer • Subscribe
·ͱΊ
ࠓͷ·ͱΊ • ϦΞΫςΟϒϓϩάϥϛϯάʮඇಉظσʔλ ετϦʔϜʯΛ༻͍Δϓϩάϥϛϯά • ετϦʔϜԿ͔ΒͰ࡞ΕΔɻ • ετϦʔϜ͍ΖΜͳૢ࡞ʢ߹ɾϑΟϧλɾม ʣ͕Ͱ͖Δɻ •
ͯ͢ετϦʔϜͰ͋Δɻ
Thanks.