Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SwiftでわかるSOLID原則 iOSDC 2020
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
k-kohey
September 21, 2020
Technology
3.1k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SwiftでわかるSOLID原則 iOSDC 2020
iOSDC 2020の発表に用いた資料
k-kohey
September 21, 2020
More Decks by k-kohey
See All by k-kohey
ゲームボーイアドバンスでSwiftを動かそう
k_koheyi
0
1.6k
Swift Package Mangerのバグを直した話
k_koheyi
2
1.8k
swift-async-algorithms...? へえ…面白そうじゃん…?
k_koheyi
3
1.8k
[社内勉強会]Parchment-swiftの実装説明
k_koheyi
0
210
[社内勉強会]Combineの説明
k_koheyi
0
67
あるインスタンスの取る値が 何パターンあるか数えてみるンゴ!
k_koheyi
1
220
Tuistを用いた Xcode Project管理の紹介
k_koheyi
0
290
Other Decks in Technology
See All in Technology
Incremental HTTP
kazuho
5
2k
2026-10-01_MagicPod_QAハーネスエンジニアリングとQA組織の未来像
ynisqa1988
1
530
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
510
Swap and Memory Reclaim - Squeezing Out More RAM
ennael
PRO
1
1.6k
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
840
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
440
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
2
220
並行性の問題を防げ!実践トランザクション入門
occhi
0
260
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
350
全社共通データ基盤をつくる。ソニーのDatabricks活用とデータガバナンス設計の裏側
sony
0
420
OpenSharing について熱く語る〜AI アセットの共有について〜
kameitomohiro
0
230
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
450
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
7k
GraphQLとの向き合い方2022年版
quramy
50
15k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
710
Building a Scalable Design System with Sketch
lauravandoore
464
34k
The Language of Interfaces
destraynor
162
27k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
390
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
930
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Deep Space Network (abreviated)
tonyrice
0
350
Mobile First: as difficult as doing things right
swwweet
225
10k
Transcript
J04%$+BQBO!L@LPIFZJ 4XJGUͰΘ͔Δ40-*%ݪଇ J04ͷ։ൃࣄྫʹ߹ΘͤͯͰհ
ֶੜ࣌ελʔτΞοϓͰ J04ΞϓϦ։ൃΛ͍ͯͨ͠ ࢲʑ͜ͷΑ͏ͳ͜ͱΛ ߟ͍͑ͯ·ͨ͠
ࣗ ࣗػೳՃΛ ͍ͯ͠Δ͕
ࣗ ͦͷ࣮ Ճ͍ͯ͠Δͷ ػೳͰͳ͘ όάͳͷͰʁʁ
IUUQTXXXESPQCPYDPNTIOTJHWQSNJNWKSB""$//LWD8/I:&SHBJ4876B EM ϦϦʔεຖʹൃੜ͢Δόά ͦΕΛमਖ਼͢Δෛͷϧʔϓ
40-*%ݪଇ มߋʹڧ͘ཧղ͍͢͠γεςϜΛ࡞ΔͨΊͷݪଇ ͭͷઃܭݪଇͷ಄จࣈΛऔ໊ͬͨલʹͳ͍ͬͯΔ
J04։ൃʹབྷΊͯ 40-*%ݪଇ Ұ෦ Λઆ໌͠Α͏ ͱ͍͏ࢼΈͰ͢ ͜ͷൃද
୯Ұͷݪଇ 4JOHMF3FTQPOTJCJMJUZ1SJODJQMF
୯Ұͷݪଇ ֓ཁ w ͋ΔΫϥεʢߏମྻڍܕʹؔͯ͠ಉ͡ʣͭͷΞΫλʔʹରͯ͠ Λෛ͏͖Ͱ͋Δ w ΞΫλʔσβΠφʔϓϥϯφʔͷεςʔΫϗϧμʔɽࢀߟจݙͰ$50 $&0͕֘͢Δͱઆ໌͞Ε͍ͯΔɽ
୯Ұͷݪଇ ֓ཁ w ͋ΔΫϥεʢߏମྻڍܕʹؔͯ͠ಉ͡ʣͭͷΞΫλʔʹରͯ͠ Λෛ͏͖Ͱ͋Δ w ΞΫλʔσβΠφʔϓϥϯφʔͷεςʔΫϗϧμʔɽࢀߟจݙͰ$50 $&0͕֘͢Δͱઆ໌͞Ε͍ͯΔɽ ͋ΔΞΫλʔͷཁٻʹΑΔมߋ͕ ผͷΞΫλʔͷཁٻΛյͯ͠͠·͏Մೳੑ͕͋Δ
୯Ұͷݪଇʹ ै͍ͬͯͳ͍ྫ
୯Ұͷݪଇ ै͍ͬͯͳ͍ྫ ͳΜͰͤͯԼ͍͞ʂʂ ײڧ͗͢Δ
破…!!! 破…!!! ͋ΔΞΫλʔͷཁٻ͕͏ҰํͷΞΫλʔͷมߋΛഁյ͢ΔͷӨڹΛٴ΅͢Մೳੑ͕͋Δɽ খ͍͞Өڹͩͱɼ(JUͷίϯϑϦΫτͳͲ͕ߟ͑ΒΕΔɽ
୯Ұͷݪଇʹ ै͏Α͏ʹΫϥεΛ ͚Δ 2͡Ό͋Ͳ͏͢Δͷʁ
୯ҰͷݪଇʹैͬͯΛͨ͠Ұྫ 6*7JFX$POUSPMMFS ભҠઌΛܾఆ͢Δॲཧ $PPSEJOBUPS ભҠΞχϝʔγϣϯ σβΠφʔ ભҠΞχϝʔγϣϯ ΛϦονʹʂ มߋΛཁٻ ϓϥϯφʔ
ભҠॲཧΛҕৡ ભҠઌͷը໘Λ มߋ͍ͨ͠ʂ มߋΛཁٻ $PPSEJOBUPSύλʔϯը໘ભҠʹؔ͢ΔΛ$PPSEJOBUPSͱݺΕΔΫϥεҕৡ͢Δ࣮ύλʔϯ
୯ҰͷݪଇʹैͬͯΛͨ͠Ұྫ 6*7JFX$POUSPMMFS ભҠઌΛܾఆ͢Δॲཧ $PPSEJOBUPS ભҠΞχϝʔγϣϯ σβΠφʔ ભҠΞχϝʔγϣϯ ΛϦονʹʂ มߋΛཁٻ ϓϥϯφʔ
ભҠॲཧΛҕৡ ભҠઌͷը໘Λ มߋ͍ͨ͠ʂ มߋΛཁٻ $PPSEJOBUPSύλʔϯը໘ભҠʹؔ͢ΔΛ$PPSEJOBUPSͱݺΕΔΫϥεҕৡ͢Δ࣮ύλʔϯ
୯ҰͷݪଇʹैͬͯΛͨ͠Ұྫ 6*7JFX$POUSPMMFS ભҠઌΛܾఆ͢Δॲཧ $PPSEJOBUPS ભҠΞχϝʔγϣϯ σβΠφʔ ભҠΞχϝʔγϣϯ ΛϦονʹʂ มߋΛཁٻ ϓϥϯφʔ
ભҠॲཧΛҕৡ ભҠઌͷը໘Λ มߋ͍ͨ͠ʂ มߋΛཁٻ $PPSEJOBUPSύλʔϯը໘ભҠʹؔ͢ΔΛ$PPSEJOBUPSͱݺΕΔΫϥεҕৡ͢Δ࣮ύλʔϯ
୯ҰͷݪଇʹैͬͯΛͨ͠Ұྫ 6*7JFX$POUSPMMFS ભҠઌΛܾఆ͢Δॲཧ $PPSEJOBUPS ભҠΞχϝʔγϣϯ σβΠφʔ ભҠΞχϝʔγϣϯ ΛϦονʹʂ มߋΛཁٻ ϓϥϯφʔ
ભҠॲཧΛҕৡ ભҠઌͷը໘Λ มߋ͍ͨ͠ʂ มߋΛཁٻ 9$PPSEJOBUPSΛ༻͍ͨྫ IUUQTHJUIVCDPNRVJDLCJSETUVEJPT9$PPSEJOBUPS͔ΒҰ෦Ҿ༻
ݪଇʹै͏ͱ֤ΞΫλʔʹΑΔมߋ͕͓ޓ͍ʹׯব͠ͳ͍ͨΊ յΕʹ͍͘ઃܭͱͳͬͨ 6*7JFX$POUSPMMFS ભҠઌΛܾఆ͢Δॲཧ $PPSEJOBUPS ભҠΞχϝʔγϣϯ σβΠφʔ ભҠΞχϝʔγϣϯ ΛϦονʹʂ มߋΛཁٻ
ϓϥϯφʔ ભҠॲཧΛҕৡ ભҠઌͷը໘Λ มߋ͍ͨ͠ʂ มߋΛཁٻ
Ϧείϑͷஔݪଇ -JTLPWTVCTUJUVUJPOQSJODJQMF
Ϧείϑͷஔݪଇ ֓ཁ ͋Δܕ"ͱަՄೳͳܕ#Λ༻Ͱ͖Δ߹ɼ#"ͱಉ͡ৼΔ͍Λ͢Δ͜ͱ Λอূ͞Εͳ͍ͱ͍͚ͳ͍
Ϧείϑͷஔݪଇ ֓ཁ ͋Δܕ"ͱަՄೳͳܕ#Λ༻Ͱ͖Δ߹ɼ#"ͱಉ͡ৼΔ͍Λ͢Δ͜ͱ Λอূ͞Εͳ͍ͱ͍͚ͳ͍ ͋ΔܕΛ֦ு͢Δຖʹमਖ਼͕ ඞཁʹͳΔՄೳੑ͕͋Δ
Ϧείϑͷஔݪଇ ͍ ΦϒδΣΫτࢦݴޠͳΒܧঝʹΑͬͯৗʹຬͨͤͦ͏ʁ BEE4VC7JFX 6*7JFX ʹରͯ͠ 6*7JFXͷαϒλΠϓʢ&MMJQTF7JFXʣΛ ͢͜ͱ͕Ͱ͖Δ
Ϧείϑͷஔݪଇ ͍ ΦϒδΣΫτࢦݴޠͳΒܧঝʹΑͬͯৗʹຬͨͤͦ͏ʁ BEE4VC7JFX 6*7JFX ʹରͯ͠ 6*7JFXͷαϒλΠϓʢ&MMJQTF7JFXʣΛ ͢͜ͱ͕Ͱ͖Δ
ৼΔ͍·ͰަՄೳʹͳΔ͜ͱ୲อ͞Εͳ͍ 7JFXͷഎܠͱڥքઢͷ৭Λม͑Δ6*7JFXͷ֦ுؔͷྫ ͜ͷϝιουશͯͷ6*7JFXͷαϒλΠϓ ʹ͓͍ͯಉ͡Α͏ʹৼΔ͏͔ʁʁ
ৼΔ͍·ͰަՄೳʹͳΔ͜ͱ୲อ͞Εͳ͍ 6*4UBDL7JFXΛ༻͍ͨྫʢ9DPEFҎલʣ )PHF7JFX 'VHB7JFX 6*7JFX pMM*ODMVEJOH#PSEFS 6*4UBDL7JFX 9DPEF͔ΒCBDLHSPVOE$PMPSʹΑΔഎܠ৭ͷมߋ͕ՄೳͱͳΓ·ͨ͠IUUQTUXJUUFSDPNMBZPVU4VCWJFXTTUBUVT T આ໌ͷͨΊʹ6*4UBDL7JFXΛ࣋ͪग़͕ͨ͠ɼ6*,JUͦΜͳʹසൟʹมߋ͕ೖΔͷͰͳ͍͠ɼ͜ͷ-41ҧେͨ͠Ͱͳ͍ͱ͍͏ೝࣝͰ͢
ৼΔ͍·ͰަՄೳʹͳΔ͜ͱ୲อ͞Εͳ͍ 6*4UBDL7JFXΛ༻͍ͨྫʢ9DPEFҎલʣ )PHF7JFX 'VHB7JFX 6*7JFX pMM*ODMVEJOH#PSEFS 6*4UBDL7JFX ͜͜Ͱॲཧͷذ ͕ඞཁʹͳΔ
ৼΔ͍·ͰަՄೳʹͳΔ͜ͱ୲อ͞Εͳ͍ 6*4UBDL7JFXΛ༻͍ͨྫ )PHF7JFX 'VHB7JFX 6*7JFX pMM*ODMVEJOH#PSEFS 6*4UBDL7JFX ͜͜Ͱॲཧͷذ ͕ඞཁʹͳΔ
UIKitසൟʹมߋ͕ՃΘΒͳ͍ͨΊ͞΄ͲʹͳΒͳ͍͕ αϒλΠϓΛՃ͢Δʹ ྫ֎ͷ֬ೝͱରԠΛ͢Δඞཁ͕͋Δͷ ඇৗʹհ
Ϧείϑͷஔݪଇҧͷ؆қνΣοΫ ͕ࣗఆٛͨ͠ܕ͕มߋʹڧ͍͔Λ֬ೝ͢Δͷʹ͑Δ w ܧঝઌͰୀԽ͍ͯ͠ΔϝιουŋϓϩύςΟͳ͍͔ w ྫʣܧঝݩͰ࣮͕͋ΔͷʹɼܧঝઌͰۭ࣮ʹͳ͍ͬͯΔϝιου w ܧঝઌͰܧঝݩͰ͍͛ͯͳ͍ྫ֎Λ͍͛ͯͳ͍͔ w ྫʣ4XJGUͰΤϥʔΛ͛ͳ͍ϝιουΛΦʔόʔϥΠυͯ͠
ΤϥʔΛ͛ΔΑ͏ͳมߋͰ͖ͳ͍ɽ w ແཧΓGBUBM&SSPSΛى͜͢͜ͱՄೳɽ
ґଘੑٯసͷݪଇ %FQFOEFODZJOWFSTJPOQSJODJQMF
ґଘੑٯసͷݪଇ ֓ཁ w ؆୯ʹݴ͏ͱɼʮநʹґଘͤΑɽʯͱ͍͏ܦݧଇɽ w มߋ͞Ε͍͢۩ΫϥεΛܧঝͨ͠Γ໊ࢦ͠Ͱࢀরͨ͠Γ͍͚ͯ͠ͳ͍ ٯసͱɼґଘͷ͖͕ٯ͖ʹͳΔ͜ͱɼґଘͷํͱΠϯλϑΣʔεͷॴ༗ݖ͕ٯʹͳΔ͜ͱΛࢦ͢
ґଘੑٯసͷݪଇ ֓ཁ w ؆୯ʹݴ͏ͱɼʮநʹґଘͤΑɽʯͱ͍͏ܦݧଇɽ w มߋ͞Ε͍͢۩ΫϥεΛܧঝͨ͠Γ໊ࢦ͠Ͱࢀরͨ͠Γ͍͚ͯ͠ͳ͍ ଟ͘ͷ߹ʹ͓͍ͯ۩ΫϥεΑΓ ΠϯλϑΣʔεͷํ͕มߋ͞Εʹ͍ͨ͘Ί ͜ͷݪଇʹै͏ͱมߋʹڧ͍ઃܭʹͳΔ
ٯసͱɼґଘͷ͖͕ٯ͖ʹͳΔ͜ͱɼґଘͷํͱΠϯλϑΣʔεͷॴ༗ݖ͕ٯʹͳΔ͜ͱΛࢦ͢
ґଘੑٯసͷݪଇ ֓ཁ w ؆୯ʹݴ͏ͱɼʮநʹґଘͤΑɽʯͱ͍͏ܦݧଇɽ w มߋ͞Ε͍͢۩ΫϥεΛܧঝͨ͠Γ໊ࢦ͠Ͱࢀরͨ͠Γ͍͚ͯ͠ͳ͍ ଟ͘ͷ߹ʹ͓͍ͯ۩ΫϥεΑΓ ΠϯλϑΣʔεͷํ͕มߋ͞Εʹ͍ͨ͘Ί ͜ͷݪଇʹै͏ͱมߋʹڧ͍ઃܭʹͳΔ
ٯసͱɼґଘͷ͖͕ٯ͖ʹͳΔ͜ͱɼґଘͷํͱΠϯλϑΣʔεͷॴ༗ݖ͕ٯʹͳΔ͜ͱΛࢦ͢ Մೳͳͷ͔ʁ
໊ࢦ͠ͷࢀরΛ࠷খݶʹ͢Δํ๏ ґଘੑೖΛ༻͍ͨࣄྫ w 4XJOKFDUͷΑ͏ͳґଘੑೖΛߦ͏࣮Λ༻͍Δ͜ͱʹΑͬͯɼ۩Ϋϥε ͷࢀরΛ࠷খݶʹͰ͖Δɽ ϓϩτίϧͱ ॳظԽʹඞཁͳ ύϥϝʔλ ۩Ϋϥεͷ Πϯελϯε
ίϯςφʹ͋Δ 1FSTPOBMϓϩτίϧ ʹ४ڌͨ͠ΠϯελϯεΛԼ͍͞ 4VQFS1FSTPOͷΠϯελϯε ͕ొ͞Ε͍ͯΔͷͰ ίϨΛ͍ͬͯͩ͘͞ʂ ຊൃදͰΠϯλϑΣʔεͱϓϩτίϧΛҙຯతʹΘ͚ͳ͍ɽͨͩ͠ɼϓϩτίϧͱ͏ͱ͖ΑΓ4XJGUͷݴޠతͳഎܠ͕ڧ͍ɽ
໊ࢦ͠ͷࢀরΛ࠷খݶʹ͢Δํ๏ ґଘੑೖΛ༻͍ͨࣄྫ w 4XJOKFDUͷΑ͏ͳґଘੑೖΛߦ͏࣮Λ༻͍Δ͜ͱʹΑͬͯɼ۩Ϋϥε ͷࢀরΛ࠷খݶʹͰ͖Δɽ %*ίϯςφʹ ۩Ϋϥεͷొʢࢀরʣ ͕ඞཁ
໊ࢦ͠ͷࢀরΛ࠷খݶʹ͢Δํ๏ ґଘੑೖΛ༻͍ͨࣄྫ w 4XJOKFDUͷΑ͏ͳґଘੑೖΛߦ͏࣮Λ༻͍Δ͜ͱʹΑͬͯɼ۩Ϋϥε ͷࢀরΛ࠷খݶʹͰ͖Δɽ 1SPUPDPM͍͑ͬͯ͞Ε ۩ΫϥεΛࢀর͢Δ͜ͱͳ͘ ͦͷΠϯελϯεΛऔಘͰ͖Δ
໊ࢦ͠ͷࢀরΛ࠷খݶʹ͢Δํ๏ ґଘੑೖΛ༻͍ͨࣄྫ w 4XJOKFDUͷΑ͏ͳґଘੑೖΛߦ͏࣮Λ༻͍Δ͜ͱʹΑͬͯɼ۩Ϋϥε ͷࢀরΛ࠷খݶʹͰ͖Δɽ 1SPUPDPM͍͑ͬͯ͞Ε ۩ΫϥεΛࢀর͢Δ͜ͱͳ͘ ͦͷΠϯελϯεΛऔಘͰ͖Δ ݪଇʹै͏͜ͱʹΑͬͯ
มߋ͞Ε͍͢ ۩ΫϥεͷࢀরΛආ͚ͳ͕Β ։ൃ͕Ͱ͖ΔΑ͏ʹͳͬͨ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 4XJGUͰΘ͔Δ40-*%ݪଇ!L@LPIFZJ w 40-*%ݪଇ w มߋʹڧ͘ཧղ͍͢͠γεςϜΛ࡞ΔͨΊʹ༗ӹ w ୯Ұͷݪଇ w ͋ΔΫϥεͭͷΞΫλʔ܈ʹରͯ͠Λෛ͏͖Ͱ͋Δ
w Ϧείϑͷஔݪଇ w ͋Δܕ"ͱަՄೳͳܕ#Λ༻Ͱ͖Δ߹ɼ#"ͱಉ͡ৼΔ͍Λ͢ Δ͜ͱΛอূ͞Εͳ͍ͱ͍͚ͳ͍ w ґଘੑٯసͷݪଇ w நʹґଘͤΑ w ͦͷଞͷݪଇ w ͕࣌ؒΓͣൃදͰ͖·ͤΜͰͨ͠ϒϩάʹ·ͱΊ·͢ɽ 5XJUUFSʢ!L@LPIFZJʣ ͜ͷࢿྉ͓Αͼ ΑΓৄࡉͳݪଇͷઆ໌ࢿྉ ΛπΠʔτ͍ͯ͠·͢
ࢀߟจݙ ॻ੶ • <>3PCFSU$.BSUJOɼ୩ܒհɽΞδϟΠϧιϑτΣΞ։ൃͷԞٛୈ൛ΦϒδΣΫτࢦ։ൃͷਆͱঊͷٕʢʣ4#ΫϦΤΠ ςΟϒ • <>3PCFSU$.BSUJOɼ֯యɼߴਖ਼߂ɽ$MFBO"SDIJUFDUVSFୡਓʹֶͿιϑτΣΞͷߏͱઃܭʢʣ,"%0,"8" هࣄ • ΠϯλʔϑΣΠεͷݪଇIUUQTUIJOLPOPCKFDUCMPHTQPUDPNJOUFSGBDFTFHSFHBUJPOQSJODJQMFJTQUPQIUNM
• 40-*%ݪଇΛཧղ͢ΔIUUQTTIUOLHNDPNTPMJEIUNM • ΠϯλʔϑΣʔεͷ๏ଇ *41 IUUQIBSVNJTBLVSBOFKQXPSEQSFTT &"&#&#'&#$&&"&#$&#& &#"&"&&#&JTQ • 4XJGUJ04ʹ͓͚Δ40-*%4JOHMF3FTQPOTJCJMJUZ1SJODJQMFIUUQTNFEJVNDPN!SJ[VNJUBTXJGU JPT&"#&"&&#TPMJETJOHMFSFTQPOTJCJMJUZQSJODJQMFBFBEEF • Α͘Θ͔Δ40-*%ݪଇ%ʢґଘੑٯసͷݪଇʣIUUQTOPUFDPNFSVLJUJOOFF • աڈʹ։࠵ͨ͠ňΞδϟΠϧιϑτΣΞ։ൃͷԞٛʼnͷษڧձʹͯ༻͍ΒΕͨࢿྉͨͪ ◦ IUUQTTQFBLFSEFDLDPNDIJHJDIBOBQQMJDBUJPOEFTJHONJBORJBOHIVJOVNCFS ◦ IUUQTTQFBLFSEFDLDPNL@LPIFZBQQMJDBUJPOEFTJHONJBORJBOHIVJOVNCFS