ryota21silvaの技術ブログ

Funna(ふんな)の技術ブログ

これまで学んだ技術の備忘録。未来の自分が救われることを信じて

【書籍】クリーンアーキテクチャのあのドーナツ状の図は、本書で伝えたいことの詳細・手段にすぎなかった

はじめに

エンジニアの方であれば、「Clean Architecture 達人に学ぶソフトウェアの構造と設計」という有名な本をご存知なのではないかと思います。

私は過去に一度この本を読んだことがありましたが、正直内容をあまり覚えていなかったのでもう一度読み直したいと考えてました。
そんな中、所属する会社では輪読会が活発に行われており、今年の2月頃から本書を輪読会のテーマとして読み直すことができました。 tatsu-zine.com

本書を読んだ結果、「Clean Architecture」とは「システムを簡単に変更できる設計の原則」を指しているのであって、(何となくは知ってたけど)あの有名なドーナツ状(同心円状)の図は書籍で伝えたいことの詳細・手段にすぎないことを理解しました。

ソフトウェアで作る目的・ソフトウェアアーキテクチャの価値

本書ではシステムをソフトウェアで作る目的は「振る舞いを簡単に変更できるようにするため」と述べられています。
ステークホルダーが振る舞いを変更したいと思えば簡単に変更できなればいけません。

そしてそのような目的を達成するためにはソフトウェアアーキテクチャ(設計)が重要となります。
ソフトウェアアーキテクチャは変更容易性・将来の拡張性といった価値をもたらしてくれるものであり、柔軟なアーキテクチャを選択できればシステムの開発・デプロイ・運用・保守が容易となり、振る舞いを簡単に変更することができます。

本書で重要なこと

実際に本書を読めば分かりますが、「Clean Architecture」はクリーンなアーキテクチャを実現するための原則(Why, What)をまとめたものであり、ドーナツ状の図はクリーンなアーキテクチャを実現するための方法論(How)の1つでしかありません。

書籍の前半では「クリーンなコードを書く」ためのSOLID原則について解説されており、この原則の理解が本書を理解する上で一番重要なのではないかと感じました。
なぜなら、これより後の章で続く「クリーンなコンポーネントを作る・組み合わせる」「クリーンなアーキテクチャを設計する」といった更に上位レベルのアーキテクチャにおいても同じ観点を持った原則が登場しており、これらの理解がクリーンなアーキテクチャを実現するために重要となってくるからです。

ドーナツ状の図はいつ登場するの?

ドーナツ状の図は第22章で数ページしか触れられておらず、これより前の章で説明されたアーキテクチャの重要な原則を実現するための方法論として解説されています。

最後に

本書ではソフトウェアを方針(重要)と詳細(重要ではない)の2つの要素に分けられると説明がありました。
このソフトウェアの2つの要素に当てはめると、あの有名なドーナツ状の図は書籍で伝えたいことの詳細にすぎないことが分かりました。

「ウチのプロダクトはクリーンアーキテクチャで作っています!」「クリーンアーキテクチャはやめておけ」みたいな話では、ドーナツ状図を指しているケースが多いと思います。
もちろんクリーンアーキテクチャ = ドーナツ状の図ではないことを理解した上で便宜的にその名称を使っているケースもあると思いますが、本書の本質的な内容を理解した上で図の話をしなければ誤解が生まれてしまうなと思いました。