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
初学者がクリーンアーキテクチャに向きあってみようとした話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
dacho/だっちょ
June 08, 2025
Programming
190
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
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
240
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
100
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
ふつうのFeature Flag実践入門
irof
7
4k
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
140
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
160
Creating Composable Callables in Contemporary C++
rollbear
0
130
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
200
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
2k
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
180
Claspは野良GASの夢をみるか
takter00
0
190
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
110
Featured
See All Featured
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
30 Presentation Tips
portentint
PRO
1
320
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
590
Being A Developer After 40
akosma
91
590k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
240
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
Navigating Team Friction
lara
192
16k
Leo the Paperboy
mayatellez
7
1.8k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
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/だっちょ