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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
58
あるインスタンスの取る値が 何パターンあるか数えてみるンゴ!
k_koheyi
1
210
Tuistを用いた Xcode Project管理の紹介
k_koheyi
0
280
Other Decks in Technology
See All in Technology
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
8k
GuardrailからGovernanceへ~AIエージェント運用の次の課題~
sbspsy
1
200
初めてのDatabricks勉強会
taka_aki
2
240
AIに「使われる」時代のSaaS戦略 〜既存WebAPIのMCPサーバー化における開発ノウハウ〜
ekispert_api
0
290
なぜ人は自分のプロジェクトを 「なんちゃってアジャイル」と 自嘲するのか
kozotaira
0
250
スタートアップにおけるアジャイルの実践について #shibuyagile
murabayashi
3
2.1k
勉強会企画をアプリで構造化してみた 〜そこで見えた、AIとの付き合い方〜 / I've structured a study group plan using an app.
pauli
0
320
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
3
740
美しいコードを書くためにF#を学んでみた話
yud0uhu
1
210
事業価値を⽣み出すSREへ SREが担うべき意思決定の5層
kenta_hi
0
350
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
470
プライバシー保護の理論と実践
lycorptech_jp
PRO
1
240
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
880
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
350
Navigating Weather and Climate Data
rabernat
0
270
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
770
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
260
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
The SEO Collaboration Effect
kristinabergwall1
1
500
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.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