情報システム学会 メールマガジン 2011.5.25 No.06-02 [10]

連載 プロマネの現場から
第38回 美しいアーキテクチャとは何か

蒼海憲治(大手SI企業・金融系プロジェクトマネージャ)

 最近、折に触れて手に取っている本の一冊に、オライリー社の『ビューティフル・アーキテクチャ』(*1)があります。表題の通り、「美しいアーキテクチャ」・・ソフトウェア・アーキテクチャの美しさについて、19人のITアーキテクトが書いた小論集となっています。
 業務アプリケーションSEの一人としては、普段、良いアーキテクチャの恩恵を享受しながら、ややもすると、それを当り前のものだと受け取っています。その一方、機能拡張に大幅な変更工数が発生したり、性能が想定した通り出ない、というような困った事態になってから付け焼刃的にアーキテクチャにまで手を入れる改善を試みることにもなることしばしばです。そんな身としては、そもそもアーキテクチャが担うべき役割をふまえて、意図して作り込まれたアーキテクチャとアーキテクトの素晴らしさと重要性を再認識させられました。

 ところで、アーキテクチャの語源には、いくつかの説があるようです。
 ウィキペディアによると、共和政ローマ期に活動した建築家・建築理論家であったウィトルウィウス(紀元前80年/70年頃 - 紀元前15年以降)が著書『建築について De Architectura』の中で、古代ギリシャ語の「arkhitekton」(アルキテクトーン)を基にするarchitectus(アルキテクトゥス)というラテン語を使ったことが始まりであるといいます。この語は「architectura」(アルキテクトゥーラ)と変化し、これからおそらくはフランス語を経由し、英語の architecture(アーキテクチャ)になった、といいます。
 また、ONLINE ETYMOLOGY DICTIONARYで語源を辿ってみると、「arkhitekton」(アルキテクトーン)は、「arkhi-」(アーキ)と「tekton」(テクトン)に分かれます。各々が「第一の」「建築家」を意味します。さらに「arkhi-」(アーキ)の語源となった「arkhon」(アルコーン)を辿ると、根拠、根源、原因、はじまりを意味する「arkhe」(アルケー)に行きあたります。アーキテクチャの言葉の中に、西洋思想の大本であるアルケーが隠れていたことに感動するのでした(*2)。

 従来のさほど条件の厳しくないシステム開発であれば、アドホックで(その場限りの・その場しのぎの)形式化されていない工学的手法でも、構築できたのかもしれませんが、現在の大規模・複雑化するシステムにおいて、高性能・高信頼・高品質なソフトウェアシステムの開発は、全体をカバーする単一のアーキテクチャを開発・維持することが必須となっているのだと思います。部分的な場当たり的な開発やトータルの構想なく接ぎ木をして出来上るシステムは、テストや統合の失敗の真因となるからです。

 そもそもアーキテクチャとは何でしょうか?

≪「アーキテクトや開発者などすべてのステークホルダが、自分の関心事・利益がいかにして満たされるかを了解できるように設計された、一群の構造から成っている」≫
もの

≪「システムがステークホルダたちの関心事を満たすことの保証手段、そしてシステムの構想・計画・構築・保守時の複雑さへの対処手段になり得る」≫もの

という定義が紹介されています。

 現在のアーキテクチャに求められるものを具体的に挙げると、

 ・顧客の要求する機能が実現できる
 ・予定通りのスケジュールで安全に作り上げることができる
 ・正しく実行できる
 ・信頼できる
 ・安全である
 ・予算内で作ることができる
 ・必要な設計・開発メンバーを揃えることができる
 ・法律・コンプライアンスに準拠している
 ・保守コストが安い
 ・変更・改良しやすいこと
 ・拡張性に優れている

