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
Clean Architecture
Search
Takuma Shimizu
August 01, 2018
Programming
0
110
Clean Architecture
Takuma Shimizu
August 01, 2018
Tweet
Share
More Decks by Takuma Shimizu
See All by Takuma Shimizu
Swift Attributes
hokuron
0
440
Peek in Calendar implementation of swift-foundation
hokuron
0
190
MVVM
hokuron
0
51
Summon Rust from Swift
hokuron
0
680
Opaque Result Type in Swift with Rust
hokuron
0
160
Generalized accessors
hokuron
0
81
Ownership of Swift as seen from iteration and Rust
hokuron
1
690
Clean Architecture 3
hokuron
0
54
Clean Architecture 2
hokuron
0
69
Other Decks in Programming
See All in Programming
Flutterで分数(Fraction)を表示する方法
koukimiura
0
130
なぜGoのジェネリクスはこの形なのか? Featherweight Goが明かす設計の核心
ryotaros
7
1.1k
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
natmark
2
520
非同期jobをtransaction内で 呼ぶなよ!絶対に呼ぶなよ!
alstrocrack
0
970
AI Agent 時代的開發者生存指南
eddie
2
1.7k
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
190
overlayPreferenceValue で実現する ピュア SwiftUI な AdMob ネイティブ広告
uhucream
0
180
Software Architecture
hschwentner
6
2.3k
私はどうやって技術力を上げたのか
yusukebe
44
19k
なぜあの開発者はDevRelに伴走し続けるのか / Why Does That Developer Keep Running Alongside DevRel?
nrslib
3
410
CSC509 Lecture 03
javiergs
PRO
0
340
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
10
3k
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
463
33k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
590
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Designing for Performance
lara
610
69k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Bash Introduction
62gerente
615
210k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Mobile First: as difficult as doing things right
swwweet
224
10k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
910
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
22k
Transcript
ΫϦʔϯΞʔΩςΫ νϟࣄ࢝Ί ٕज़ษڧձ
ΞϓϦ෦େࡕ՝ ਗ਼ਫຏ !IPLVSPO J04 3VCZPO3BJMT
ΫϦʔϯΞʔΩςΫ νϟࣄ࢝Ί ٕज़ษڧձ
͜ͷൃදʹ͍ͭͯ w ͜·Ίʹ࣭Λड͚͚·͢ w Ε͍ͯͨΒࢦఠ͍ͯͩ͘͠͞! w ͦΕҎ֎Ͱ్தͰ࣭͕͋ΕԿͳΓͱ w $MFBO"SDIJUFDUVSFຊ ݪஶɾ༁
Λݩʹߏ w ΫϦʔϯΞʔΩςΫνϟͷ؊ͱͳΔ෦Λநग़
ΫϦʔϯΞʔΩςΫ νϟશʹཧղͨ͠ ඪ 15&
ඪ ݠḮ ΫϦʔϯΞʔΩςΫ νϟͳΜ͔͔Δ
ΫϦʔϯΞʔΩςΫνϟͷ؊ ޡղू ॻ੶հ ͓Βͤ
ΫϦʔϯΞʔΩςΫνϟͷ؊
ࢀরɿIUUQTUIMJHIUDPNCMPHVODMFCPCUIFDMFBOBSDIJUFDUVSFIUNM
None
w ʮΫϦʔϯΞʔΩςΫνϟʯͱ͍͏ΞʔΩςΫνϟͳ͍ w ΑΓྑ͍ ΫϦʔϯͳ ΞʔΩςΫνϟΛࢦ֓͢೦ w ஶऀͷ3PCFSU$.BSUJOʹΑΔz$MFBOzγϦʔζͷҰͭ w $MFBO$PEF
w $MFBO$PEFS w $MFBO"SDIJUFDUVSF
ࢀরɿIUUQTUIMJHIUDPNCMPHVODMFCPCUIFDMFBOBSDIJUFDUVSFIUNM
None
ΫϦʔϯΞʔΩςΫνϟͷ؊ w #VTJOFTT3VMFT w &OUJUZ w 6TF$BTF w ґଘํ w
*OUFSGBDF"EBQUFST
#VTJOFTT3VMFT
&OUJUZ w $SJUJDBMCVTJOFTTSVMF w શʹಠཱ w υϝΠϯۦಈઃܭͷυϝΠϯϞσϧ w &OUJUZ 3FGFSFODF
PCKFDUɼ7BMVFPCKFDUɼ4FSWJDF w ʰΦϒδΣΫτࢦιϑτΣΞֶ004&ʱͷ༻ޠ
6TF$BTF w "QQMJDBUJPOTQFDJpDCVTJOFTTSVMF w 6* %# ϑϨʔϜϫʔΫͷӨڹड͚ͳ͍ w ΞϓϦӡ༻ͷมߋͷӨڹड͚Δ w
&OUJUZʢυϝΠϯϞσϧʣͷΫϥΠΞϯτ
#VTJOFTT3VMFT w$SJUJDBMCVTJOFTTSVMF w"QQMJDBUJPOTQFDJpDCVTJOFTTSVMF རӹ૿Ճɺඅ༻ݮʹؔΘΔϧʔϧखଓ͖
$SJUJDBMWT"QQTQFDJpD &OUJUZWT6TF$BTF w $SJUJDBMखಈͰ࣮ߦՄೳ w "QQTQFDࣗಈԽ͞Ε͍ͯΔ͜ͱ͕લఏ w $SJUJDBMγεςϜ͔Βಠཱ w
"QQTQFDγεςϜʹґଘ
l$SJUJDBMz
l$SJUJDBMz#VTJOFTT3VMF ˣ l&OUFSQSJTFz#VTJOFTT3VMF
l&OUFSQSJTFz#VTJOFTT3VMF #$ΞϓϦͰʜ w ར༻ऀෆಛఆଟͷҰൠϢʔβʔ w ൃݩͷച্རӹɺۀʹӨڹΛ༩͑ͳ͍ w ͦΖΜΛ͘Α͏ͳखଓ͖͕ଘࡏ͠ͳ͍ ˠ$SJUJDBM"QQMJDBUJPOTQFDJpDͱಉٛʁ
$SJUJDBMͱ"QQTQFDͷҧ͍ w γεςϜ͔Βೖग़ྗͱͷڑͷҧ͍ w มߋසͱมߋཧ༝ͷҧ͍ w ୯Ұͷݪଇ 4JOHMF3FTQPOTJCJMJUZ1SJODJQMF
ೖग़ྗͷڑ w ʮ-FWFMʯͱ͍͏֓೦ w ϢʔβʔγεςϜͷೖྗͱग़ྗ͔ΒΕ͍ͯΔ΄Ͳ -FWFM͕ߴ͍ w -FWFM͕ҟͳΕมߋසɾཧ༝ҟͳΔ w &OUJUZ͔6TF$BTFͰ໎ͬͨΒz-FWFMzΛൺֱ
w ΑΓ-FWFM͕ߴ͍΄͏Λ&OUJUZʹ w ୯ҰͷݪଇΛద༻͍ͯ͠ΕΑΓ؆୯ʹͳΔ
#VTJOFTT3VMFTͷ·ͱΊ w &OUJUZ $SJUJDBM ͱ6TF$BTF "QQMJDBUJPOTQFDJpD w $SJUJDBMγεςϜʹґΒͣɺ"QQTQFDγεςϜ͋Γ͖ w
&OUJUZશʹಠཱ͠ɺ6TF$BTFͦͷΫϥΠΞϯτ w -FWFMͷܭଌͰᐆດ͞ճආ w #VTJOFTT3VMFʹ͚ͩͰͳ͘Ͳ͜Ͱద༻Մೳ
ґଘํ w ৗʹҰํʹ͚ͩʹґଘ w ґଘؔٯసͷݪଇ %FQFOEFODZJOWFSTJPOQSJODJQMF w ೖग़ྗσʔλͷґଘ੍
Ұํͷґଘ w ͜ͷ෦ w ԼҐ-FWFMͷϨΠϠʔ ίϯϙʔωϯτ ্Ґ-FWFMͷϨΠϠʔ ίϯϙʔωϯτ ʹґଘ͢Δ
w ্Ґ-FWFMɺԼҐ-FWFMͰ༻͞Ε͍ͯΔ໊લΛ ར༻͍͚ͯ͠ͳ͍ w ܕ໊ɺϝιουɺϓϩύςΟͳͲ w ্Ґ-FWFMɺԼҐ-FWFMͰ༻͞Ε͍ͯΔσʔλߏΛ ར༻͍͚ͯ͠ͳ͍
ґଘؔٯసͷݪଇ w ͜ͷ෦
6TF$BTF $POUSPMMFS 1SFTFOUFS
6TF$BTF $POUSPMMFS 1SFTFOUFS
6TF$BTF $POUSPMMFS 1SFTFOUFS
6TF$BTF 1SFTFOUFS
6TF$BTF 1SFTFOUFS
6TF$BTF 1SFTFOUFS
6TF$BTF 1SFTFOUFS 0VUQVU *OUFSGBDF
6TF$BTF 1SFTFOUFS 0VUQVU *OUFSGBDF
6TF$BTF 1SFTFOUFS 0VUQVU *OUFSGBDF 6TF$BTF 1SFTFOUFS
ґଘؔٯసͷݪଇ w্Ґ-FWFMͷϨΠϠʔ ίϯϙʔωϯτ ͕ ԼҐ-FWFMͷϨΠϠʔʹґଘ͢ΔͷΛ͙ w *OUFSGBDFQSPUPDPMΛؒʹڬΜͰ্Ґ-FWFMଆʹஔ w *OUFSGBDF"EBQUFST
ೖग़ྗσʔλͷґଘ੍ w ୯७ͳσʔλߏମ w ݴޠΈࠐΈͷϓϨʔϯͳΦϒδΣΫτͰߏ w ࣗଞͷϨΠϠʔಠࣗͷΦϒδΣΫτؚΊͳ͍ w σʔλߏମҰͭͷґଘ w
্Ґ-FWFMɺԼҐ-FWFMͷσʔλߏମΛΒͳ͍
ґଘํͷ·ͱΊ w ؔ৺ͷ w ґଘํৗʹҰఆ w ԼҐ-FWFM্Ґ-FWFMʹґଘ$ٯېࢭ% w ϨΠϠʔͷؒΛ·͕ͨΔσʔλߏʹద༻͞ΕΔ w
্Ґ͕ԼҐʹґଘ͢Δ߹ґଘؔٯసͷݪଇ
ΫϦʔϯΞʔΩςΫνϟͷ؊ w &OUJUZ $SJUJDBM#VTJOFTT3VMF w 6TF$BTF "QQMJDBUJPOTQFDJpD#VTJOFTT3VMF w
l-FWFMz w ґଘํɺґଘؔٯసͷݪଇ
؊ͷ֎ଆ & &
w *OUFSGBDF"EBQUFS w .7$ .77. .71 .717.FUD w 42- 3&45"1*
(SBQI2-FUD w 'SBNFXPSL %SJWFS w J04 "OESPJE 8FC .BSJB%# 'JSFCBTFFUD
ΫϦʔϯΞʔΩςΫνϟͷ؊ͷ ֎ଆͷ؊ w ࠾༻͢ΔઃܭύλʔϯσʔλϕʔεͳͲͷܾఆΛ୨্͛ w ΑΓଆͷ։ൃʹूதͰ͖Δ w ຊͷҙຯͰ֎ଆΛҙࣝ͠ͳ͍ͰࡁΉ
ΫϦʔϯΞʔΩςΫνϟͷ؊ w &OUJUZ $SJUJDBM#VTJOFTT3VMF w 6TF$BTF "QQMJDBUJPOTQFDJpD#VTJOFTT3VMF w
l-FWFMz w ґଘํɺґଘؔٯసͷݪଇ
ޡղू
ޡղͦͷ̍ 5SBOTMBUPSඞਢ
ޡղͦͷ̍ 5SBOTMBUPSඞਢ ͑ ෆཁ
ޡղͦͷ 3FQPTJUPSZͱ %BUB4UPSFηοτ
ޡղͦͷ 3FQPTJUPSZͱ %BUB4UPSFηοτ ͑ ෆཁ
ޡղͦͷ .71ύλʔϯΛ͏
ޡղͦͷ .71ύλʔϯΛ͏ ͑ ԿͰ͍͍
ޡղͦͷ &OUJUZ%%%Ͱઃܭ
ޡղͦͷ &OUJUZ%%%Ͱઃܭ ͑ ԿͰ͍͍
ޡղͦͷ ϨΠϠʔΛ·͙ͨͱ͖ ʹ3FBDUJWF&YUFOTJPOT ศར͡ΌͶʁ
ޡղͦͷ ϨΠϠʔΛ·͙ͨͱ͖ʹ 3FBDUJWF&YUFOTJPOTศར͡Ό Ͷʁ ͑ Ίͯ
ޡղͦͷ Δ͜ͱଟ͘ͳ͔ͬ͢Ͷ
ޡղͦͷ Δ͜ͱଟ͘ͳ͔ͬ͢Ͷ ͑ ͦͷͱ͓ΓɻͰ ίʔυϦʔσΟϯά ͷෛՙԼ͕Δ
ޡղͦͷ ॳݟࡴͩ͠ΑͶʁ
͑ ॳݟࡴͩ͠ΑͶʁ ͏Μɺ ͔ͩΒࠓઆ໌ͯ͠Δ
ΫϦʔϯΞʔΩςΫ νϟશʹཧղͨ͠ ඪ 15&
ඪ ݠḮ ΫϦʔϯΞʔΩςΫ νϟͳΜ͔͔Δ
ޡ ਖ਼ 5SBOTMBUPSඞਢ ෆཁ 3FQPTJUPSZͱ %BUB4UPSFηοτ ෆཁ .71ύλʔϯΛ͏ ͳΜͰ͍͍ &OUJUZ%%%Ͱઃܭ
ͳΜͰ͍͍ ϨΠϠʔΛ·͙ͨͱ͖ʹ3FBDUJWF&YUFOTJPOศ ར͡ΌͶʁ Ίͯ Δ͜ͱଟ͘ͳ͔ͬ͢Ͷ Ӿཡ࣮ ͳΒΔՁ͋Γ
ॻ੶հ ݪஶ Robert C. Martin, Clean Architecture: A Craftsman's Guide
to Software Structure and Design
ॻ੶հ ༁ ϩόʔτɾ$Ϛʔνϯ ʰ$MFBO"SDIJUFDUVSFɹ ୡਓʹֶͿιϑτΣΞ ͷߏͱઃܭʱ ʢ֯యɾߴਖ਼߂༁ʣ
ॻ੶հ ͦͷଞ ϰΝʔϯɾϰΝʔϊϯ ʰ࣮ફυϝΠϯۦಈઃ ܭʱʢߴਖ਼߂༁ʣ
ॻ੶հ ͦͷଞ ΤϦοΫɾΤϰΝϯε ʰΤϦοΫɾΤϰΝϯε ͷυϝΠϯۦಈઃܭʱ ʢࠓؔ߶म ɹஐӈܡɾ༞ࢠ ༁ʣ