手を動かしてわかるクリーンアーキテクチャ
副題: ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発
https://img.ips.co.jp/ij/23/1123101096/1123101096-520x.jpg
https://book.impress.co.jp/books/1123101096
hr.icon
概要
Robert C. Martin氏が提唱するソフトウェア設計パターン「クリーンアーキテクチャ」の概念に沿って、Webアプリケーションを構築するにはどうするのか、について実装コードとともに解説。
ソフトウェア設計に興味を持っている開発者の方、クリーンアーキテクチャとその実装方法を知りたい開発者の方におすすめの/一冊。
原題: Get Your Hands Dirty on Clean Architecture: Build 'clean' applications with code examples in Java
Tom Hombergs 著
サンプルリポジトリ: https://github.com/thombergs/buckpal
言語は Java (一部 Kotlin)だが、OOP なら何でも OK
FW は Spring Boot
メジャーどころで radish-miyazaki.icon が触ったことのない FW のひとつ
エッセンスだけそのまま学びつつ、サンプルコードは Go で置き換えながら読むことに
hr.icon
warning.icon 翻訳者による本書の考え方
サンプルコードでは、DDD における アプリケーションサービス が ドメインサービス に取り込まれた形になっている
ドメインサービス = ドメインの(横断的な)関心事を扱う
ドメインの関心事 = アプリケーションがないと仮定し、その状況下で業務として行えること
アプリケーションサービス = アプリケーションの関心事を扱う
アプリケーションの関心事 = アプリケーションが無いと行えないこと(e.g. 永続化)
本書は、「クリーンなアーキテクチャを実現するにはどうするか」に主眼を置いているが、アプリケーションのコア内の境界(ドメイン層と アプリケーション層)に関してはそこまで厳格に区別していない
そのため、ドメインサービスは 受信ポート を実装し、内部で 送信ポート を扱うようにしている
つまり、「ドメイン層はアプリケーション層に依存してはならない」というルールを遵守していない
しかし、サンプルコード程度の規模だと、区別することによるコストのほうが大きくなるため区別していない
hr.icon
セクション
1. 保守容易性
2. 従来のレイヤードアーキテクチャの問題点
3. 依存関係の逆転
4. パッケージ構成に関する戦略
5. ユースケースの実装
9. 境界を超える際のモデルの変換
12. アーキテクチャ内の境界の維持
13. 複数の境界づけられたコンテキストの管理
#Clean_Architecture #読書メモ #読書中