Web 2.0 は広範にわたるトピックであるため、簡単のために、この記事では Web 2.0 のさまざまなコンポーネントを取りまとめ、第 2 回と第 3 回で SOA や状況依存型アプリケーション (Situational Application)、そして IBMMSK に関して詳細に説明するためのプラットフォームを設定します。Web 2.0 についての、より広範で詳細な解説は、この記事の最後の「参考文献」セクションに挙げた Tim O'Reilly による記事へのリンクを参照してください。
Web 2.0 は、「Web 2.0 というラベルを共有するアプリケーションに見られる中核的なパターンのセット」と表現すれば最も適切です。これらのパターンは、サービスであり、容易さであり、そしてコミュニティーです (これを表現したものが図 1 です)。この記事ではまずパターンについて説明し、その後で、そうしたパターンを実現するための技術を探ります。
図 1. Web 2.0 アプリケーションが示す 3 つのパターン
この Web の新たな利用方法とアプリケーション開発の新しい方法を支えるのが Web コミュニティーです。Web コミュニティーをを真の意味で強力にするには、まず特定のアプリケーションへアクセスする共通の方法を Web コミュニティーが共有できなければなりません。
それを容易に実現するために、アプリケーションは、1 つのインスタンスをすべてのユーザーが利用できるサービス・モデルに移行しつつあります。これは、各ユーザーが個別にアプリケーションをダウンロードしてインストールしなければならないのとは逆です。また共有サービス・モデルによって、コミュニティーの機構を有効にするために必要な、1 つのサンドボックスを提供することができます。
開発者にとっての容易さ: オープンな業界標準の存在と、多くの強力な技術が入り込む上での障壁の低さのおかげで、ある種のアプリケーションのソフトウェアは使いやすく、開発も容易になりつつあります。それがさらに、効率よく作業を行える開発者と利用可能な Web アプリケーションのプールの増加につながっています。この側面のみでも、コミュニティーを作るという点で Web 2.0 が非常に強力なことが実証されています。
ユーザーにとっての容易さ: おそらく皆さんは、今や Web アプリケーションがリッチなコンテンツとユーザー・エクスペリエンスを提供していることにも気付いていることでしょう。また Ajax (Asynchronous JavaScript + XML) の登場により、従来のスタンドアロン・クライアントまたはシック・クライアントと Web アプリケーションとの境界は曖昧になるか、あるいはまったく消滅しています。現在の Web アプリケーションは、「新しいコンテンツを見るためにはページをリロードする」という Web 1.0 のメタファーを超え、対話型のリッチなユーザー・エクスペリエンスを実現しつつあります。
フィード関連の技術 (この記事の後の方で説明します) の成功によって、ユーザーは今や、彼らが求める特定の情報を提供する配信コンテンツを、業界標準の技術やプロトコルを利用して購読することができます。現在はフィードによって、特定のフォーマットで情報をパッケージして提供することができ、そのため情報を容易に利用し、構成し直すことができます。これは、ソフトウェアによって情報を妨げることなく、情報に最適な価値を持たせたい (つまり機能ではなく情報に焦点を当てたい) という傾向のニーズにも合致しています。この結果として、サービスの所有者が、彼らの提供する情報が予想外の方法で生産的に使われていることに気付く、という現象が起きています。
Web は、私達が情報を整理し、入手し、そして利用する方法に社会的な変化を生み出しました。その一例がウィキペディアです (「参考文献」にリンクがあります)。ウィキペディアは、人類が協力して情報を取得して管理するという作業を可能にし、その作業の速さはひとりの人やひとつの組織の能力で実現できる速さをはるかに上回ります。これは情報を迅速に追加できてしまうという点で良くもあり、悪くもありますが、得られる情報量は膨大です。すると今度は、どうやって必要な情報を見つけるかという問題が発生し、そのためその情報をフィルターにかけるための別のコミュニティー機構が作られます。この新たな機構によってユーザーは、意味のある、検索可能なメタデータで情報にタグ付けすることができます。その一例が del.icio.us です (「参考文献」にリンクがあります)。del.icio.us ではユーザーが、彼らのブックマークをオンラインで保存し、タグ付けすることができます。そのため他のユーザーは、ブックマークのリストをタグで検索することができます。これにより、コミュニティーによって既にブックマークを付けられた (フィルターにかけられた) データ内で結果を見つけられるようになります。
コミュニティー・データの完全性: もう 1 つ、緊急の問題は、コミュニティーが提供するデータの完全性を精査する必要があることです。この同じコミュニティーは、情報に価値を持たせるために活用することができます。ユーザーは特定のリソースに対するコメントや提案を追加、編集することができ、それを集約してコミュニティー全体としての意見を提供できるため、真の意味で読み書き可能な Web を作成することができます。このモデルは、提供者と利用者との間での緊密なフィードバック・ループを実現するためにも使われています。その一例として、eBay (訳注: 米国のインターネット・オークションの会社) での購入者と販売者の評価システムがあります (「参考文献」にリンクがあります)。コミュニティーの緊密なフィードバック・ループは、ソフトウェアの開発プロセスに生かすように活用することができます。そうすることでソフトウェアをユーザー・コミュニティーと協力して開発することができるため、ソフトウェアの採用が増えるにつれて改善が行われ、継続的に更新されるサービスとしてソフトウェアを提供することができます。
人々を結びつける: ソーシャル・ネットワーキングの機能を活用すると、異なる種類のリソース、つまり人間を発見し、管理することができます。ソーシャル・ネットワークは、共通の話題を共有する人々を見つけるための強力な方法です。例えばこれらのネットワークによって、ある高校に通った人達や、ある産業共同体に属する人達が、Web 上の独自の「スペース」でさまざまなものを共有し、ネットワークを作り、さらには協力を行うことができます。しかもこうしたネットワークは、そのネットワークのユーザーが他のユーザーをネットワークに追加したり招待したりできるという意味で非常に自律的であり、それによってネットワークの価値を高めています。これは、人々を結びつけるよりもコンピューターを結びつけることに焦点を当てる Web 1.0 とは大きく異なります。
ロングテールと、緩い使用許諾条件: Web 2.0 アプリケーションで他に注目すべき点は、これらのアプリケーションが、数多くの人が利用できる技術を使い、不特定の大衆へのサービスではなく非常にパーソナライズされた製品やサービスを提供することで、ロングテール (詳細は「参考文献」を参照) のサービスを行うことに焦点を当てていることです。さらに、Web 1.0 はダウンロード可能なアプリケーションが中心になっているため、アプリケーションの使用に関する使用許諾条件は非常に厳格でした。つまり「All rights reserved」(すべての権利を主張) というわけです。一方 Web 2.0 では、使用許諾条件は一般的に、他の技術やコンテンツ、そしてアプリケーションと統合することを推奨します。つまり「Some rights reserved」(一部の権利を主張) なのです。
これらのパターンが、Digg などの代表的な Web 2.0 のサイトで具現化されていることがわかります (Digg では、情報の追加や並び替え、また情報へのコメント用にコミュニティーの機構を使っています)。YouTube では、ユーザーが、そのユーザーにとって意味のある、そして他の人が検索しやすい方法でメディアにタグ付けすることができます。また Facebook では、ユーザーがソーシャル・ネットワークを構築し、その中でやり取りを行うことができます。(これらの各サイトへのリンクは「参考文献」を参照してください。)
どんな技術が Web 2.0 のパターンや概念を実現するのか
この、サービス・ベースのモデルへのシフトは、現在の Web 2.0 アプリケーションの開発方法に影響を与えています。アプリケーション開発スタックの下部にあるのは (ダウンロード可能なアプリケーションではサーバーでしたが) 今では Web のインフラだと見なされています。そのため、Web 2.0 アプリケーションを構築するために使用する API として、プログラマブル Web が活用されます。そうした API の例には、Flickr や Google Maps、Digg など、一般に公開され利用可能な Web サービスがあります。
LAMP (Linux®, Apache, MySQL, and PHP) アプリケーション開発スタックは、Web アプリケーションを作成するために良く使われる、無料で手軽かつ容易な方法です。これによって有用な Web アプリケーションを作成するための敷居が低くなり、その結果 Web 開発者の裾野が広がりました。LAMP スタックは、インターネットの膨大な部分を常に実行してきた現世代の技術です。
Web が新しいプラットフォームであるという概念は、インフラの大部分が既に確立されており、Web 上に既に存在しているという前提に基づいています。新しい Web 2.0 アプリケーションは、既に利用可能なホスティングを単純に活用すればよいのであり、Java EE (Java™ Platform, Enterprise Edition) や Microsoft® .NETなど従来の API の階層を使う代わりに、既存の Web アプリケーション (Flickr や Google マップなど) が公開している Web ベースの API (つまり Web サービス) を使ってアプリケーションを構築することができます。こうした Web API の普及によって一部の機能の作成作業を行わずにすみ、従って開発者の作業負荷を軽減できるため、より迅速にアプリケーションを構築することができます。
さらに、これらの Web API を 2 つ以上組み合わせ、マッシュアップとして知られる、新しい、ユニークなものを作成することができます。この一例が www.housingmaps.com で、このサイトは (Craigslist が提供する) 不動産情報を (Google Maps が提供する) 地図の上に重ねることで、指定の場所の不動産情報を視覚的にナビゲートし、かつ絞り込むことができます。
図 2 と 3 は Web 2.0 のインフラを分解したものです。
図 2. Web 2.0 スタックの鍵となる技術
図 3. 従来のアプリケーション開発スタックとプログラム可能な Web との比較
そうなると、こうした Web ベースの API を Ajax などの技術を使って呼び出すことができます (Ajax を利用すると、ブラウザー・クライアントが JavaScript を使って (同期、非同期両方で) サーバーと通信することができます)。これはつまり、クライアントがサーバーと通信しなければならない場合に、その都度アプリケーションがページ全体のリロードを要求することはない、ということです。
また、JSON (JavaScript Object Notation) を使ってオブジェクトをシリアライズ、デシリアライズし、そして Ajax を使ってブラウザー・クライアントとサーバーの間でオブジェクトをやりとりすることができます。Ajax と同じように、SOAP 仕様と REST (Representational State Transfer) の方法も、アプリケーション間でデータを転送するための業界標準の方法として使用することができます。現在では、既存のサービスが SOAP と Ajax、そして REST のインターフェースを提供することは非常に一般的です。
その他の技術として、Dojo (時間の節約になるオープンソースで、さまざまなブラウザーに対応した DHTML (Dynamic HTML) ツールキット) や、Greasemonkey や Firebug などのブラウザー拡張機能 (ブラウザーを拡張するスクリプトや、Web ページの外観や機能を調整できるスクリプトを作成することができます) は、Ajax を活用することで、今日利用可能なリッチなユーザー・インターフェースを提供します。例えば Facebook 用の Greasemonkey スクリプトをインストールすると、ある画像のサムネイルの上にマウス・ポインターを動かすたびにフルサイズの画像がブラウザー・ウィンドウの左側に自動的に表示されます。これによって画像を素早く便利に見られるようになり、そして明らかにユーザー・エクスペリエンスを豊かにすることができます。
マイクロフォーマットを使うと、XHTML を使って (X)HTML や Atom、RSS、あるいは任意の XML 文書の中で情報が持つ意味を伝えることができます。マイクロフォーマットは、人間と機械の両方による読み取りを可能にするアプリケーションです。例えばブラウザーがマイクロフォーマットを自動発見し、マイクロフォーマットで記述された情報に基づいて動作する、といったことができます。文書の中に名刺を埋め込みたい場合には、XHTML を使って名刺を記述する hcard マイクロフォーマット (詳細は「参考文献」を参照) を使うことができます (図 4)。
図 4. hcard マイクロフォーマットの例
最後に、RSS フィードと Atom フィードは、今や単にブログやニュースのフィードを購読するための使い方を超え、特定のコンテンツを中心としたアプリケーション・アーキテクチャーを単純化するための潜在的な方法として見られています。Atom の仕様は、元々は RSS で具体化された概念を新たに進化させたものであり、フィードに追加する情報を公開するための Atom 出版プロトコル (APP: Atom Publishing Protocol) など、便利な機能を提供しています。もし、イベント駆動のアーキテクチャーが現在は SOA フレームワークの一部であるなら、フィードをサービスのパラダイムの一部と考えることができ、そのようにフィードを活用する必要があります。
この記事では、Web 2.0 アプリケーションで具体化されている中心的なパターンと概念、そして重要な技術について学びました。この記事の続きの第 2 回では、企業での IT を調べます。そしてマッシュアップのエコシステムによって、現在の最新技術を改善する状況依存型アプリケーションをどのように構築できるかを検証します。
この記事をレビューしてくださり、また協力くださった Stew Nickolas と Dan Gisolfi、そして Rick Robinson の各氏に感謝いたします。
学ぶために
- The IBM Mashup Starter Kit を使って、今すぐ Web 2.0 アプリケーションの構築を始めてください。
- Dion Hinchcliffe's Web 2.0 blog を見てください。
- Tim O'Reilly による What is Web 2.0 を見てください。
- Web 2.0 に関して、さらに詳しい情報を入手してください。
- この記事で取りあげた下記のサイトを訪れてください。
- hcard マイクロフォーマットについて学んでください。
- The Long Tail について学んでください。
- The Programmable Web を訪れてください。
- IBM developerWorks の SOA and web services ゾーンでは、Web サービス・アプリケーションの構築方法に関する内容豊富な記事と、初心者から中級者、そして上級者を対象としたチュートリアルを数多く提供しています。
- IBM SOA Sandbox を試してみてください。そして IBM SOA のエントリー・ポイントで現実的で実践的な経験を積み、SOA のスキルを磨いてください。
- developerWorks technical events and webcasts で最新情報を入手してください。特に、SOA と Web サービスに関する下記の技術説明を見てください。
- Get started on SOA with WebSphere's proven, flexible entry points (WebSphere による実証済みで柔軟なエントリー・ポイントを利用した SOA 入門)
- Building SOA solutions and managing the service lifecycle (SOA ソリューションを構築し、サービスのライフサイクルを管理する)
- Safari bookstore には、この記事や他の技術的な話題に関する本が豊富に取り揃えられています。
- Web サービスに関する簡単なオンデマンドのデモをご覧ください。
- このシリーズの RSS フィードを入手してください (RSS の詳細はこちらをご覧ください)。
製品や技術を入手するために
- 皆さんの次期開発プロジェクトを IBM trial software で構築してください。ダウンロード、あるいは DVD で入手することができます。
議論するために
- developerWorks blog から developerWorks のコミュニティーに加わってください。SOA と Web サービスに関連するブログには下記があります。
- Sandy Carter による Service Oriented Architecture -- Off the Record
- Ali Arsanjani による Best Practices in Service-Oriented Architecture
- Bobby Woolf による WebSphere SOA and J2EE in Practice
- Eoin Lane 博士による Building SOA applications with patterns
- Kerrie Holley による Client Insights, Concerns and Perspectives on SOA
- Simon Johnston による Service-Oriented Architecture and Business-Level Tooling
- Sanjay Bose による SOA, ESB and Beyond
