TL;DR
- Robert C. Martin が提唱したクリーンアーキテクチャの考え方に沿って、Web アプリケーションをどう作るかを実装コードとともに解説する本である。
- 副題は「ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発」。原題は「Get Your Hands Dirty on Clean Architecture: Build ‘clean’ applications with code examples in Java」。
対象読者
ソフトウェア設計に興味がある開発者や、クリーンアーキテクチャとその実装方法を知りたい開発者に向けた本である。
サンプルコードは buckpal で公開されている。言語は Java(一部 Kotlin)、フレームワークは Spring Boot だが、オブジェクト指向の言語であれば考え方はそのまま使える。
読むときの注意として、翻訳者によると、本書のサンプルコードではドメイン駆動設計でいうアプリケーションサービスがドメインサービスに取り込まれている。本書は「クリーンなアーキテクチャをどう実現するか」に主眼を置いており、アプリケーションのコアの中の境界(ドメイン層とアプリケーション層)はそこまで厳格に区別していない。そのため、ドメインサービスが受信ポートを実装し、内部で送信ポートを扱う。これは「ドメイン層はアプリケーション層に依存してはならない」というルールを守っていないが、サンプルコード程度の規模では区別するコストのほうが大きいため、あえて区別していない。
目次
- 保守容易性
- 従来の多層アーキテクチャの何が問題なのか?
- 依存関係の逆転
- パッケージ構成に関する戦略
- ユースケースの実装
- ドメインモデルの実装
- ユースケースの概要
- 入力値の妥当性チェック
- コンストラクタの活用
感想
Spring Boot は、メジャーなフレームワークの中で自分が触ったことのない数少ないものの 1 つである。そこで、エッセンスはそのまま学びつつ、サンプルコードを Go に置き換えながら読むことにした。