Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
初学者がクリーンアーキテクチャに向きあってみようとした話
Search
dacho/だっちょ
June 08, 2025
Programming
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
初学者がクリーンアーキテクチャに向きあってみようとした話
dacho/だっちょ
June 08, 2025
Other Decks in Programming
See All in Programming
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
120
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
5.5k
ジョジョの世界をXRで再現する
mofurune
0
110
FreeBSDでZabbixを動かす
kenkino
0
360
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
480
Verilogで学ぶCPU自作入門.pdf
uyuki234
8
4k
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
140
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
320
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
620
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
130
Security issues being discussed on Web Platforms
petamoriken
0
1.4k
速習iPhone Duo対応
yuukiw00w
2
960
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
580
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
550
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
350
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Six Lessons from altMBA
skipperchong
29
4.5k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
Between Models and Reality
mayunak
4
480
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
How to Talk to Developers About Accessibility
jct
2
560
Code Review Best Practice
trishagee
74
20k
Transcript
初学者がクリーンアーキテクチャ に向きあってみようとした話 dacho/だっちょ [ REPORT ]
[ 注意書き ] この解説にはクリーンアーキテクチャに 関する個人的な解釈が含まれており、 一般的な定義と異なる場合があります。 その際はご指摘あるとありがたいです 💦
[ 自己紹介 ] SNS 趣味 dacho/だっちょ 26卒 Androidエンジニア x: @goretzka_Reo github:
REOysd 筋トレ 外食(ラーメン)
[ 目次 ] なぜ登壇するに至ったのか 01 SOLID原則 02 クリーンアーキテクチャ != 銀の弾丸
03 最後に 04
01 な ぜ 登 壇 す る に 至 っ
た の か
[ なぜ登壇するに至ったのか ] クラシルリワードではクリーンアーキテクチャ(?) の概念なるものを採用しているようだ 😕
[ なぜ登壇するに至ったのか ]
[ なぜ登壇するに至ったのか ]
[ なぜ登壇するに至ったのか ]
02 S O L I D 原 則
[SOLID原則] 今回はパッケージ単位のアーキテクチャ には触れません!! クラシルに関するパッケージ単位のアーキテクチャはこちら
単一責任の原則(SRP: single responsibility principle) オープンクローズドの原則(OCP: open closed principle) リスコフの置換原則(LSP:liskov substitution
principle) インターフェイス分離の原則(ISP:Interface segregation principle) 依存関係逆転の原則(DIP:dependency inversion principle) [SOLID原則] S O L I D 原 則
単一責任の原則 メリット 単一責任の原則は関数には1つの機 能しか実装しない 変更に強くなる 再利用しやすくなる テストがしやすくなる 可読性が高くなる [SOLID原則]
[SOLID原則] 適用前
[SOLID原則] 適用後
オープンクローズドの原則 メリット 拡張に対して開かれていて、修正に対 しては閉じている 上位の変更が、下位に影響する設計は NG! 既存コードに手を加えなくて済む テスト済みのコードを再利用できる [SOLID原則]
[SOLID原則] 適用前
[SOLID原則] 適用後
リスコフの置換原則 メリット あるクラスを継承した時、継承先の振 る舞いと継承元の振る舞いを一致させ る動き コードの一貫性と柔軟性を保証 オープンクローズドの原則と相性が良 い コードの拡張性、保守性、再利用性の 向上
[SOLID原則]
[SOLID原則] 適用前
[SOLID原則] 適用後
インターフェース分離の原則 メリット クライアントは、自身が使用しない メソッドへの依存を強制されるべき ではない コードの可読性、保守性の向上 単一責任の原則と相性が良い 余計な再デプロイ、再コンパイルが起 きない [SOLID原則]
[SOLID原則] 適用前
[SOLID原則] 適用後
依存関係逆転の原則 メリット ソースコードの依存は具像ではなく、 抽象に制限するべき 上位層が下位層に直接依存してはいけ ない 再帰的な依存な実装を避けれる 依存の注入がしやすい テストがしやすい [SOLID原則]
[SOLID原則] 適用前
[SOLID原則] 適用後
[SOLID原則] めちゃ良いことじゃん! 脳死で全部これ採用して作ろうぜ!!
[SOLID原則] めちゃ良いことじゃん! 脳死で全部これ採用して作ろうぜ!!
03 ク リ ー ン ア ー キ テ ク
チ ャ ! = 銀 の 弾 丸
Now in Android [クリーンアーキテクチャ != 銀の弾丸] 1.ドメイン層がデータ層に直接依存している 2.ドメイン層が任意(オプショナル)になっている クリーンアーキテクチャでは.. クリーンアーキテクチャに則ればデータ層がドメイン層のインターフェースに依存
する構造が推奨される クリーンアーキテクチャに則れば「なくてもいいドメイン層」は、設計の中心が存 在しない状態。 ドメイン層が最も中心にある必須の層。 これは全ての外部(UI層・データ層など)から独立していなければならない。 引用:https://github.com/android/nowinandroid/discussions/1273 引用:https://github.com/android/nowinandroid/blob/main/docs/ArchitectureLearningJourney.md
[クリーンアーキテクチャ != 銀の弾丸] クリーンアーキテクチャは カーゴカルト化している? ソフトウェア開発における「カーゴカルト」とは? プログラミングの経験が浅い人が、他の人のコードを理解せずにコピーしたり、 盲目的に設計手法を適用したりする行為
04 最 後 に
[最後に] 初学者が学ぶ上で気にすればいけないこと 経験の浅いプログラマーは、良いアドバイスと悪いアドバイス の区別がつかず、見本となるコードが悪いもので、真似すべき でないものだと見抜くことができない
[最後に] 初学者が学ぶ上で気にすればいけないこと 経験の浅いプログラマーは、良いアドバイスと悪いアドバイス の区別がつかず、見本となるコードが悪いもので、真似すべき でないものだと見抜くことができない 初学者こそ を突き詰めろ! Why
[最後に] 初学者が学ぶ上で気にすればいけないこと 経験の浅いプログラマーは、良いアドバイスと悪いアドバイス の区別がつかず、見本となるコードが悪いもので、真似すべき でないものだと見抜くことができない 初学者こそを 学ぶべき アーキテクチャ
あ り が と う ご ざ い ま し
た ! [ THANK YOU! ] x: @goretzka_Reo github: REOysd dacho/だっちょ