SlideShare a Scribd company logo
1 of 12
Download to read offline
Clean
Architecture
第Ⅴ部
アーキテクチャ Part6
前回まとめ
- 部分的な境界
- 本格的なアーキテクチャの境界はコストが高いので、部分的な境界で解決する
1. 最後のステップを省略する
2. Strategyパターン
3. Facadeパターン
- 代理として特定の状況では適切だが、境界がうまく設定できなければ劣化する
- レイヤーと境界
第Ⅴ部:アーキテクチャ Part6
第1章:レイヤーと境界
- 「UI」「ビジネスルール」「データベース」
3つで構成されているとわかりやすい
- だが、ほとんどのシステムはこれよりもコンポーネントの数が多い
- Hunt the Wumpusをリファクタする
第1章:Hunt the Wumpus
第1章:Hunt the Wumpus
第1章:Hunt the Wumpus
第1章:流れを横切る
第1章:流れを分割する
第1章:流れを分割する
第1章:つまり
- アーキテクチャの境界があらゆるところに存在する
- 境界を完全に構築しようとすると、コストが高くつくことを認識する必要がある
- 同時に境界を無視すると完全なテストスイートがあったとしても、レイヤーを追加するコストが非
常に高くなる
- アーキテクトは何をすべきか
- 頭のいい人たちが抽象化が必要になることを予測してはいけない (YAGNIの原則)と提唱している
- オーバーエンジニアリングはアンダーエンジニアリングよりも悪質である
- しかし、境界が必要なとこになかったら、境界を追加するコストやリスクが高くなる
- つまりアーキテクトは頭を使って未来を推測しなければならない
- それは1回限りの決定ではなく、「常に」見張る必要がある
- 無視するコストよりも実装するコストが低くなる変曲点で、境界を実装する
- レイヤーと境界
- ほとんどのシステムでは「 UI」「ビジネスルール」「データベース」よりもコンポーネントが多く存在する
- アーキテクチャの境界があらゆるところに存在する
- 境界を完全に構築しようとすると、コストが高くつくことを認識する必要がある
- オーバーエンジニアリングはアンダーエンジニアリングよりも悪質であるが、境界が必要なとこにな
かったら、境界を追加するコストやリスクが高くなる
- 無視するコストよりも実装するコストが低くなる変曲点で、境界を実装できるように「常に見張る」必要
がある
第Ⅴ部:Part6 まとめ

More Related Content

More from tak

可読性について リーダブルコード part1(表面上の改善)
可読性について リーダブルコード part1(表面上の改善)可読性について リーダブルコード part1(表面上の改善)
可読性について リーダブルコード part1(表面上の改善)tak
 
DiI/DIコンテナを一から学んでみた
DiI/DIコンテナを一から学んでみたDiI/DIコンテナを一から学んでみた
DiI/DIコンテナを一から学んでみたtak
 
TypeScriptのdecoratorについて
TypeScriptのdecoratorについてTypeScriptのdecoratorについて
TypeScriptのdecoratorについてtak
 
Rust + web assemblyやってみた
Rust + web assemblyやってみたRust + web assemblyやってみた
Rust + web assemblyやってみたtak
 
第ⅴ部:clean architecture アーキテクチャ Part5
第ⅴ部:clean architecture アーキテクチャ Part5第ⅴ部:clean architecture アーキテクチャ Part5
第ⅴ部:clean architecture アーキテクチャ Part5tak
 
第ⅴ部:clean architecture アーキテクチャ Part3
第ⅴ部:clean architecture アーキテクチャ Part3第ⅴ部:clean architecture アーキテクチャ Part3
第ⅴ部:clean architecture アーキテクチャ Part3tak
 
第ⅴ部:clean architecture アーキテクチャ Part2
第ⅴ部:clean architecture アーキテクチャ Part2第ⅴ部:clean architecture アーキテクチャ Part2
第ⅴ部:clean architecture アーキテクチャ Part2tak
 
第ⅳ部:Clean architecture コンポーネントの原則
第ⅳ部:Clean architecture コンポーネントの原則第ⅳ部:Clean architecture コンポーネントの原則
第ⅳ部:Clean architecture コンポーネントの原則tak
 
第ⅲ部:Clean architecture 設計の原則
第ⅲ部:Clean architecture 設計の原則第ⅲ部:Clean architecture 設計の原則
第ⅲ部:Clean architecture 設計の原則tak
 
第ⅱ部:Clean architecture 構成要素から始めよ
第ⅱ部:Clean architecture 構成要素から始めよ第ⅱ部:Clean architecture 構成要素から始めよ
第ⅱ部:Clean architecture 構成要素から始めよtak
 
第ⅰ部:Clean Architecture イントロダクション
第ⅰ部:Clean Architecture イントロダクション第ⅰ部:Clean Architecture イントロダクション
第ⅰ部:Clean Architecture イントロダクションtak
 

More from tak (11)

可読性について リーダブルコード part1(表面上の改善)
可読性について リーダブルコード part1(表面上の改善)可読性について リーダブルコード part1(表面上の改善)
可読性について リーダブルコード part1(表面上の改善)
 
DiI/DIコンテナを一から学んでみた
DiI/DIコンテナを一から学んでみたDiI/DIコンテナを一から学んでみた
DiI/DIコンテナを一から学んでみた
 
TypeScriptのdecoratorについて
TypeScriptのdecoratorについてTypeScriptのdecoratorについて
TypeScriptのdecoratorについて
 
Rust + web assemblyやってみた
Rust + web assemblyやってみたRust + web assemblyやってみた
Rust + web assemblyやってみた
 
第ⅴ部:clean architecture アーキテクチャ Part5
第ⅴ部:clean architecture アーキテクチャ Part5第ⅴ部:clean architecture アーキテクチャ Part5
第ⅴ部:clean architecture アーキテクチャ Part5
 
第ⅴ部:clean architecture アーキテクチャ Part3
第ⅴ部:clean architecture アーキテクチャ Part3第ⅴ部:clean architecture アーキテクチャ Part3
第ⅴ部:clean architecture アーキテクチャ Part3
 
第ⅴ部:clean architecture アーキテクチャ Part2
第ⅴ部:clean architecture アーキテクチャ Part2第ⅴ部:clean architecture アーキテクチャ Part2
第ⅴ部:clean architecture アーキテクチャ Part2
 
第ⅳ部:Clean architecture コンポーネントの原則
第ⅳ部:Clean architecture コンポーネントの原則第ⅳ部:Clean architecture コンポーネントの原則
第ⅳ部:Clean architecture コンポーネントの原則
 
第ⅲ部:Clean architecture 設計の原則
第ⅲ部:Clean architecture 設計の原則第ⅲ部:Clean architecture 設計の原則
第ⅲ部:Clean architecture 設計の原則
 
第ⅱ部:Clean architecture 構成要素から始めよ
第ⅱ部:Clean architecture 構成要素から始めよ第ⅱ部:Clean architecture 構成要素から始めよ
第ⅱ部:Clean architecture 構成要素から始めよ
 
第ⅰ部:Clean Architecture イントロダクション
第ⅰ部:Clean Architecture イントロダクション第ⅰ部:Clean Architecture イントロダクション
第ⅰ部:Clean Architecture イントロダクション
 

第ⅴ部:clean architecture アーキテクチャ Part6