読書メモ:Clean Architecture 達人に学ぶソフトウェアの構造と設計
ソフトウェアの上位概念である「アーキテクチャ」について学ぶために本書を購入しました。
『Clean Code』などの著書で有名な Robert C. Martin による『Clean Architecture』ということで、技術的な詳細を多く含む壮大な内容を期待していました。
実際には、コンピュータハードウェアやプログラミング言語などのソフトウェアの発展の歴史を背景に、著者自身の開発・保守の経験とエンジニアリングの知見を交えながら、「クリーンアーキテクチャ」に至るまでの道のりが比較的エッセイ風に描かれていました。
クリーンなアーキテクチャを保つためには、詳細な実装は円の外側(周辺部)に配置し、ビジネスルールなどのエンティティを中心に据える。そして、各層の境界はインターフェースを介して通信し、相互に依存しない構造とすることが重要であり、その結果として、クラス図やパッケージ図の構造が非循環な有向グラフ(DAG)になる、という点が本書のキーポイントだと感じました。
このように、アーキテクチャの導入によって依存性を減らし、変更に柔軟なソフトウェアを開発するという考え方は、一過性のブームでも流行の技術でもなく、「不変の原則」であることを、著者の長いキャリアを通して伝えているのだと思います。
流行のフレームワークや高機能なデータベース、最新のWeb技術に依存するのではなく、エンティティ(ビジネスルール)やユースケースをできる限り切り離し、インターフェースを介してアクセスすることで、再利用性が高く、保守しやすいソフトウェアが実現できるという点は非常に学びが多くありました。
近年はフレームワークに依存したアプリケーションも多いですが、本書は改めてアーキテクチャの重要性を考えさせられる一冊です。
最低限、クラス図やパッケージ図を読み解き、コードを想像できるスキルは必要ですが、ある程度経験を積んだエンジニアが読むと、まさに「目から鱗」の内容だと思います。