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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
190
VibeCodingからAgenticWorkflowへ
starfish719
0
950
高専、大学編入、そして未踏へ〜プロダクト開発とキャリアの歩み - Technical College, University Transfer, and On to “Mitou” / My Journey in Product Development and Career
pkmiya
0
110
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
660
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
3.9k
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
41
26k
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
引き算の組織 ― アウトカムとAIに全振りするために辞めたこと ― / Organization by Subtraction
hirokiyamamoto14
PRO
0
320
ALB ログから Trace を気合で繋げる技術
fohte
7
780
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
1.2k
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
4
2.3k
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.2k
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
6.2k
Ruling the World: When Life Gets Gamed
codingconduct
0
310
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
260
Designing for Timeless Needs
cassininazir
1
460
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
420
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Building Applications with DynamoDB
mza
96
7.2k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
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/だっちょ