
Webサービスを使って楽しもう
|
Webサービスは登場当初から、アプリケーション連携(EAI)の面が強調されてきました。現在、Webサービスは「Web サイトが持つコンテンツや機能を外部に提供する」という方向での利用が拡大しています。今回は、Yahoo!やAmazonなどの有名サイトが提供しているWebサービスを使ってアプリケーション作りを楽しんでみます。簡単にできますので、次世代の開発を垣間見る意味でも、一度体験されることをお勧めします。
Webサービスを使ってみよう
それでは、実際にWebサービスAPIを使用してみましょう。まずは、Webブラウザから、http://bulkfeeds.net/app/search2.rdfWeb%20Serviceへアクセスしてみてください。WebブラウザにXML文書が表示されたと思います。これで、WebサービスAPIを利用してコンテンツを取得できました。「これだけ??」と驚かれた方もいることでしょう。本当にたったこれだけです。簡単に説明しておきましょう。
“http://bulkfeeds.net/”は、Bulkfeedsというブログ専門の検索エンジンを公開しているWebサイトです。まずは“/app/search2.rdf”を呼び出すことで、Bulkfeedsに検索を指示します。検索に使用するクエリは“q=Web%20Service”で示されており、ここでは“Web Service”というキーワードで検索しています(%20は半角スペースを意味しています)。
Bulkfeedsにこのリクエストを送信すると、検索結果をRSS(注2)フォーマットで受け取ることができます。Webブラウザに表示されたのが検索結果のRSS文書です。ここでは、Bulkfeedsから受け取ったRSS文書を単純にWebブラウザに表示させましたが、実際にはプログラムでさまざまに加工して利用します。
なお、多くのWebサービスAPIでは、利用する際にIDを発行してもらわなければなりません。通常は無料でIDを発行してくれる機能がWebサイトに用意されていますので、その機能を利用してIDを取得してください。以降では、使用するWebサービスAPIのIDを取得している前提で話を進めます。紹介するサンプルコードを完全に動作させるには、取得したIDの設定が必要です。
ちなみに、先ほどBulkfeedsをサンプルとして利用したのは、Bulkfeedsの一部の機能がIDを取得していなくても利用できるという嬉しいサービスになっているためです。
Webサービスの呼び出し方法
では次に、Webサービスを呼び出す方法をもう少し詳しく説明します。
Webサービスを呼び出す方法には、大きく分けて「REST(REpresentational State Transfer)」と「SOAP(Simple ObjectAccess Protocol)」があります。どちらもHTTPリクエストをWebサービスに送信して結果をXML文書で受け取るものですので、根本的には何も変わりません。異なるのは、Webサービスへのパラメータの受け渡し方法だけです。RESTは、パラメータを文字列として定義し、HTTPのGETメソッドやPOSTメソッドで送信します。一方、SOAPではパラメータをXMLデータとして定義し、やはりHTTPのGETメソッドやPOSTメソッド(注3)で送信します。SOAPは、RESTの1つのパラメータをXML化したものとほぼ同義となります。
RESTはリクエストが単純なURLとなるので簡単に利用でき、SOAPはパラメータをXML形式で記述するために複雑なリクエストを定義できます。実際には、WebサービスAPI側でRESTとSOAPのどちらに対応しているかが決められていますので、それに従って使い分けます(図4)。

