$30 off During Our Annual Pro Sale. View Details »
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
200
MVVM
hokuron
0
51
Summon Rust from Swift
hokuron
0
690
Opaque Result Type in Swift with Rust
hokuron
0
170
Generalized accessors
hokuron
0
82
Ownership of Swift as seen from iteration and Rust
hokuron
1
690
Clean Architecture 3
hokuron
0
58
Clean Architecture 2
hokuron
0
76
Other Decks in Programming
See All in Programming
dotfiles 式年遷宮 令和最新版
masawada
1
780
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
230
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
6
310
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.4k
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
430
Github Copilotのチャット履歴ビューワーを作りました~WPF、dotnet10もあるよ~ #clrh111
katsuyuzu
0
110
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
harappa80
0
320
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
510
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
190
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
720
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
2.7k
FluorTracer / RayTracingCamp11
kugimasa
0
230
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
RailsConf 2023
tenderlove
30
1.3k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Documentation Writing (for coders)
carmenintech
76
5.2k
Music & Morning Musume
bryan
46
7k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Bash Introduction
62gerente
615
210k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
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ɹ ୡਓʹֶͿιϑτΣΞ ͷߏͱઃܭʱ ʢ֯యɾߴਖ਼߂༁ʣ
ॻ੶հ ͦͷଞ ϰΝʔϯɾϰΝʔϊϯ ʰ࣮ફυϝΠϯۦಈઃ ܭʱʢߴਖ਼߂༁ʣ
ॻ੶հ ͦͷଞ ΤϦοΫɾΤϰΝϯε ʰΤϦοΫɾΤϰΝϯε ͷυϝΠϯۦಈઃܭʱ ʢࠓؔ߶म ɹஐӈܡɾ༞ࢠ ༁ʣ