https://blog.p1ass.com/posts/fundamentals-of-software-architecture/
こんにちは、 @p1ass です。 タイトルの通り、『ソフトウェアアーキテクチャの基礎 エンジニアリングに基づく体系的アプローチ 』を読みました。
本書はソフトウェアアーキテクチャに関する内容を網羅的にまとめたもので、アーキテクトのようなポジションを目指す人にとっての教科書的な存在です。 自分の今の興味関心にドンピシャの内容で、書籍の発売後にすぐ読み切ってしまいました。
この記事では、本書の感想を書こうと思います。 現在購入を検討している方の参考になれば幸いです。
本書における最も重要なメッセージは、ソフトウェアアーキテクチャの第一原則である 「ソフトウェアアーキテクチャはトレードオフがすべてだ。」 でしょう。
私はどうしてもアーキテクチャに対して「正解」を求めてしまう傾向にあります。 「ベストプラクティスやそれに準ずるものに従っていれば OK」という状況を目指したいと考えてしまいます。 しかし、そんな期待を持って本書を手に取っても、その願いが叶うことはありません。
本書では、全てのソフトウェアアーキテクチャにはトレードオフが存在することを前提に話を進めています。
例えば、アーキテクチャ特性(-ility)の章では、どのアーキテクチャ特性が、対象のプロダクトにとって最も重要なものであるかを特定し、どれが重要でないかを理解することが大事だとされています。 全てのアーキテクチャ特性を満たそうとしたアーキテクチャは、あらゆるビジネス上の問題を解決してくれるかもしれない。しかし、そのようなアーキテクチャは扱いにくい設計となり、うまく機能することはないと主張しているのです。
銀の弾丸を求めている人には辛い現実ですが、改めてトレードオフの現実に向き合うのにはピッタリです。 全てのソフトウェアアーキテクチャにはトレードオフが存在するという前提に立つと、トレードオフを全面に出した議論ができるようになります。
例えば、考えたアーキテクチャが解決することだけでなく、必ず存在するトレードオフ(つまりデメリットになるようなもの)が何なのかと考えることができるようになるでしょう。
他にも、そのトレードオフに対し、「妥当性を持ってアーキテクチャを決定するのに必要な材料は何か?」といったことも考えられるようになるはずです。
このように、全ての判断が「場合による」状況下での物事の考え方やプラクティスが紹介されているので、特定の人だけでなくソフトウェアアーキテクチャを考える多くの人にとって役に立つ本だと感じました。
本書では、様々なアーキテクチャスタイルについて、それぞれのトレードオフを言及しながら紹介されています。
具体的には、次の 8 つのアーキテクチャについて紹介されています。