クリーンアーキテクチャ
https://gyazo.com/4f36e7d1becfd5d8577b8bf75bf6334d
Clean Architecture 達人に学ぶソフトウェアの構造と設計
著者のブログ記事
https://gyazo.com/d96c8d970d882861e2dabc3c1493c473
目次
第1部 イントロダクション
第1章 設計とアーキテクチャ
第2章 2つの価値のお話
第2部 構成要素から始めよ:プログラミングパラダイム
第3章 パラダイムの概要
第4章 構造化プログラミング
第5章 オブジェクト指向プログラミング
第6章 関数型プログラミング
第3部 設計の原則
第7章 SRP: 単一責任の原則
第8章 OCP: オープン・クローズドの原則
第9章 LSP: リスコフの置換原則
第10章 ISP: インターフェイス分離の原則
第11章 DIP: 依存関係逆転の原則
第4部 コンポーネントの原則
第12章 コンポーネント
第13章 コンポーネントの凝集性
第14章 コンポーネントの結合
第5部 アーキテクチャ
第15章 アーキテクチャとは?
第16章 独立性
第17章 バウンダリー: 境界線を引く
第18章 境界の解剖学
第19章 方針とレベル
第20章 ビジネスルール
第21章 叫ぶアーキテクチャ
第22章 クリーンアーキテクチャ
第23章 プレゼンターとHumble Object
第24章 部分的な境界
第25章 レイヤーと境界
第26章 メインコンポーネント
第27章 サービス: あらゆる存在
第28章 テスト境界
第29章 クリーン組み込みアーキテクチャ
第6部 詳細
第30章 データベースは詳細
第31章 ウェブは詳細
第32章 フレームワークは詳細
第33章 事例: 動画販売サイト
第34章 書き残したこと
第7部 付録
付録Aアーキテクチャ考古学
書籍中では「変わりにくいものに依存する設計」を推奨している。
そのための手段としてDIPという考え方があるので、必要に応じて使う。
「変わりやすいものはどんなものか?」についてひたすら考察している。
p.151
ソフトウェアには2種類の価値がある。「振る舞いの価値」と「構造の価値」だ。そして、後者のほうが価値が大きい。なぜなら、それがソフトウェアをソフトにする価値だからだ。
あらゆるソフトウェアシステムは大きく2つの要素に分割できる。「方針」と「詳細」だ。方針の要素はビジネスのすべてのルールや手順を含んでいる。方針には、システムの本当の価値がある。
Entityについて
p.190
最重要ビジネスルールと最重要ビジネスデータは密接に結びついているため、オブジェクトの有力な候補になる。こうしたオブジェクトのことをエンティティと呼びたい* (* これはIvar Jacobsonが名付けた概念である。参考:『オブジェクト指向ソフトウェア工学 OOSE』)
依存関係逆転の原則 (DIP) について(どういう範囲で適用させるべきか)
依存関係逆転の原則(DIP)を考えるときにはOSやプラットフォームまわりは気にしないことが多い。変化しないとみなして構わないので、こうした具象への依存は許容することにしよう。
依存したくないのは、システム内の変化しやすい具象要素だ。開発中のモジュールや、頻繁に変更され続けているモジュールがその対象になる。
p.221
ソフトウェアアーキテクトは未来に目を向けなければいけない。頭を使って推測するべきだ。コストを評価し、アーキテクチャの境界がどこにあるのか、完全に実装する必要があるのか、部分的に実装すべきなのか、無視したほうがいいのかを判断する必要がある。
方針と詳細
抽象度と安定度の関係