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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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.7k
swift-async-algorithms...? へえ…面白そうじゃん…?
k_koheyi
3
1.7k
[社内勉強会]Parchment-swiftの実装説明
k_koheyi
0
200
[社内勉強会]Combineの説明
k_koheyi
0
56
あるインスタンスの取る値が 何パターンあるか数えてみるンゴ!
k_koheyi
1
200
Tuistを用いた Xcode Project管理の紹介
k_koheyi
0
280
Other Decks in Technology
See All in Technology
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
4
3k
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
200
なぜ Platform Engineering の土台に Kubernetes を選ぶのか
r4ynode
1
510
中期計画、2回作ってみた ~業務委託と正社員、両方の視点から~
demaecan
1
610
脆弱性対応、どこで線を引くか
rymiyamoto
0
270
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
140
個人最適 から 全体最適 へ AI情報共有会・AIギルド・AI-DLC で進める カンリーの組織展開
rfdnxbro
0
2.1k
Dario Amodi『Policy on the AI Exponential』を理解する
nagatsu
0
210
実装は速くなった、レビューはどうする? ― 自身のレビューをAIで再現させるサーヴァントエンジニアリングのすゝめ / Implementation got faster. So what about reviews? — An invitation to Servant Engineering: Recreating your own code reviews with AI
nrslib
8
4.5k
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
0
330
AIを「創る」と「使う」の循環 — HRテックが実践するリアルなAI組織実装
taketo957
0
1.9k
自律型AIエージェントは何を破壊するのか
kojira
0
140
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
200
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Being A Developer After 40
akosma
91
590k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
200
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
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