情報システムの良しあしはアーキテクチャーで決まる――。よく言われることだが、これは正しいのだろうか?正しいとは思うが、どうもふに落ちない。たぶん「アーキテクチャー」が何を指すのかが明確ではないからだと思う。

 アーキテクチャーという言葉を聞いたことのないITエンジニアはいないだろう。IT業界だけで使われる言葉ではないが、IT業界では「システム」や「ソフトウエア」といった言葉とくっついて頻繁に使われている。しかし、よく使われる言葉にもかかわらず、それが何かを明確に説明できる人は少ないと思う。

 「アーキテクチャーとは、システムやソフトウエアの構造のこと」と説明を受けることがある(他にもいろいろな説明がなされるが、ここでは話を分かりやすくするため「構造」で説明されるケースに絞る)。

 ここでいう構造とは、例えば「ハードウエアが何台あってそこにどんなミドルウエアが動いて何の役割を果たすのか」「アプリケーションの機能はどのモジュールとどのモジュールをどのように組み合わせて実装するのか」といったことを指す。

 こうした説明は、間違っているとは思わない。構造とアーキテクチャーは切っても切れない関係である。だが、構造とアーキテクチャーがイコールの関係だというのは何だか違う気がする。

 構造を決めるのは設計である。では、設計とアーキテクチャーはどういう関係なのだろう。筆者の感覚では、抽象的な表現で恐縮だが、設計という行為に時間軸(スタートからゴールまで)を設定すると、スタートに近い方にアーキテクチャーが存在し、ゴールに近い方に構造が存在する。

 ここまで「アーキテクチャー」「構造」「設計」という三つの言葉が出てきた。この三つの言葉の関係をうまく説明できないと悩んでいたとき、知人がプレゼン資料のURLを送ってくれた。そこには次のように書かれていた。