図4 RESTとSOAP
ちなみに、現在はSOAPよりもRESTがよく使われているようです。RESTだとリクエストの際にわざわざXMLデータを組み立てる必要がないため、WebサービスAPIの利用者の受けが良かった、ということのようです。
(注2) RDF Site Summaryの略。Webサイトのサマリ情報をXMLで記述するためのフォーマット。
(注3) SOAPは、バージョンによってはPOSTメソッドでなければ通信できません。バージョン1.2からGETメソッドによる通信がサポートされます。そのため、現時点ではPOSTメソッドでないとSOAPを受け付けてくれないWebサービスもあります。
コラム:Web 2.0とは
「Web 2.0」という言葉をご存知でしょうか。最近話題に上ることが多くなったので、ご存知の方も多いと思います。Web 2.0はティム・オライリー氏(注A)らが提唱する概念で、新しいタイプのWebサイトを表わす言葉として利用されています。
オライリー氏のブログによるWeb 2.0の解説(注B)によると、Web 2.0に該当するWebサイトには2つの原則があるそうです。1つ目はプラットフォームとしてのWeb、2つ目は「集合知(注C)」の利用です。この2つの原則をうまく利用しているWebサイトが、Web 2.0に対応したサイトということになります。
Web 2.0として挙げられているWebサイトには、GoogleやFlickr(注D)などがあります。これらのWebサイトがWebサービスを提供しているというだけでWeb 2.0と呼ばれているわけではありませんが、Webサービスの提供が大きな要因になっていることは明らかです。Webサービスが新しいWebサイトの大きな特徴と考えられているのは間違いありません
現在のWeb 2.0という言葉はビジネス色の強いものとして受け取られており、技術者の中には否定的な見方をする人も少なからずいるようです。Web 2.0が即仕事で役に立つという人は意外と少ないと思いますので、今は情報を集めつつ今後の動向を見守るという感じでしょうか。
(注A) 米国の出版社、オライリー&アソシエーツ社の社長。
(注B) http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.htm(翻訳は、http://japan.cnet.com/column/web20/story/0,2000054679,20090039,00.htm)
(注C) 現在のインターネットでは、多くの人々がさまざまな情報を提供し合うことで全体として大きな知識を形成している。ここではその知識のことを集合知と呼んでいる。
(注D) 個人の写真を登録し、参加者で共有するWebサイト。http://www.flickr.com/
コラム:RDF/RSS/Atomからオントロジ/セマンティックWebへ
Webサービスについて調べていると、よく「RDF」「RSS」「Atom」といった用語を見かけ ます。これらはいったい何なのでしょうか。
RDFはResource Description Frameworkの略で、リソース(ここでは、URIで識別可能であるもの、という意味)に関する情報について記述するためのモデルです。RDFを利用することでさまざまなリソースのメタ情報を記述でき、情報に対する自動処理を効率的に行なえるようになります。
RSSはRDF Site Summary(注)の略で、Webサイトのサマリ情報を記述するためのRDF拡張仕様です。ただし、現在多く利用されているバージョンのRSSは、その後の仕様変更によりRDFの拡張ではなくなっています。
AtomはRSSと同様にWebサイトのサマリ情報を記述するための仕様ですが、RSSとは異なり、元からRDFをベースとはしていません。AtomはRSSの複数バージョンの乱立による混乱や、RDFをベースにしたことに起因する複雑さなどを解消することを目的として策定された仕様です。
さて、前述のようにRDFはリソースのメタ情報を記述するための仕様ですが、これはリソースの自動処理が目的となっています。RSSやAtomは、サイト情報に特化した仕様であるため、サイト情報に関する自動処理で力を発揮しています。しかし、インターネット上にはサイト情報以外の情報も多数存在しており、それらの自動処理はなかなか進んでいません。リソースの自動処理を行なうためには、あらかじめリソースの情報を知らなければならないためです。
これを解決するために「オントロジ」という考え方が導入されました。オントロジは人間が常識として持っている概念を整理したものであり、例えば「生物」「動物」「植物」といったものがオントロジに当たります。
一般的に人間が持っている概念、すなわちオントロジは非常に膨大です。インターネット上で流通しているデータだけに絞ったとしてもその数はかなりのものとなります。これらのオントロジを整理/分類することで、最終的には情報がいったいどういうものであるのか、ほかのどの情報とどういう関係を持っているのかを記述できるようにする研究が現在も続けられています。
その研究の目標として掲げられているのが「セマンティックWeb」です。セマンティックWebでは、すべてのリソースをURIで識別し、さらにRDFを使用することでそれらのメタ情報やリソース間の関係を記述します。その結果、コンピュータが自動的にリソースの内容を判断し処理できるようになると言われています。
WebサービスとセマンティックWebの間にはまだ大きな隔たりがありますが、一昔前と比べると少し前進しているように感じられます。すぐにオントロジやセマンティックWebの知識が必要となることはありませんが、これらについてある程度の知識を得ておくことで、現在のWebの進んでいる方向が多少見渡しやすくなるはずです。
(注) バージョンによってはRich Site SummaryやReallySimple Syndicationが略とされることもあり、非常に紛らわしい。