以下の本を読んでの感想です。
僕はまだこの本の内容をちゃんと理解しきれていないと思います。なので、今回は「感想」という形にとどめておき、将来再読した際に改めてちゃんとした考察を書きたいと思います。
感想(現時点での理解)
この本を読んでいて思ったのは、クリーン・アーキテクチャというのは決まったある一つの設計の型ではないのかな、ということです。決まった型というよりも、クリーンな設計をする上で考慮すべき原理・原則について説明されているのだと思いました。つまり、「今回のプロジェクトはクリーン・アーキテクチャを採用しよう」ということになっても、人によってその設計は変わってくるのではないかと思います。
ネットでクリーン・アーキテクチャについて調べると、以下の同心円の図が示され、その型に乗っ取った設計がクリーン・アーキテクチャであるように書かれている物が多いように思いました。
なんだか、クリーン・アーキテクチャが一つの型にはめ込まれているように思い、僕はなんだか違和感を感じていたのですが、この本の最後についてくる、訳者あとがきの以下の部分を読んでスッキリしました。
見よう見まねでアーキテクチャの「同心円」を実装している例が数多く見られる。だが、著者のように原理・原則に忠実であるためにも、まずは本書に目を通してもらいたい。そして、著者と対話しながら、自らのアーキテクチャをクリーンにしてもらえれば幸いだ。
この同心円の構成になっていればクリーン・アーキテクチャと呼べる、という単純なものではなく、この本にはクリーンなアーキテクチャを実現するための原理・原則がまとめられているのだと思います。
第21章 叫ぶアーキテクチャでは、以下のようにも書かれています。
では、あなたのアプリケーションのアーキテクチャは何と叫んでいるだろうか?最上位レベルのディレクトリ構造と最上位レベルのパッケージのソースファイルは、「ヘルスケアシステム」「会計システム」「在庫管理システム」と叫んでいるだろうか?それとも「Rails」「Spring/Hibernate」「ASP」と叫んでいるだろうか?
つまり、この本に書かれている原理・原則を理解し、そのプロジェクトにあった形で設計設計されたアーキテクチャが、クリーン・アーキテクチャと呼べるのだと思います。それは、結果的に内向きの依存関係を持った同心円の構成になるのだと思います。
僕はまだシステム開発の経験は浅く、ちゃんと理解できない部分が多々ありました。将来、システム開発への理解が深まってきたら改めて読み、もっとちゃんと理解したいな、と思わされる本でした。