ソフトウェアアーキテクチャとは? 3つの定義を紹介
島田氏は2009年に株式会社えにしテックを設立。2011年からは一般社団法人日本Rubyの会の理事を務めている。島田氏が翻訳に携わった書籍には、『進化的アーキテクチャ』『ソフトウェアアーキテクチャハードパーツ』、『ソフトウェアアーキテクチャの基礎』『Design It!』(いずれもオライリージャパン)などがある。
『進化的アーキテクチャ』の出版は2018年であった。当時、ソフトウェアアーキテクチャは通好みのテーマであり、長期にわたってじわりと読まれるジャンルであると考えられていた。しかし、その後の技術トレンドの変遷の波にのり、モノリスからマイクロサービスへの移行に関する内容が多くの反響を呼んだ。『ソフトウェアアーキテクチャの基礎』は、ITエンジニア本大賞2023の最終選考に残るなど、大きな反響を得ている。島田氏は「現在国内において、ソフトウェアアーキテクチャに対する興味関心というのが非常に高まっていることを強く感じています」と語り、ソフトウェアアーキテクチャとは何かの説明を始めた。
ソフトウェアアーキテクチャについては、全ての人が合意する厳密な定義は存在しない。しかし、島田氏が翻訳した書籍を通じて、異なる著者間でもソフトウェアアーキテクチャに関する根底に共通する考え方が存在することが分かるという。島田氏は、ソフトウェアアーキテクチャの定義を3つ示した。1つは、ソフトウェアアーキテクチャは社会的構築物であること。2つ目は、品質要求を満たすための設計であること。そして3つ目は、システムの構成に関する設計であることだ。
島田氏は、ソフトウェアアーキテクチャが社会的構築物とされる理由について、マーティン・ファウラー氏の2003年のエッセイ「Who Needs an Architect?」を引用して説明した。このエッセイは、現代のソフトウェアアーキテクチャを再考する上での出発点となっている。このエッセイの中で、デザインパターンの著者ラルフ・ジョンソン氏は、アーキテクチャはソフトウェア制作に関わる集団が重要と判断した結果に基づいて構築されると述べ、これを社会的構築物と定義している。この視点は『Design It!』や『ソフトウェアアーキテクチャの基礎』などの書籍にも見受けられる。
ソフトウェアアーキテクチャの2つ目の定義として、品質要求を満たすための設計がある。品質要求については、IPAが出した「つながる世界のソフトウェア品質ガイド」が参考になる。この中で紹介されている国際規格SQuaREは、ソフトウェアの品質を製品品質と利用時の品質で分類している。ソフトウェアアーキテクチャにおいて自分たちのシステムに必要なものを選定し、システムに組み込んで品質を確保することが目的である。プロセスとしては、ソフトウェアの開発段階で求められる品質要求を明らかにし、それをシステムに組み込んで品質が満たされているかを検証することが重要である。
3つ目の定義として、システムの構成に関する設計がある。この点についても、マーティン・ファウラーの「Who Needs an Architect?」からラルフ・ジョンソンのアーキテクチャの定義を参照すると、「アーキテクチャは社会的構築物であり、成功するソフトウェアプロジェクトでは専門家や開発者がシステム設計についての共通の理解を持っている」とされる。ジョンソンはアーキテクチャを、システムがどのようにコンポーネントに分割され、コンポーネントがインターフェースを介してどのように対話するかの理解と定義している。このコンポーネントの分割がソフトウェアアーキテクチャにおいて重要な要素であると述べている。