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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
260
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
530
継続モナドとリアクティブプログラミング
yukikurage
3
610
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
140
共通化で考えるべきは、実装より公開する型だった
codeegg
0
250
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
510
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
140
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
870
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
400
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
180
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.4k
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
140
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
1
430
The World Runs on Bad Software
bkeepers
PRO
72
12k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
220
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How GitHub (no longer) Works
holman
316
150k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
830
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
220
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
340
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
310
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
330
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
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/だっちょ