「Clean Architecture 達人に学ぶソフトウェアの構造と設計」を読んだ

過去に一度読んでいたけれど、当時あまり Clean Architecture を知らなかったのでいまいちピンと来ていませんでした。

今回改めて読んで、割と腹落ちする部分が多かったので軽くメモ。

そもそも

Clean Architecture はその名の通りアーキテクトの考え方のひとつですが、それまでに存在していたいくつかのアーキテクチャに関するアイデアを統合したものです。

  • フレームワーク非依存
  • テスト可能
  • UI 非依存
  • データベース非依存
  • 外部エージェント非依存

という特性を持っています。

ソフトウェアをレイヤーにわけて関心の分離を実現しています。

SOLID 原則

Clean Architecture の依存性のルールを実現するうえで、SOLID 原則と呼ばれるいくつかの原則について理解をしておく必要があります。

  • S:SRP、単一責任の原則
  • O:OCP、解放閉鎖の原則
  • L:LSP、リスコフの置換原則
  • I:ISP、インタフェース分離の原則
  • D:DIP、依存性逆転の原則

いずれの原則も、ソフトウェアのそれぞれのパーツ自身の責務やそれぞれの関係性を適切に保つためにはどうするとよいか?を考えるための原則です。

DIP がいままでピンと来てなかったのですが、今回読み直してようやくある程度理解しました。
(要するに今まで、Clean Architecture の「あの図」を一切理解できていなかったということにもなりますが…。)

全体を読んで把握したこと

  • Clean Architecture を含め、システムのアーキテクチャの目的は「関心の分離」
    • 関心の分離ができていないと、独立した開発などが不可能になるなど不都合が多い
  • ユーザやシステムとのインタフェースとビジネスルールのレイヤーを分離する
    • ビジネスルールがユーザやシステムに依存することはない
  • そのアプリケーションにおける最重要ビジネスルールを適切に理解した上でモデリングをする必要がある

感想的なやつ

抽象的な説明と具体例とを行き来しながら読むことができたので、自分の体験も含めてうまく理解しながら読みすすめることができました。
この記事はメモ程度に書いたので内容が薄いというか、もうちょっとちゃんと書きたいけれど、まだ表現しきれないことが多い…。コードと向かい合いながらより理解を深めていきます。