書籍
この本 を読んだ所感をまとめる。
あくまで個人の所感なので、見当違いな可能性もあるかと。
この書籍の伝えたいことの理解
アプリケーション境界をどのように定め、依存関係をコントロールするかの方針を教えてくれる本。
フレームワークの選定とかの話はささいな詳細として取り上げられている。
クリーンアーキテクチャを採用する利点
- テストしやすい
- UI/DB/フレームワークを変更しやすい
- ロジックがある個所が明確になる
- 依存性が明確になる
気になったところ
ビジネスルールとアプリケーションルールの違いは?
ビジネスルール
アプリケーションがなくても存在するルールのこと。
例)
アプリケーションルール
アプリケーションがあるからこそ出現するルールのこと。
例)Web から入力された値のバリデーション
いつ境界を引くべきなのか?
詳細についての決定を遅らせることの重要性を力説している。
フレームワークの選定、DBの選定。
一方で、重要なものはいつ決定すべきか?
境界を後から追加するのはコストが高い。
書籍には明記されていて、まずは未来を見据えてシンプルに作り、その後は見張り続けることが重要。
境界を作らないことによるコストと境界を作るコストを比較し続ける。
クリーンアーキテクチャを厳密に守るべきか?
クリーンアーキテクチャを採用した場合でも、すべてを厳密に守る必要はない。
実際、書籍にも「部分的な境界」を引くための例が書かれている。
なので、厳密に守るうえでのコストと守らないうえでのコストを対比させて判断すればよい。
ただし、依存関係を守らないコードが生まれやすくなる個所が発生することになるので、当時その判断をしたこと自体を明確にし、将来的にも再度対比できるようにしておくべき。
さいごに
クリーンアーキテクチャの思想の理解をするのにとても良い本。
アプリケーションの「設計」を考える上で迷ったらこの本を読んで、原理原則を整理できると思う。