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
【オンライン】Clean Architecture 達人に学ぶソフトウェアの構造と設計 輪読会...
Search
masyus_work
December 20, 2020
Programming
160
0
Share
【オンライン】Clean Architecture 達人に学ぶソフトウェアの構造と設計 輪読会 #16
masyus_work
December 20, 2020
More Decks by masyus_work
See All by masyus_work
ふりかえりとチームクレドが僕らにもたらしてくれたもの
masyus
2
340
Clean Architecture 達人に学ぶソフトウェアの 構造と設計_第10回
masyus
0
260
【オンライン】Clean Architecture 達人に学ぶソフトウェアの構造と設計 輪読会 #1
masyus
0
200
テスト駆動開発 輪読会 Vol.5
masyus
0
190
Chrome拡張で便利ツール作ってたら、思いがけず社内ツールを作ることになった話
masyus
0
170
開発速度UP & エンジニアポートフォリオ作成を同時実現する為の取り組み
masyus
0
200
メール文面確認テストを作りながら、テストについて改めて考えてみた
masyus
0
210
Other Decks in Programming
See All in Programming
Explore CoroutineScope
tomoeng11
0
160
ソフトウェア設計の結合バランス #phperkaigi
kajitack
0
490
20260514_its_the_context_window_stupid.pdf
heita
0
350
Kubernetesを使わない環境にもCloud Nativeなデプロイを実現する / Enabling Cloud Native deployments without the complexity of Kubernetes
linyows
2
290
JOAI2026 1st solution - heron0519 -
heron0519
0
180
mruby on C#: From VM Implementation to Game Scripting (RubyKaigi 2026)
hadashia
2
1.6k
実用!Hono RPC2026
yodaka
2
300
Firefoxにコントリビューションして得られた学び
ken7253
2
150
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
2.8k
My daily life on Ruby
a_matsuda
3
180
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
360
10 Tips of AWS ~Gen AI on AWS~
licux
5
540
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
110
Agile that works and the tools we love
rasmusluckow
331
21k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
290
The untapped power of vector embeddings
frankvandijk
2
1.7k
A Soul's Torment
seathinner
6
2.8k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
160
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
240
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
110
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
Transcript
Clean Architecture 達人に学ぶソフトウェアの 構造と設計【輪読会】 第16回:第33章~第34章 2020/12/23 @masyus_work
第33章 事例: 動画販売サイト
第33章 事例:動画販売サイト 1. アーキテクチャを決めるための第一 歩は - アクターとユースケースを見 つけること 2. 抽象ユースケース
- 図33-1点線部。共通化の道 を探るのが得策
第33章 事例:動画販売サイト 1. 抽象ユースケース - 図33-2赤枠 2. ただし、デプロイ単位は様々な切り 口を維持しておく -
将来的にデプロイ方法を柔軟 に変更できて良い 【↑分割方針】 - 単一責任の原則(SRP)に基づくアクターによる分割 - 依存性のルールによる分割
第34章 書き残したこと 設計やコーディングに関する そのほかのアプローチ (クリーンアーキテクチャ以外)
第34章 書き残したこと 1. レイヤードアーキテクチャ - 水平方向 - ソフトウェア規模が大きくなると、3つの パッケージングに分けるのでは手に負 えなくなる
- ビジネスドメインに関しては何も叫ばな い
第34章 書き残したこと 2. 機能によるパッケージング - 垂直方向 - パッケージングは1つ - ビジネスドメインに関して叫べる
第34章 書き残したこと 3. ポートとアダプター - ビジネス(ドメイン)に関するコードを技術的な 実装から切り離して独立させること
第34章 書き残したこと 4. コンポーネントによるパッケージング Controllerがリポジトリに直接アクセスしちゃった (つまりルールを無視して実装してしまった) - 何らかのガイドラインが必要になる - →
コンポーネントによるパッケージング
第34章 書き残したこと 4. コンポーネントによるパッケージング - 粒度の粗いコンポーネントに関連する全て の責務をひとつのJavaパッケージにまとめ ることを目指す - 図34-5のようなケースの場合、注文に関す
るコードを書きたければ OrdersComponentだけを見ればOKなス タンスにしてしまうという方策
第34章 書き残したこと 余談:CQRS(コマンドクエリ責務分離)とは - データの更新とデータの読み取りを切り離 すパターン - = Command Query
Responsibility Segregation
第34章 書き残したこと 5. 悪魔は実装の詳細に宿る 6. 組織化かカプセル化か - publicの乱用 → パッケージは事実上無い
に等しくなってしまう - → 今まで解説した4つのアーキテクチャ手 法が意味なくなってしまう
第34章 書き残したこと 適切にアクセス範囲を絞り込みましょう
第34章 書き残したこと 7. そのほかの分割方法 - Javaの場合 - OSGi - Java
9 モジュールシステム - それぞれ別のソースコードツリーに分割する - 例 - ビジネスやドメイン用のソースコード - ウェブ用のソースコード - データ永続化用のソースコード
第34章 書き残したこと まとめ - いくらうまい設計をしても、その実装方法の複雑さを考慮しなければ、 あっという間に設計が崩れてしまう - チームの規模やメンバーのスキル、ソリューションの複雑さ、時間と予 算の制約を考慮する必要あり
輪読会 第16回 Fin...