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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
350
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
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
500
Talking to terminals (and how they talk back) (KotlinConf 2026)
jakewharton
PRO
1
160
Inside Stream API
skrb
1
450
[KCD Czech] eBPF Meets the GPU: Future of AI Infra Observability
doniacld
0
130
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
420
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
220
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
500
関係性から理解する"同一性"の型用語たち
pvcresin
2
620
新規プロダクトを高速で生み出すハーネスエンジニアリング
seanchas116
18
7.6k
Inspired By RubyKaigi (EN)
atzzcokek
0
460
Moments When Things Go Wrong
aurimas
3
130
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
160
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
130
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Become a Pro
speakerdeck
PRO
31
6k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
240
Context Engineering - Making Every Token Count
addyosmani
9
930
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
470
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Being A Developer After 40
akosma
91
590k
RailsConf 2023
tenderlove
30
1.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
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...