SOAについて考えるの記事で、早速jack_sparrowさんに貴重なコメントをいただいたので、これをふまえて、SOAを考える前の準備をしておきます。SOAを訴求する上で苦労する点は、前回のエントリーで紹介した通り、利用者にとってSOAの正体があやふやでわかりにくいところです。この原因はいくつか考えられます。
- SOAの定義が語る人によってぶれる。
- しばしば、ほかの流行り言葉と組み合わせて語られる(例: Web 2.0やクラウドコンピューティング、ビジネス・プロセス・モデリング)。このため、全体の話の中でSOAがどこを占めているのかがわからない。
- にたような言葉や、関連キーワードがたくさんある(例: SCA、ESB、BPM、BAM)
- 話が抽象的である。
- メリットが具体的に想像できない。
- どのようなアクションをとってよいのか見当がつかない。

SOAミドルウエア製品を開発しているソフトウエア・ベンダーやオープンソース・コミュニティーの立場からすれば、他製品との差別化のために新たな機能や性能を付け加えることで競争を勝ち抜かねばならず、それらの新たな機能や性能といった特徴を宣伝キーワードとして取り込むことを考えます。この、新たな機能や性能といった特徴を訴求するために、既存の概念や問題点、解決方法と対比させていきます。こういった思いのもとに作られた広告やパンフレット、セミナー資料などをみると、それぞれのベンダないしコミュニティーの「訴求したいこと」がベースとなり、その一部としてSOAが語られることになりがちです。

このため、各ベンダーやコミュニティーから発信されるSOA関連情報は、ぼんやりとした核を保ちつつも、周辺の特徴はどんどんと曖昧なものになっていきます。さらに追い討ちをかけるのが、SOA + Web 2.0や、SOA + Cloud Computingなどのようなニコイチ作戦で訴求される場合で、こうなってはSOAの特徴もわからなくなれば、Web 2.0の特徴を知ることも難しくなります。ニコイチ作戦は、流行り言葉が生まれては消えやすい、IT業界では常用される方法で、造語(例: Web 3.0)と比べて本質を大きく曲げることはないものの、もともとの意味をあやふやにしてしまうことは間違いないだろうと思っています。

一方、利用者側として知りたいのは、SOAとは何なのか、とか、自分の抱えている問題についてSOAを使えばどのような解決が期待できるのか、とか、問題を解決するためにSOAではどのようなアプローチをとるのか、といったことです。上記のように、開発側と利用者側の間には訴求したいこと、知りたいことの内容でギャップがあり、特に今回のテーマSOAについて、わかりづらい、というレッテルが定着してしまったのではないかと思っています。

難しいところは、SOAは購入すればすぐに効果の出る魔法の薬ではない点です。SOAのねらいや目的を知らないまま使っていては、具体的な問題を解決することはできないでしょうし、場合によってはかえって冗長な作業を強いられSOAの導入効果が得られるどころか、非効率かしてしまう可能性もあります。
自分にとってのメリットをすぐ知りたいのは利用者として当然の主張です。とはいえ、メリットばかりを追い求めてしまうと、近視眼的な判断に陥りやすく、よりハデに広告されていたり、流行していそうなキーワードに心を奪われ、最初に興味を持ったSOAの本来の目的を見失ってしまったり、流行を追求することのみに傾倒してしまうかもしれません。

ようやくjack_sparrowさんのコメントに戻りましょう(jack_sparrowさん、知り合いということで勝手な引用ご容赦ください (^^ゞ
SOA ≒ Cloud
私の中での論理はこんな感じです。
「SOA ≒ Cloud」という認識は、SOAとCloudをよく知っている人には共感が得られる表現であるかもしれませんが、この「○○は△△の拡張だ」のような表現は、しばしば本来の意味を過度に省略しすぎていると思っています。SOAをよく知っている開発側の立場としては、このような表現はいくつかのキーワードをうまく結びつけて訴求するにあたって好都合であり、タイポグラフィーとしても収まりが良いのでこれが最高のSOA表現だと思い込んでしまう傾向があるのではないかと思っています。

たとえば、アインシュタインによる「E = mc2」という有名な式はとてもシンプルで、見栄えが良いのですが、その背後にある特殊相対性理論をきちんと理解していなければ何の役にも立たない式でもあります。SOAはアーキテクチャであり、ITシステムを設計する上での理論でもあります。今回予定している一連のエントリの目標は、岡崎のここ数年の活動のとりまとめとして、SOAというアーキテクチャを説明することです。あわよくば、SOAをうまく訴求できるキャッチコピーも考えてみることにします。そこでは、利用者として期待すべきこと、考慮しなければならないこと、開発者として注意すべきことをなるべく含めていくつもりです。とても一般的なテーマで、時間がかかるかもしれませんが、ゆっくりとみていってください (^^ゞ
