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
15 minutes recipe of RxSwift
Search
gomi_ningen
April 14, 2016
Programming
28
0
Share
15 minutes recipe of RxSwift
2016/04/14 - RxSwift 勉強会 #1@Sansan
https://sansan.connpass.com/event/27933/
gomi_ningen
April 14, 2016
More Decks by gomi_ningen
See All by gomi_ningen
RxSwiftのObservableとは何か | iOSDC Japan 2017
53ningen
0
24
Xamarin.iOS によるプロダクトアプリ開発の実践
53ningen
0
20
この実装には問題がある!
53ningen
0
1.1k
Dependency Injection in Swift2
53ningen
0
33
RxSwiftを用いたアプリ開発の実践
53ningen
0
31
ITSを用いた旅行の構築
53ningen
0
20
Other Decks in Programming
See All in Programming
実践ハーネスエンジニアリング:ステアリングループを実例から読み解く / Practical Harness Engineering: Understanding Steering Loops Through Real-World Examples
nrslib
5
5.5k
AlarmKitで明後日起きれるアラームアプリを作る
trickart
0
140
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
1
150
Spec-Driven Development with AI Agents (Workshop, May 2026)
antonarhipov
3
370
関係性から理解する"同一性"の型用語たち
pvcresin
1
170
Structured Concurrency, Scoped Values and Joiners in the JDK 25 26 27
josepaumard
1
150
UaaL×Androidアプリのメモリ計測 — Memory Profilerの先へ
rio432
0
160
AI Agent と正しく分析するための環境作り
yoshyum
2
520
ハーネスエンジニアリングとは?
kinopeee
13
7.1k
Programming with a DJ Controller — not vibe coding
m_seki
3
860
クラウドネイティブなエンジニアに向ける Raycastの魅力と実際の活用事例
nealle
2
260
Agentic UI in the Frontend: Architectures with Open Standards @JAX 2026 in Mainz
manfredsteyer
PRO
0
120
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
150
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.4k
Balancing Empowerment & Direction
lara
6
1.1k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
390
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
220
KATA
mclloyd
PRO
35
15k
How STYLIGHT went responsive
nonsquared
100
6.1k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.4k
Transcript
3Y4XJGUษڧձ !HPNJ@OJOHFO NJOVUFTSFDJQFPG3Y4XJGU 1"350CTFSWFS0CTFSWBCMF#FIBWJPS4VCKFDU
ࣗݾհ ϥϏοτϋεࣾͰಇࣾ͘ச৽ੜ ɾ+BWB 4FSWMFUɾ'8 ɾ4DBMB 1MBZ όοΫΤϯυ։ൃ ɾJ044XJGUΞϓϦ৽ن։ൃɹͳͲ
ɾ͖ͳݴޠ+BWB 4DBMB $ʢ͓ࣄ͓ͪͯ͠·͢ʣ ɾ͖ͳ࡞͝จ͏͗͞Ͱ͔͢ ɾJ04։ൃܦݧ·ͩ΄ͲͳͷͰجຊతʹૉਓͰ͢ 🐰͕࣌ؒͳ͍ͷͰࣗݾհׂѪ͠·͢🐰 !HPNJ@OJOHFO
ࠓ͢༰ 3Y4XJGUͷ0CTFSWFSؔ࿈جຊ෦ΛͰ࡞ΔϨγϐʂ ͰऴΘΔͱݴ͍ͬͯͳ͍ 0CTFSWFSύλʔϯͷ෮शʢʣ ͜Ε͕Θ͔Βͳ͍ͱҙຯෆ໌ͳΛ͢ΔͷͰɺͰ͓͞Β͍͢Δ 0CTFSWFS
0CTFSWBCMF*'ͷఆٛʢʣ 4XJGUͷݴޠ༷ͷ͍ͤͰɺͪΐͬͱ໘ͳ࣮Λ͢Δඞཁ͕͋Δ #FIBWJPS4VCKFDUͷ࣮ʢʣ 5ܕͷঢ়ଶΛ؍ଌͰ͖Δ؆୯ͳ0CTFSWBCMF۩ΫϥεΛ࡞͢Δ ޙɺผͷػձ͕͋ΕɺίϯϏωʔλ4DIFEVMFSͷ͍ͨ͠ ʢ͡Όશͯͷઆ໌Λ͢Δͷແཧʣ
ҙࣄ߲ • ͜Ε͔Β͢༰Λཧղ͠ͳͯ͘3Y4XJGUे ͑ΔϥΠϒϥϦͰ͢ʢΑ͔͘ΒΜͱࢥͬͨਓฉ͖ͳ͕ͯ͠΄͍͠ʣ • ·ͩ3YܥͷϥΠϒϥϦΛͬͨ͜ͱ͕ͳ͍ํɺ·ͣ ϥΠϒϥϦΛͬͯΈ͍ͯͩ͘͞ ·ͣ6*#VUUPOͷΠϕϯτϋϯυϦϯάΛ3YͰߦ͏ͱ͜Ζ͔Β࢝ΊͯΈΑ͏ʂ
• ͓ͷதͰొ͢Δ࣮3Y4XJGUͷͷͰ͋Γɺଞ ݴޠͷ3YϥΠϒϥϦͱ࣮͕ҟͳΔ߹͕͋Γ·͢
0CTFSWFSύλʔϯͷ෮श (P'ͷσβύλຊΛಡΜͰ͍ͩ͘͞
࣍ͷΑ͏ͳΛղܾ͢ΔͨΊʹͲ͏ͨ͠ΒΑ͍Ͱ͠ΐ͏͔ʁ "ʹมԽ͕ى͖ͨΒɺ#ʹ͍͑ͨ
࣍ͷΑ͏ͳΛղܾ͢ΔͨΊʹͲ͏ͨ͠ΒΑ͍Ͱ͠ΐ͏͔ʁ "ʹมԽ͕ى͖ͨΒɺ#ʹ͍͑ͨ ݱ࣮ੈքͰ͜͏͍͏έʔε͋Δͣ ɾ༧ఆ͕มΘͬͨͷͰʢঢ়ଶભҠʣ͓ళͷ༧ΛऔΓফ͢ʢ௨ʣ ɾࠁͦ͠͏ʹͳͬͨΒʢঢ়ଶભҠʣ্࢘ʹ࿈བྷ͢Δʢ௨ʣ
͜ΕΒΛ࣮ݱ͢ΔͨΊʹɺ૬खͷ࿈བྷઌΛ͍ͬͯͳ͍ͱ͍͚ͳ͍ ϓϩάϥϛϯάʹ͓͍ͯɺ૬खͷࢀরΛอ͍࣋ͯ͠ͳ͍ͱ͍͚ͳ͍
ͷղ ࣍ͷΑ͏ͳΛղܾ͢ΔͨΊʹͲ͏ͨ͠ΒΑ͍Ͱ͠ΐ͏͔ʁ "ʹมԽ͕ى͖ͨΒɺ#ʹ͍͑ͨ
"͕#ͷΠϯελϯεΛอ࣋͠ɺ#ʹมߋΛ͑Δ ʢ͜ͷߏͰΛͪΌΜͱղܾͰ͖͍ͯΔͷͰਖ਼͍͠ʣ
࣍ͷΑ͏ͳΛղܾ͢ΔͨΊʹͲ͏ͨ͠ΒΑ͍Ͱ͠ΐ͏͔ʁ "ʹมԽ͕ى͖ͨΒɺ#ʹ͍͑ͨ ͨͩ͠ɺҟͳΔ*'Λ࣋ͬͨ௨ઌ͕૿͑Δ͜ͱ͕༧͞Ε͍ͯΔ
࣍ͷΑ͏ͳΛղܾ͢ΔͨΊʹͲ͏ͨ͠ΒΑ͍Ͱ͠ΐ͏͔ʁ "ʹมԽ͕ى͖ͨΒɺ#ʹ͍͑ͨ ͨͩ͠ɺҟͳΔ*'Λ࣋ͬͨ௨ઌ͕૿͑Δ͜ͱ͕༧͞Ε͍ͯΔ ݱ࣮ੈքͰྫ͑Δͱ ɾ"ɺ# $
%ͱͪ߹ΘͤΛ͍ͯ͠Δ ɾͪ߹ΘͤॴΛมߋ͍ͨ͠ͷͰɺมߋΛΒͤΔඞཁ͕͋Δ ɾ#UXJUUFS $ϝʔϧ %-*/&ͰΓͱΓΛ͢Δඞཁ͕͋Δ "ͦΕͧΕͷ*'Λ͍ͬͯͳ͍ͱ͍͚ͳ͍ͷͰେม
࣍ͷΑ͏ͳΛղܾ͢ΔͨΊʹͲ͏ͨ͠ΒΑ͍Ͱ͠ΐ͏͔ʁ "ʹมԽ͕ى͖ͨΒɺ#ʹ͍͑ͨ ͨͩ͠ɺҟͳΔ*'Λ࣋ͬͨ௨ઌ͕૿͑Δ͜ͱ͕༧͞Ε͍ͯΔ ઌ΄ͲͷղܾࡦͰԿ͕ϚζΠͷ͔ʁ ɾ௨ઌ͕૿ݮ͢Δͨͼʹ"ͷ෦Λมߋ͢Δඞཁ͕͋Δ ɾ௨ઌͷ*'ͷมߋʹΑΓ"ͷ෦Λมߋ͢Δඞཁ͕͋Δ
͜ͷɺ௨ݩ͕௨ઌͷΦϒδΣΫτͷৄࡉΛ ͍ͬͯΔ͜ͱʹΑͬͯੜ͡Δ
0CTFSWFSύλʔϯ ௨ઌʢ؍ଌऀ0CTFSWFSʣɺ ௨Λड͚͚ͭΔͨΊͷϝιουʢVQEBUFʣΛ͍࣋ͬͯΕྑͦ͞͏
QVMMܕ0CTFSWFSύλʔϯ ௨ݩ ؍ଌՄೳͳ0CTFSWBCMF ɺ ɾ0CTFSWFSͷ௨Λ։࢝͢ΔͨΊͷϝιουʢBUUBDIʣ ɾ0CTFSWFSͷ௨Λऴྃ͢ΔͨΊͷϝιουʢEFUBDIʣ ɾอ࣋͢Δ0CTFSWFSͨͪʹ௨ΛૹΔϝιουʢOPUJGZʣ Λ͍࣋ͬͯΕྑͦ͞͏
QVMMܕ0CTFSWFSύλʔϯ ͜ͷߏΛQVMMܕ0CTFSWFSύλʔϯͱ͍͏ 👉؍ଌऀ͕0CTFSWBCMFʹΛऔΓʹߦ͔ͳ͚ΕͳΒͳ͍ 👉ͦͷ͔ΘΓ*'୯७ʹͳΔ
QVTIܕ0CTFSWFSύλʔϯ ͜ͷߏΛQVTIܕ0CTFSWFSύλʔϯͱ͍͏ 👉0CTFSWBCMF͕ߋ৽͞Εͨ͝ͱ0CTFSWFS௨͢Δ
0CTFSWFS 0CTFSWBCMFͷఆٛ 4XJGUͷݴޠ༷ͷ͍ͤͰͭΒ͍͜ͱΛ͢Δඞཁ͕͋Γ·͢
جຊతͳΠϯλʔϑΣʔε جຊߏQVTIܕ0CTFSWFSύλʔϯͱಉ͡ 👉ͨͩ͠ɺ୯ͳΔͰͳ͘Πϕϯτ͕ߪಡͷରʹͳΔ 👉ΤϥʔྃΠϕϯτ͕ೖΔ͜ͱʹΑΓදݱྗ্͕͕Δ
&WFOUͷ࣮ ɾ࣍ͷঢ়ଶΛද͢/FYU ɾΤϥʔ͕ͨͨ͠Ί௨Λऴྃ͢Δ&SSPS ɾঢ়ଶભҠ͕ऴʹୡͨ͜͠ͱΛද͢$PNQMFUFE
👉&SSPSPS$PNQMFUFEͰΠϕϯτετϦʔϜ͕ด͡Δ
0CTFSWFS0CTFSWBCMF5ZQF ɾ4XJGUͷQSPUPDPMHFOFSJDUZQFQBSBNFUFSΛ࣋ͯͳ͍ ɾͭ·ΓQSPUPDPM0CTFSWFS&\^తͳͷ͕ఆٛͰ͖ͳ͍
0CTFSWFS0CTFSWBCMF5ZQF ɾ4XJGUͷQSPUPDPMHFOFSJDUZQFQBSBNFUFSΛ࣋ͯͳ͍ ɾQSPUPDPMXJUIBTTPDJBUFEUZQF BCTUSBDUDMBTTͰରԠ
ͳΜͰ͜ΜͳΫιΊΜͲ͍͘͜͞ͱΛ͍ͯ͠Δͷ͔
0CTFSWFS0CTFSWBCMF5ZQF ɾ0CTFSWFSʹ0CTFSWBCMFʹͳΕΔ4VCKFDUͷରԠ ɾΫϥεͷଟॏܧঝ͕Ͱ͖ͳ͍ͨΊʹQSPUPDPMΛΔඞཁ͕͋Δ
ɾ0CTFSWFS5ZQF0CTFSWBCMF5ZQF͜ͷͨΊʹඞཁ ɾ·ͣɺ👆͜ͷͭΛఆ͍͖ٛͯ͠·͠ΐ͏ 0CTFSWFS0CTFSWBCMF5ZQF
0CTFSWFS0CTFSWBCMF5ZQF
0CTFSWFS0CTFSWBCMF5ZQF
ɾ"OZ0CTFSWFS0CTFSWBCMFΛ࣮͢Δ ɾBTTPDJBUFEUZQFΛHFOFSJDUZQFQBSBNFUFS "OZ0CTFSWFS0CTFSWBCMF
ɾUZQFBMJBT&&MFNFOUͱPOͷҾܕ੍͕ϙΠϯτ ɾ؍ଌऀɺ؍ଌͨ͠ΠϕϯτΛॲཧ͢Ε0,ͳͷͰ࣮୯७ "OZ0CTFSWFS&MFNFOU
ɾUZQFBMJBTͱTVCTDSJCFͷҾܕ੍͕ϙΠϯτ ɾຊདྷͩͬͨΒBCTUSBDUDMBTTʹ͢Δ͖ͱ͜Ζ 0CTFSWBCMF&MFNFOU
#FIBWJPS4VCKFDUͷ࣮ ຯͳ࣮Λ୶ʑͱߦ͏ͷͰ͢ɻաͳظ͠ͳ͍Ͱ͍ͩ͘͞ɻ
#FIBWJPS4VCKFDU&ͱԿ͔ʁ ɾ&ܕͷΛঢ়ଶͱͯ࣋ͭ͠0CTFSWBCMFͳΦϒδΣΫτͷͻͱͭ ɾTVCTDSJCF PCTFSWFS ͢Δͱݱࡏͷঢ়ଶΛऔಘͰ͖Δͱͱʹ ɹมͷத͕มԽͨ͠ͱ͖ͦͷมߋ௨Λड͚Δ͜ͱ͕Ͱ͖Δ
#FIBWJPS4VCKFDU&ͷ࣮ ɾ&ܕͷͷϥούʔΫϥε ɾ0CTFSWBCMFͳͷͰTVCTDSJCFΛ࣮͢Δඞཁ͕͋Δ
#FIBWJPS4VCKFDU&ͷ࣮ ɾTVCTDSJCFͰPCTFSWFSΛίϨΫγϣϯಥͬࠐΉ ɹʢPCTFSWFSߪಡऀ௨ઌΛPCTFSWBCMF͕อ࣋͢Δʣ
#FIBWJPS4VCKFDU&ͷ࣮ ɾಉ࣌ʹߪಡΛղআ͢ΔͨΊͷΦϒδΣΫτ%JTQPTBCMFΛൃߦ ʢ4VCTDSJQUJPO%JTQPTBCMFʹVOTVCTDSJCFͷൃՐΛҕৡʣ
#FIBWJPS4VCKFDU&ͷ࣮ ɾಉ࣌ʹߪಡΛղআ͢ΔͨΊͷΦϒδΣΫτ%JTQPTBCMFΛൃߦ ʢ4VCTDSJQUJPO%JTQPTBCMFʹVOTVCTDSJCFͷൃՐΛҕৡʣ EJTQPTF ͰVOTVCTDSJCFΛൃՐͤ͞ΔΑ͏ͳ%JTQPTBCMFͷ࣮͕ඞཁ
VOTBGF"EESFTT0G "OZ0CKFDU ɾΠϯελϯεϝϞϦΛ֬อ͢Δʹ͋ΔछͷJEͷׂΛ࣋ͭ ɾ4XJGUVOTBGF"EESFTT0Gͦͷ൪ΛऔಘͰ͖Δ ɾ3Y4XJGUͰ͜ͷϋογϡΛ༻͍ͨΩʔʢ#BH,FZʣͱ ɹίϨΫγϣϯʢ#BHʣΛࣗલͰ࣮͍ͯ͠Δ ɹʢεϥΠυͰ؆୯ͷͨΊɺྻΛͬͨࡶͳ࣮ʹͯ͋͠Δʣ
DG 3Y4XJGU%BUB4USVDUVSFT#BHTXJGU
4VCTDSJQUJPO%JTQPTBCMFͷ࣮ ɾ4VCTDSJQUJPO%JTQPTBCMFͷ࣮ʹऔΓֻ͔Δ EJTQPTF ͰVOTVCTDSJCFΛൃՐͤ͞ΔΑ͏ͳ%JTQPTBCMFͷ࣮͕ඞཁ
4VCTDSJQUJPO%JTQPTBCMFͷ࣮ ɾ#FIBWJPS4VCKFDUͷऑࢀরͱPCTFSWFSΛಛఆ͢ΔΩʔΛอ࣋ ɾEJTQPTFͰ#FIBWJPS4VCKFDUͷVOTVCTDSJCFΛൃՐ
0CTFSWFS5ZQFϓϩτίϧͷద߹ ɾ͜ͷ··ͩͱ#FIBWJPS4VCKFDUΛঢ়ଶભҠͤ͞Δํ๏͕ͳ͍ ɾPO &WFOU Ͱঢ়ଶભҠΛͤ͞Δ͘0CTFSWFS5ZQFΛ࣮
ՌΛͱΓ͋͑ͣͬͯΈΔ ɾҎԼͷΑ͏ͳײ͡Ͱ0CTFSWFSύλʔϯΛͱΓ࣮͋͑ͣݱͰ͖Δ
Ռͷ ɾεϨουηʔϑͰͳ͍ 👉/43FDVSTJWF-PDLΛ͏͜ͱͰղܾ͢Δ ɾ&SSPS$PNQMFUFEͰΠϕϯτετϦʔϜ͕ด͡ͳ͍ 👉#FIBWJPS4VCKFDUʹରͯ͠EJTQPTFETUPQQFE&WFOU ɹϓϩύςΟΛՃͯ͠ɺదͳॲཧΛ࣮͢Δ ɾ4VCTDSJQUJPO%JTQPTBCMF͕#FIBWJPS4VCKFDUʹରͯ͠ ɹϋʔυίʔυ͞Ε͍ͯΔ
👉VOTVCTDSJCFΛ࣋ͭϓϩτίϧΛΓɺநґଘͤ͞Δ ɹʢ3Y4XJGUͷ4ZODISPOJ[FE6OTVCTDSJCF5ZQFʹ૬ʣ
εϨουηʔϑʹ͢ΔͨΊʹ ɾεϨουηʔϑʹ͢ΔͨΊʹ/43FDVSTJWF-PDLΛ༻͍Δ ɾ͋ΔεϨου͕MPDL͢ΔͱಉҰεϨουҎ֎͔ΒͷΞΫηεΛ ɹͨͤͯ͘ΕΔػೳΛ࣋ͭ ɾΞτϛοΫʹ͍ͨ͠෦ΛMPDL VOMPDLͰғΉ͚ͩͷઃܭ
εϨουηʔϑʹ͢ΔͨΊʹ ɾεϨουηʔϑʹ͢ΔͨΊʹ/43FDVSTJWF-PDLΛ༻͍Δ ɾ͋ΔεϨου͕MPDL͢ΔͱಉҰεϨουҎ֎͔ΒͷΞΫηεΛ ɹͨͤͯ͘ΕΔػೳΛ࣋ͭ ɾΞτϛοΫʹ͍ͨ͠෦ΛMPDL VOMPDLͰғΉ͚ͩͷઃܭ
3Y4XJGUͰEFGFSΛ্ͬͨهͷΑ͏ͳ࣮͕ʹͭ͘ ʢVOMPDLΕࢭͷͨΊͩͱࢥΘΕΔʣ
εϨουηʔϑʹ͢ΔͨΊʹ ɾ෦ঢ়ଶΛࢀরɾมߋ͢ΔՕॴʹMPDLΛࠩ͠ࠐΉ
·ͱΊ ɾ0CTFSWFS 0CTFSWBCMFͷ*'QVTIܕ0CTFSWFS ɹύλʔϯ͔Βࣗવʹಋ͘͜ͱ͕Ͱ͖Δ ɾQVTI͢ΔʹOFYU FSSPS DPNQMFUFEͱ͍͏ҙຯ͚Λ ɹ͢Δ͜ͱʹΑͬͯػೳੑΛ্͍ͤͯ͞Δͷ͕ಛత
ɾߪಡղআͷΈΛ%JTQPTBCMFʹҕৡ͍ͯ͠Δͷ͕ಛత ͳ͓ɺࠓͬͨ͜ͱͱεϥΠυͷ༰͔ͳΓઆ໌ෆͳͷͰɺڵຯ Λ࣋ͨΕͨํҎԼͷهࣄΛ͝ཡ͍͚ͨͩΔͱ͍Ͱ͢ IUUQRJJUBDPNHPNJ@OJOHFOJUFNTEDBBCFBBFC
ͦͷଞ3Y4XJGUʹؔ͢Δ׆ಈ 3Y4XJGUؔ࿈ͷهࣄɺଟॻ͍ͯ·͢ͷͰΑΖ͓͘͠ئ͍͠·͢🙏 <2JJUB>J04ΞϓϦ։ൃࣄྫͷ͝հ IUUQRJJUBDPNHPNJ@OJOHFOJUFNTCCBCE <$>هࣄ͝จ3YͰ͔͢ /"/"," *OTJEF13&44WPMʢୈ̓։ൃηΫγϣϯʣ
IUUQTTJUFTHPPHMFDPNTJUFEBJTFD <χίφϨ>3Y4XJGUΛ༻͍ͨΞϓϦ։ൃͷ࣮ફ IUUQOJDPOBSFOJDPWJEFPKQXBUDILO ͦͷଞɺ3Y4XJGUؔ࿈ͷωλͨ͘͞Μ͋ΔͷͰɺԿ͔ػձ͕͋ͬͨΒݺΜͰ͍ͩ͘͞