ニュース
» 2020年03月18日 08時00分 公開

ソフトウェアアーキテクチャの集大成「Clean Architecture」とは

5回にわたって各ソフトウェアアーキテクチャの特徴について解説した。結局、テスタビリティ―のあるアーキテクチャはどれなのか。連載最終回となる本稿で、テストに強いアーキテクチャについて説明する。

[石黒 邦宏,デジタルハーツ]

 ソフトウェア開発においてさまざまなアーキテクチャが提案されている中で、テストに強いアーキテクチャを紹介する本連載ですが、第5回の本稿では、「Clean Architecture」(クリーンアーキテクチャ)について解説します。

著者紹介:石黒 邦宏

デジタル・マジック・ラボでインターネット経路制御運用に関わり、オープンソースウェアで経路制御を実現する「GNU Zebra」を開発。1999年IP Infusionを共同設立し、CTOに就任。2009年Access CTO、2015年アプリックス CTOを経て、2018年デジタルハーツホールディングスCTOに就任。

「Clean Architecture」とは?

 Clean Architectureはロバート・C・マーティン氏が提唱したアーキテクチャです。マーティン氏は「アンクルボブ」という通称でも知られている著名なエンジニアで、「Manifesto for Agile Software Development」(アジャイルソフトウェア開発宣言)の著者の一人でもあります。また、その他数々の著作でも知られており、現在、多くの人から尊敬されているエンジニアの一人といえるでしょう。

 Clean Architectureが書籍で発表されたのは2017年9月。そのため比較的新しいアーキテクチャだと思われがちですが、最初にマーティン氏がブログ記事でClean Architectureに関する記事を書いたのは2012年8月であり、実は意外と古い概念です。

 2012年当時は、「MVC」と「MVP」の後継にあたるアーキテクチャとして「Hexagonal Architecture」(ヘキサゴナルアーキテクチャ)や「OnionArchitecture」(オニオンアーキテクチャ)などが多数提唱されていました。マーティン氏は、「これらのアーキテクチャには共通点があるのではないか。その共通点を1つにまとめれば汎用(はんよう)的なアーキテクチャができるのではないか」と考え、Clean Architectureの構想を思い描きました。そういう意味では、Clean Architectureは、MVCから始まったソフトウェアアーキテクチャの集大成の一つといえるでしょう。

 マーティン氏のユニークな点は、Clean Architectureの議論に入る前に、まずは“アーキテクチャ”自体の存在意義を明確に定義したことです。

「ソフトウェアアーキテクチャの目的は、求められるシステムを構築・保守するために必要な人材を最小限に抑えることである」

「必要な労力が少なく、システムのライフタイム全体で低く保たれているならば、その設計は優れている。逆に、リリースごとに労力が増えるなら、その設計は優れていない。ね、簡単でしょ」

出典: Robert C.Martin,角 征典,高木 正弘. Clean Architecture 達人に学ぶソフトウェアの構造と設計 (Japanese Edition)

 「コスト・労力を最小限に抑える=アーキテクチャの存在意義」マーティン氏は言い切っています。これ以上明確な定義はないのではないかというくらいはっきりしていますね。

 さらに、Clean Architectureには明確なルールが決められています。アーキテクチャにまつわる議論では、しばしば形式主義に陥り本質を見失いがちになりますが、Clean Architectureは構成の是非よりも原則やルールを定義し、そのルールにのっとってさまざまな議論ができるようになっています。

 Clean Architectureで提唱されている主なルールは以下の5つになります(表1)。

表1

Copyright © ITmedia, Inc. All Rights Reserved.

会員登録(無料)

ホワイトペーパーや技術資料、導入事例など、IT導入の課題解決に役立つ資料を簡単に入手できます。