と多岐にわたります。

 ソフトウェアアーキテクトの関心事は、直接的には、システムの機能要件にはなく、いわゆる「非機能要件」にあります。この非機能要件は、トレードオフの関係にあるため、何を活かし、何に制約をつけるかを、整合性のある統一されたコンセプトにより決める必要があります。
 アーキテクチャ構築にあたって、アーキテクトが行う最初の仕事は、ステークホルダたちと一緒になって、システムの品質要件や制約について理解し、それらの優先順位づけを行うことにあります。

 また、ステークホルダたちの関心事は実にさまざまです。

 ・プロジェクト・オーナーは、プロジェクトが予定通りのQCDに収まるかに関心がある
 ・アーキテクト、設計者、開発者は、システムを構築できること、
  構築後は保守・変更・改良に関心がある
 ・プロジェクト・マネージャは、チームを組織し、計画・実施できるかに関心がある
 ・エンドユーザは、システムを使って自分の仕事ができることに関心がある
 ・営業は、非機能要件そのものと、それで実現されたシステムが、いかに競合製品・システムと差別化されているかに関心がある

 だから、機能要求だけに飛びつくと、機能要求を実現できても、変更可能性、保守性、拡張性などの非機能要件が十分に実現できません。逆に、非機能要件を充足させるために、後から機能要求に制約が加わりかねません。一方、機能要求を実現できるアーキテクチャは複数ありえます。

 また、良いアーキテクチャは、いくつかの共通する普遍的原理がある、といいます。

 ・1つのことは1箇所に
  重複は誤りにつながるために避けるべきもの。それぞれの「こと」は、単一の分解できない単位とし、他の「こと」とは独立させる。
  たとえば、階層構造によって、各層(レイヤ)がそれぞれ抽象化やドメインを担当することで、情報や動作を局所化させることができる。
 ・自動伝播
  「1つのことは1箇所に」を原則とした場合でも、効率化を考えると、一部のデータや動作が重複する場合がある。その際、一貫性・正しさを保つために、そのデータや動作の本来の存在個所から自動的に伝播されるようにする。
 ・アーキテクチャには構築を含むこと
  アーキテクチャは実行時システムだけではなく、いかにして作りだすか、も含んでいる。美しいアーキテクチャは、実行時に用いられるのと同じでデータ、機能、手法に基づいて構築される。
 ・エントロピーに逆らうこと
  自然に保守を行うと、エントロピーの法則にしたがって、時間を経るごとに、システムは乱雑さを増していく。美しいアーキテクチャは、この保守の抵抗が最も小さくなるようにし、アーキテクチャそのものが美しくあり続ける必要がある。

 そして、

 ・コンセプトの一貫性
  アーキテクチャの最も重要な属性は、コンセプトの一貫性にある、

といいます。

 「たくさんの良いアイデアが独立に調和なしに含まれているシステムよりも、1つの設計上のアイデアを体現したシステムの方が、ずっと好ましい」(フレデリック・ブルックス)

 つまり、美しいアーキテクチャが持つ特徴は、
≪「システム全体を通じて使われる抽象技法と規則の集合が、可能な限り簡単にまとまっている」≫

 また、もしも、「アーキテクチャの殿堂」「美しいアーキテクチャの美術館」というようなものを作るとしたら・・その基準となる要件は、このようなものになるのでは、といいます。

 ・まず、役立つものであること。毎日、多数の人が使用に耐える・・ミッション・クリティカルなものであること。
 ・使われる前に、構築しやすいものであること。適切な「使用」構造を持ち、それによりインクリメンタルな構築が行えること。
 ・適切に定義されたモジュール・インターフェースを持ち、本質的にテストしやすいアーキテクチャであること。
 ・システムを利用するユーザが満足するだけでなく、そのアーキテクチャを使ってシステムを構築・保守する開発者やテスト担当者たちも、喜ばせるような特性を備えていること

などが、美しいアーキテクチャが満たすべき要件として求められています。

 最後に、アーキテクチャの美しさ・・って、どういうものだろうか?、を改めて思う時、漠然と考えてもイメージがわかなければ、1930年にスイス人の建築家であるロベール・マイヤールが設計したサルギナトーベル橋を見てみることです、というアドバイスがあります。

 スイスのスヒール近郊にあるサルギナトーベル橋は、アルプスの裾野、グラウヴュンデンカートーの切り立った渓谷にかかる橋です。径間は90メートルにも渡り、サルジナ川の水面から80メートルもの高さを持っていますが、ゆるやかなアーチと白いコンクリートでできており、周りの景色と完全に調和したシンプルで、とても美しい橋となっています。

≪重要なのは、それらが美しいだけではないということです。マイヤールは競争入札で契約を勝ち取って橋を作りました。サルギナトーベル橋のときは、19人の設計者たちより低い値をつけて契約を勝ち得ました。サルギナトーベル橋と道路の建設に掛かったのは、当時の金額にしてたったの70万スイスフランであり、これは現在の400万ドルより安いのです。≫

 この橋の写真を一目見ていただければわかると思うのですが、この美しい橋が、他の設計会社19社の競争入札の結果、最も安かったという事実に心底驚きました。
 低コストと美しさを両立させたのは、1900年から1940年にかけてマイヤールが構造芸術の分野で行った革命的な業績の結果でした。マイヤールによって、過去の石造りの建築からコンクリートの特性・・構造がスレンダーで薄い、それゆえに優雅で経済的であることを活かしきった橋が誕生したのでした。

 橋はなぜ美しいのか?
 美しくあることを求められているから。
 でも、橋はまず強くある必要があります。
 レイモンド・チャンドラーの言葉ではありませんが、、
 美しく作った橋でも、強くなければ生き残れません。
 また、強いだけでも、愛されません。
 しかし、
 風雪に耐えて生き残った美しい橋は、
 できた時から美しい橋であった。
 そして、それは自然にできたものではなく、設計者の強い意図が働いています。

(*1)『ビューティフル・アーキテクチャ』 編 Diomidis Spinellis , Georgios Gousios、訳 久野禎子・久野靖 オライリージャパン 2009年刊

(*2)ONLINE ETYMOLOGY DICTIONARY
http://www.etymonline.com/index.php