オルタナティブ・ブログ > 栗原潔のテクノロジー時評Ver2 >

知財、ユビキタス、企業コンピューティング関連ニュースに言いたい放題

EAとSOAってあんまり関係ないよね

»

以前のエントリーでサービスと言う言葉の多重定義から生まれる混乱ついて書きました。同じようなことが、「アーキテクチャ」という言葉についても言えると思います(これについて昔書いたコラム)。

で、アーキテクチャという元々の意味は、「複数のハードウェアモデルで共通に使用される命令セットの外部設計」みたいな意味でした(IBMのS/360アーキテクチャ)。アーキテクチャ(外部設計)の反対語はインプリメンテーション(実装、内部設計)なんて教わったこともあります。X86アーキテクチャとかいう場合も同じ意味ですね。

ところが、クライアント・サーバ・アーキテクチャとなるとちょっとニュアンスが違います。ここでは、構築手法というような意味ですね。プログラムをクライアントとサーバに分けて作りましょうという手法全般について言っているわけであって、特定の外部設計のことを指しているわけではありません。

もうひとつ、テクノロジーの選択肢みたいなものをアーキテクチャと呼ぶこともあります。以前、某米国ベンダーの人(外人)の話を聞いたとき、「リファレンス・アーキテクチャ、要するにわが社のお勧め製品リストですが~」と話していて、ずいぶん正直だなーと思ったことがあります。

さて、EAにおけるアーキテクチャは第一の意味でしょう。要するに企業として共通化された外部設計ということです。一方、SOAのアーキテクチャは第二の意味、つまり、ソフトウェアを部品化(サービス化)しましょうと言う考え方そのものです。

SOAの話をする時に、EAの話も出てくることが多いですが、両者は同じ「アーキテクチャ」という言葉を使っていても全然別のものだと思います。もちろん、EAは企業内システムのすべての要素に関係するので、その意味ではSOAとEAは関係しているのですが、特に強い結びつきがあるかというとそうでもないのではないかと。

サービスと言う言葉と同様、アーキテクチャという言葉のあいまいさも弊害をもたらしていると思います。そう考えると、SOA(サービス指向アーキテクチャ)って世の中を混乱させるために生まれてきたような言葉ですね ^_^;

ちょっと文章わかりにくかったかもしれないので追加。

「1年かけてわが社のEAを作ろう」とは言えます。1年かけて全アプリケーションで共通して使える基本設計書みたいのを作ろうという意味です。

「1年かけてわが社のSOAを作ろう」とは言えないですね。「SOAを使ってわが社のシステムを再構築しよう」とか「わが社のシステムにSOAを適用しよう」なら言えます。SOAをクライアント・サーバ・アーキテクチャに置き換えてみると、もう少しクリアになるかもしれません。

要するにEAの「アーキテクチャ」とSOAの「アーキテクチャ」は類似してはいるのですが、前者が具体的な設計を指すのに対して、後者は設計手法を指す点で、言葉としては根本的な違いがあるということです。

Comment(9)

コメント

葵♂

はじめまして。アーキテクチャと言う言葉が、何かの具体的なカタチを示す言葉として使われることが多いのですね。建築の世界での言葉の建築術・様式・構成等の意味をそのままに、方法論やモデル…つまり「~の考え方」や「~形式」と読み替えると、すっきりしそうな気がしました。

livinginabox

> ANSI/IEEE 規格 1471-2000 では、アーキテクチャを次のように定義しています。「システムのコンポーネント、コンポーネント同士と環境との間の関係、およびその設計と進化を支配する原理に体現された、システムの基本的な構造」。
(http://www.microsoft.com/japan/msdn/architecture/general/eaarchover.asp より)
相手が正しく理解できるよう、言葉にきちんと定義を与える、または必要な説明を省かない、ということは重要でしょう。
ただ、EAでもSOAでも、「アーキテクチャ」という言葉は「基本構造(基本設計)」をあらわしていますよね。食堂で「俺はウナギだ」という人が、ヒゲをはやして、ぬるぬる動き回っているのではないですし、言葉/用語だけで説明が完了できると思わず、意思の疎通が図れていないと思ったら、きちんと説明するということでよいのではないでしょうか。

葵♂

専門家でもないのにコメントして、的外れだったようです。
EAもある意味、構造化・標準化・最適化を進めて企業運営を効率よく進めるための方法論なり手法(つまり道具)だと理解していましたが…追記を読んで勉強になりました。程度や守備範囲の違いもあるでしょうが大雑把に比喩すると…「法律を作ろう(方法論を作ろう)」と言うのがEAでのアーキテクチャで、「法律を守ろう(方法論を活用しよう)」と言うのがSOAでのそれなのかな。

言葉…難しいですね(笑)

栗原 潔

EAを作る方法論は、一般にアーキテクチャ・フレームワークと呼ぶようです。ザックマン・フレームワークとかFEAF(Federal Enterprise Architecture Framework)とかTOGAF(The Open Group Architecture Framework)などがあります。
で、EAでいう「アーキテクチャ」は法律の条文そのものに、SOAでいう「アーキテクチャ」は法律の運用の基本的考え方(議会民主制とか地方分権とか)にあたるのではないかと思います。

葵♂

目的と手段と道具とその成果物と…様々な対象にアーキテクチャと言う言葉が使われているんですね。確かに、どこかで混乱しそうです。

(実は、法律の考え方にも明るくは無いのですが…衆院選が近いので比喩してみました。でも、相手の言葉を使って説明して戴いたのは、嬉しいです。)

ありがとうございました(^-^)

ご存知かもしれませんが、アーキテクチャの設計思想・設計手法に関しては architectural style/architectural pattern という言葉があります。SOA の A はこちらに近いような気がします。

livinginabox.com

言葉遊びのようになってしまいますが、たとえば「オープンソース」というとソースコードをオープンにするという方針やライセンスをあらわし、「ライブラリソース」というとライブラリのソースコードそのものをあらわす、といったことはありますよね。でも、どちらの場合も「ソース」という言葉は、「何かのプログラミング言語で書かれたソフトウェアの元になるテキスト」をあらわしています。
言葉を組み合わせたときに、具体的に指し示すものがが変わることは特別なことではないので、(新たに説明する場面であれば)その都度、説明するしかないと思います。

栗原 潔

>>YAMOTO Yoheiさん
SOAのアーキテクチャは、"architectural style"に近い(というかそのもの)だと思います。
ただ、世の中ではそうではないと思ってる人もいるかもしれないですね。ITmedia本文記事でも「EAとSOAはビジネスでバリューを出す両輪」なんて表現を見ると、自分は相当違和感があるのですが、どうでしょうか?
そもそも、ガートナーで最初にSOAという言葉が使われた時には、単にクライアント・サーバ・アーキテクチャの言い換えだったので、ますますそう思ってしまいます。

「そうではないと思っている人」はたくさんいますよね。そもそも日本人に architecture といってみたところで、建築学の専門家でもない限りピンとこないですし。僕もいまだにアーキテクチャという言葉はしっくりこないです。頭でわかっているつもりでも。
なので日本語のニュース記事でアーキテクチャや SOA という言葉を見ても、あーバズワードだなーと感じるだけです。
日本でももっと技術者が SOA やアーキテクチャという言葉を使って議論していけば、語義は安定していくのではないでしょうか。そう思ってコメントさせていただきました。

コメントを投稿する