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
0
22
15 minutes recipe of RxSwift
2016/04/14 - RxSwift 勉強会 #1@Sansan
https://sansan.connpass.com/event/27933/
gomi_ningen
April 14, 2016
Tweet
Share
More Decks by gomi_ningen
See All by gomi_ningen
RxSwiftのObservableとは何か | iOSDC Japan 2017
53ningen
0
19
Xamarin.iOS によるプロダクトアプリ開発の実践
53ningen
0
13
この実装には問題がある!
53ningen
0
1.1k
Dependency Injection in Swift2
53ningen
0
25
RxSwiftを用いたアプリ開発の実践
53ningen
0
27
ITSを用いた旅行の構築
53ningen
0
14
Other Decks in Programming
See All in Programming
Android端末で実現するオンデバイスLLM 2025
masayukisuda
1
130
アプリの "かわいい" を支えるアニメーションツールRiveについて
uetyo
0
230
ソフトウェアテスト徹底指南書の紹介
goyoki
1
150
rage against annotate_predecessor
junk0612
0
160
AI Coding Agentのセキュリティリスク:PRの自己承認とメルカリの対策
s3h
0
200
Performance for Conversion! 分散トレーシングでボトルネックを 特定せよ
inetand
0
130
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
1.6k
プロポーザル駆動学習 / Proposal-Driven Learning
mackey0225
2
1.2k
MCPでVibe Working。そして、結局はContext Eng(略)/ Working with Vibe on MCP And Context Eng
rkaga
5
2.2k
Zendeskのチケットを Amazon Bedrockで 解析した
ryokosuge
3
290
Kiroの仕様駆動開発から見えてきたAIコーディングとの正しい付き合い方
clshinji
1
210
AIコーディングAgentとの向き合い方
eycjur
0
270
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.6k
GitHub's CSS Performance
jonrohan
1032
460k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Done Done
chrislema
185
16k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Git: the NoSQL Database
bkeepers
PRO
431
66k
A Tale of Four Properties
chriscoyier
160
23k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Side Projects
sachag
455
43k
Facilitating Awesome Meetings
lara
55
6.5k
Site-Speed That Sticks
csswizardry
10
810
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ؔ࿈ͷωλͨ͘͞Μ͋ΔͷͰɺԿ͔ػձ͕͋ͬͨΒݺΜͰ͍ͩ͘͞