PR
[画像のクリックで拡大表示]

 「私はSOA(サービス指向アーキテクチャ)に対してはシニカルに考えている」。「Refactoring」や「Patterns of Enterprise Application Architecture」といった書籍の著者として有名な米ThoughtWorks チーフサイエンティストのMartin Fowler氏は2006年5月30日,東京都内で講演し,SOAの現状に疑問を投げかけた。SOAは意味のあいまいないわば“バズワード”であり,ベンダーがツールを売り込むための宣伝文句になっているというのだ。ただし,SOAの中には優れたコンセプトもあり,そうしたコンセプトはSOAという言葉とは切り離して考えるべきだという。

 「最初は意味があってもすぐに意味がなくなってしまういつものパターンの言葉」というのが,Fowler氏のSOAに対する第一印象だったという。「(同じSOAといっても)人によって言うことが違う。『サービスによってデータと振る舞いを結びつけられる』と言う人もいれば,『データと振る舞いを分離できる』と言う人もいる。『Webサービスも含まれる』と言う人もいれば『Webサービスには関係ない』と言う人もいる。SOAという名のもとに相矛盾する考え方が同居している」(同氏)。以前,米Microsoftが開催した開発者向けカンファレンスで,同氏は丸1日,SOAについて聞いたことがあったという。しかし,結局,SOAとは何なのかわからなかった。「私がわからないと言ったときに会場で起こった笑いから考えると,そう感じていたのは私だけではなかったはず」と同氏は語る。

 Fowler氏は「SOAとは何であり,何でないかと定義する努力がなされていない」と問題点を指摘する。オブジェクト指向という言葉も初期は現在のSOAのような状態だったと言う人がいる。しかし同氏は「それは正しくない」と語る。「オブジェクトとは何かという定義は一貫していたし,共通のコードもあった。クラス,継承,ポリモーフィズムといった概念も共通していた」。同様にアジャイルという言葉も意味があいまいだと言われることがあるが,「アジャイルのリーダーは,アジャイルをどうとらえるかに関して共通の見解を出している」。一方,「SOAは共通の見解があるとは全く感じられない。さらに悪いことに,ツール・ベンダーが製品を売りたいがためにSOAを持ち上げ,(SOA自体が)ブランド化して人気が出始めている」(同氏)。

 ただFowler氏は,SOAが指し示す内容自体を否定しているわけではない。「SOAの中には設計者の立場から見て『使いやすいだろうな』と思えるコンセプトがある」(同氏)。そのコンセプトにフォーカスして,SOAというあいまいな言葉は忘れるべきだというのが同氏の主張である。「SOAという大きな名前で呼ばれているものの中にいくつかおもしろいアイディアがある。SOAという呼び方自体には意味はない」(同氏)。

 同氏は,こうした“使えるコンセプト”の例を二つ挙げた。まず「メッセージ指向のアプリケーション統合」である。従来のアプリケーションの統合は「共有データベース」という考え方に基づいていた。複数のアプリケーションが一つのデータベースを共有し,アプリケーションのすべてのアクションを共有データベースに反映する。ただ,このアプローチには多くの問題がある。複数のアプリケーションに共通するデータベースの設計が難しい。また,アプリケーション開発者はアプリケーションとデータベースとの間の複雑なマッピングを理解する必要がある。アプリケーションに新機能を追加するのにデータベースのアップグレードが必要になり,ほかのアプリケーションのことも考慮しなければならない。

 一方,メッセージ指向のアプローチでは,共有データベースではなく各アプリケーションが独自のデータベースを持つ。これにより,データベース設計やマッピング,アプリケーションに対する新機能の追加が簡単になる。アプリケーション間のコミュニケーションは,XMLなどのドキュメントをメッセージとして送り合う。「SOAという言葉がメッセージングによるインテグレーションを指している場合がある。これは質のよい考え方だと思う」(Fowler氏)。

 Fowler氏がSOAの中でもう一つおもしろいと感じているのが,異なるアプリケーション間のコラボレーションの方法である。一つが「リクエスト-レスポンスのアプローチ」。あるアプリケーションが別のアプリケーションに情報を要求するというよくある方法だ。加えて,SOAで推奨されているもう一つのコラボレーション・スタイルもある。「イベントによるコラボレーション」だ。ある特定のアプリケーションに変更があったとき,ほかのすべてのアプリケーションにイベントとして宣言する。情報を受け取る側のアプリケーションは,関心のあるイベントに耳を傾けていればよい。

 最後にFowler氏は,SOA推進派の人々が目的としていることについて疑問を呈した。彼らは「システムの中に個々のアプリケーションの孤島ができており,この間のコミュニケーションがよくない。これをSOAによって解決できる」と主張しているという。これに対しFowler氏は「この問題の解決にはどんな技術を選ぶかは関係ない。孤島は技術の問題でできるものではなく,人間や社会の問題で作られるものだからだ」と反論する。アプリケーションごとに機能を実現しようとする開発者が作る境界,ビジネス・パーソンが設定するビジネス上の機能の境界,利益によって設定される境界など。「こうした人間的な境界は非論理的」(同氏)である。ビジネスの権力構造によって境界が引かれるのである。「社会的な力のほうが技術的な力より強いからアプリケーションの孤島ができる。だからなくならない」。これがFowler氏の結論である。