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
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.5k
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
62
あるインスタンスの取る値が 何パターンあるか数えてみるンゴ!
k_koheyi
1
210
Tuistを用いた Xcode Project管理の紹介
k_koheyi
0
280
Other Decks in Technology
See All in Technology
数値で見る Microsoft MVP 〜Spec Kit と GitHub Copilot Agent で作るデータ可視化ダッシュボード〜
yutakaosada
0
170
歴史から理解するクラウドインフラのしくみ
kizawa2020
0
190
StepFunctionsとGraphRAGを活用した暗黙知活用のためのRAG基盤
yakumo
0
190
reFACToring
moznion
1
930
データ活用研修 データマネジメント【MIXI 26新卒技術研修】
mixi_engineers
PRO
4
790
13年運用タイトルのサーバーサイドが辿り着いた現在地 ― モンスターストライクにおける技術・組織・AI活用から得た知見
mixi_engineers
PRO
1
330
AI驚き屋発見器
yama3133
1
380
MCPをつなげて作る組織横断のAIエージェント基盤
tsubakimoto_s
0
400
それでも、技術なブログを書く理由 #kichijojipm / Why I Still Write Tech Blogs Even Now
shinkufencer
0
1.3k
人手不足への挑戦:車両保全を支えるIoTとクラウド内製化の道【SORACOM Discovery 2026】
soracom
PRO
0
160
検索技術知識0のエンジニアが広告検索システムを内製化して運用するまで
lycorptech_jp
PRO
0
160
データエンジニアこそ組織のオントロジーに向き合うべき — 問いに答えるAIから、事業を動かすAIへ
gappy50
4
2.3k
Featured
See All Featured
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
The Spectacular Lies of Maps
axbom
PRO
1
880
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
400
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Statistics for Hackers
jakevdp
799
230k
The Limits of Empathy - UXLibs8
cassininazir
1
560
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
How STYLIGHT went responsive
nonsquared
100
6.2k
What's in a price? How to price your products and services
michaelherold
247
13k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
820
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