「アーキテクチャ」をメタファしてみる

アーキテクチャ」という言葉について考えました。とても定義の曖昧な言葉ですね。システム開発の文脈の中だけに限定したとしても、それでもまだ曖昧です。

あちらこちらのサイトを調べるに、IEEEには定義?があったみたい。ちょっとだけ深く追ってみました。以下が参考になると思います。
http://www.enterprise-architecture.info/Images/Documents/IEEE%201471-2000.pdf

日本語に訳したのも、あちらこちらにありました。そこからひとつ。
『システムを構成するコンポーネント同士、およびコンポーネントとシステム環境との相互関係、システム設計とその改善を主導するための原理などを包含する基本的な構造』(参考:http://www.ciojp.com/contents/?id=00002158;t=15

わかったような、わからないような。アーキテクチャについては、私の中にも以前から考えているイメージがあります。IEEEの内容に大筋は同意ですが、1つ付け加えるのであれば「ある目的のため」という言葉が欲しいです。*1アーキテクチャとは、何らかの目的のために存在している筈で、目的が無ければ、アーキテクチャを考える必要は無いですよね。

さてメタファですが、アーキテクチャ『(目的地までの)地図とコンパス』というものです。

アーキテクチャは、システム開発をしていく上で、目的地に辿り着くための現在地の道筋を示した地図であり、なおかつ、現在地でどちらを目指せば良いのかを知るためのコンパスでもある。
これが私の考えるアーキテクチャです。*2

『地図とコンパス』というメタファから幾つかアーキテクチャの特徴を示しましょう。

  • アーキテクチャには、目的地に辿り着くまでに構えている注意して進むべき場所や、乗り越えないといけない峠などが記されている必要があります。そして、場所によっては縮尺と粒度が異なるものが存在しています。
  • 目的地までの距離によって、必要な地図は異なってきます。乗らないといけない乗り物も変わってくるでしょう。目的地とコスト、体制などによって変わってきます。
  • 地図があると、大勢の人で動いたとしても、同じ目的地に到達できるでしょう。
  • アーキテクチャに従って開発をする人もいれば、地図を書く人も当然必要な訳です。地図を書く時は、大勢の人では効率が悪く、中々計画も立てられないし、計画通りに進めるのは難しいです。近ければ一人で書けますが、目的地まで距離が遠いと一人で作るのは難しいですね。

さて、いくつか「アーキテクチャ」を「地図とコンパス」で捉えてきましたが、そこから幾つかわかることもありますね。
まず、大規模開発でのアーキテクチャの必要性。そして、アーキテクチャの構築には、XPが合っていそうなこと。大規模開発とXPとアーキテクチャの関連については、また別の日に。

最後に、このメタファを元に、さらに少し飛躍してみましょう。システム開発の未来には、GPSのような機能がアーキテクチャに代わって出てくるかもしれない。システム開発におけるGPSとはいったい何か?・・・という風に未来を想像(創造)していくのも楽しいですね。

*1:原文にはあるのかもしれませんが。。。

*2:どこかから影響受けてるかも。