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
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
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
360
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
490
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
170
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.5k
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.7k
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
480
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
280
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
3.3k
Build-to-own AI: Agentic Development for Humans
inesmontani
PRO
0
160
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
380
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
190
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
200
Featured
See All Featured
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
750
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
380
Testing 201, or: Great Expectations
jmmastey
46
8.2k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
190
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
500
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Making Projects Easy
brettharned
120
6.7k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
420
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
470
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/だっちょ