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.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
20260807_第6回_関東kaggler会LT_claw系bot xangiと始める、"寂しくない" kaggle
sugupoko
0
190
強化学習「理論」入門
enakai00
3
3.6k
初めてのGitHub Actions / GitHub Actions at First
tooppoo
0
150
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
230
関東Kaggler会発表資料
takoi
1
160
サイバー捜査員研修(後半)
nomizone
1
800
組織にどうSREを根付かせるか?〜IVRyの場合〜
abnoumaru
0
330
侵入は突然に 〜 IoTマルウェアと悪用される家庭の機器 ~ / When Intrusion Strikes: IoT Malware and the Abuse of Home Devices
nttcom
0
1.5k
変化の早いClaude Codeを 書籍に落とし込む
oikon48
7
1.3k
SO-101×VLAによる3色キューブのピック&プレース
abeja
0
130
AI ネイティブな組織に Gemini Enterprise Agent Platform がなぜ必要なのか
asei
1
190
Cursor Meetup Sapporo - Cursor物語 続編
cocacola917
0
140
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
The agentic SEO stack - context over prompts
schlessera
0
860
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
330
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.7k
Between Models and Reality
mayunak
4
390
KATA
mclloyd
PRO
35
15k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
230
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
950
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
400
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