お使いのブラウザは最新版ではありません。最新のブラウザでご覧ください。

CNET Japan ブログ

アーキテクチャの価値を考える

2004/05/18 23:52
  • このエントリーをはてなブックマークに追加

今週はXMLコンソーシアムのイベント、第3回XMLコンソーシアムWeekが開催されている。昨日は「SOA Day」ということで、SOA(サービス指向アーキテクチャ)をテーマとして様々な講演が行われた。私も午後の一コマで「SOAってどうなの?」と題したBOFに参加させていただいた。

事前の打ち合わせで日本ユニシスの牧野さん、ブレイニーワークスの芦田さんと話をしていて、「SOAに対する見解はXMLコンソーシアムのテクノロジー部会の中でもバラバラで、少なくとも単に技術的なパラダイムとして足並みを揃えることは難しい」というようなことを言われていた。

このBOFでも様々な議論がなされ興味深い発言が多くあったわけだが、改めてここで「そもそもアーキテクチャとは何だったか」ということを考えてみることにした。

以前にも「WebサービスとSOAに関する議論」でモデリング技法とアーキテクチャを混同すべきでないとのご指摘もあったが、その整理の意味も込めて今回も敢えてモデリング技法の権威の発言をここに引いてみたい。

ちえの和WEBページ:コンピュータ偉人伝:エドワード・ヨードン

オブジェクト指向分析(あるいは他の手法でもよい)はソフトウエア開発を成功させるための鍵かと尋ねられた。 それに対する答えは次のようなものである。 イエス、一貫した技術的アプローチを持つことは非常に意義がある。 しかしソフトウエアの手法が効果的であるのは、それが人々の相互のコミュニケーションを助けることができる場面に限られる。

ここで述べられていることに別解を与えるならば、モデリング手法とは関係者(例えば開発チーム)全体でなるべく平易に理解を共有するための共通言語であり、コミュニケーション基盤である。

一方アーキテクチャは、関係者全体で完全に共有することが目的ではなく、むしろ各ドメインに適切な境界を設定することが重要となる。密なコミュニケーションが必要な機能セットを見つけてサブシステムとして定義し、互いに疎なコミュニケーションでよい境界を見つけてインターフェースとして定義していく。その結果、なるべく個々が全体を意識しなくても仕事を進められるようにすることでコミュニケーションのオーバーヘッドを最小化しようという考え方と言える。

最も判りやすい例が、ネットワーク・プロトコルのOSI参照モデルで採られたレイヤードスタックのアーキテクチャである。上下の層をそれぞれに分離することができ、例えばトランスポート層といえばTCPだったりUDPだったりするが、下のネットワーク層にはIPを共通して用いることができる。つまりこのアーキテクチャの価値は各レイヤーの独立性であり、言い換えれば各スタックを入れ替えても上下のスタックは問題なく動くということであった。少なくともタテマエとしては。。。

しかし、実際のところアーキテクチャというものの効果は見えにくく、正しくレビューされたこともない。

例えば、先ほどのOSI参照モデルでもTCPやUDPとIPは不可分だし、SocketやHTTPもTCP/IPと不可分だ。つまり、上層のものが下層のものに対する依存性は避けがたい。下層に代替選択肢を与える場合には、データリンク層におけるイーサネット(IEEE802.3)と無線LAN(IEEE802.11)のように、実績のある方を模した互換性・透過性が求められることになる。

そう考えると、例えばTCP/IPはHTTPやSMTPといったアプリケーションの存在によって現在の地位を得たのであり、その成功はTCP/IPそれ自体の革新性にあったかどうかは今となってはわからない。つまり、アーキテクチャというものは偶発的なデファクト・スタンダードを生み出す世界観とも言うことができる。(例えばIPv6がずっと苦戦しているのもアドレス空間の拡張というIPの主機能で真っ向勝負しているからで、イーサネットに対する無線LANのようなオルタナティブたるに相応しい別軸での価値が出せていないからに他ならない)

Tim Oreillyの言う "A platform strategy beats an application strategy everytime." (プラットフォーム戦略は常にアプリケーション戦略を打ち負かす)が真実であると思われるのは、この強固なルールが作用しているからに他ならない。一旦デファクト・スタンダードが確立されてしまうと、下層レイヤーほどスイッチングコストが高まりロックイン構造が強化される。そうなると、「各レイヤー間の独立性」という理想は、上層では事実かも知れないが下層では徐々に現実離れしてくる。見方を変えれば「アーキテクチャ自体も変化する」し、「レイヤーの境界は変化する」のである。これは意外と見落とされがちな点である。

では、変更に強いロバストなアーキテクチャの真価とは一体何か。

答えは「システムのライフサイクルの長寿化」ではないだろうか。

例えば、設計してから3年で古くなって使い物にならなくなるはずのシステムが6年持つようになる。アーキテクチャというカッコいい名前とは裏腹に、こういう地味な効果がアーキテクチャのエコノミクスなのではないか、という仮説である。この観点に立てば、よいアーキテクチャの価値はどのぐらいで、アーキテクトの仕事ぶりの評価はどのようになされるべきなのか、もう少し具体的な手がかりが見えてくるかも知れない。

難波弘之 / 百家争鳴

※このエントリは CNET Japan ブロガーにより投稿されたものです。朝日インタラクティブ および CNET Japan 編集部の見解・意向を示すものではありません。
運営事務局に問題を報告

最新ブログエントリー

個人情報保護方針
利用規約
訂正
広告について
運営会社