Web APIの次世代標準プロトコル「Atom Publishing Protocol」

第1回 Web APIの次世代標準プロトコル

この記事を読むのに必要な時間:およそ 3 分

Web APIの乱立とAtom

現在,一般コンシューマ向けのWebサービスは多くのサイトがネットワーク越しに利用できるAPI(Application Programmable Interface)を公開しています。いわゆるWeb APIと呼ばれるものです。開発者向け技術雑誌などを見ても,マッシュアップやAPIプログラミングの解説記事が多く掲載されるようになりました。

2000年代の前半からGoogleやAmazonをはじめとした主要なWebサービスがAPIを公開し始めました。2000年代中盤からは様々なサイトでAPIが公開されるようになり,現在に至っています。当初はWebで人間がアクセスできる情報をAPIとして公開していましたが,現在ではWebブラウザで情報提供はしないもののAPIだけ提供するというサイトも増えてきました。

さて,これらのWeb APIアーキテクチャを見てみると,現状では各サービス毎にそれぞれ違うアーキテクチャを採用しています。使いたいWeb APIがあれば毎回アーキテクチャを確認してプログラミングしなければならない状況あると言えるでしょう。

少々乱暴ではありますが現状を以下のようなジャンルに分けてみました(分類は筆者による)。

1.REST志向 Web API
決められたURLに対してHTTPのGETやPOSTを行い,XMLやXHTMLなどのデータを取得する形です。
2. RPC志向 Web API
HTTPのbody部分にメソッドやパラメタ情報を埋め込み,決められたURLに対してHTTPアクセスを行う方法です。レスポンスもXMLで表現されます。
3.Web Services志向 Web API
SOAPやWSDLといったWS系の仕様を使うタイプです。エンタープライズ系のWebサービスがAPIを提供する際に多く使われることがあるようです。

それぞれに利点・欠点がありますが,直感的に理解しやすいこと,仕様が相対的に単純であることなどから,多くのコンシューマ向けWeb APIの場合,1.が利用されることが多いように思います。

近年,RESTアーキテクチャはWebシステムのデザインアーキテクチャとして尊重されつつあります。詳しくは他の文書に譲りますが,REST的な考え方の一部となっているのは,GET, POST, PUT, DELETEなどのHTTPメソッドで直感的に操作するアーキテクチャです。

Atomもこの考え方を採用しており,初めてこのプロトコルを利用するエンジニアにとっても分かりやすいものとなっています。例えば,Webリソースに対してその情報を取得する場合は,GETメソッド,新規に作成する場合はPOST,変更する場合はPUT,削除する場合はDELETEメソッドを利用します。メソッドを適用するURLは対象となるリソースを想定しており,非常に直感的です。

現状,REST志向のWeb APIは多くのサイトが独自フォーマットかつ独自のアクセスモデルを採用しています。クライアントの開発者は一つ一つのサイトに対して,その通信フォーマットと通信プロトコルを確認しながら開発を進めていかなければなりません。このため,あまり相互運用性が考慮されていない状況であるように思えます。

AtomはこういったREST志向のWeb APIに対して標準的なフォーマットと標準的なアクセスモデルを提供してくれます。今後はAtomが相互運用性が考慮されたWeb APIの世界を切り開いてくれることを期待しています。

Atom アーキテクチャ

Atomは主に二つの仕様から構成されています。The Atom Syndication Format(RFC 4287)及びThe Atom Publishing Protocol(RFC 5023)です。Atom Syndication Formatは,RSSのようにシンジケーション(フィードを通じて配信すること)を行うためのフォーマットを定義しています。

本稿を執筆させていただいている2007年末現在,Webサイトのコンテンツ ── とりわけブログやニュースサイト等の情報は,その多くがRSSやAtomなどの「フィード」として配信されています。フィードは,コンテンツそのものやサマリだけが記載されているのではなく,日付情報や,作者情報といったメタ情報と呼ばれる関連情報が一緒に配信されています。これらのメタ情報を活用してさまざまなアプリケーションが登場することが期待されています。まさに「フィード」は情報を流通させるためのデファクトスタンダードと言えるでしょう。しかし,これまでは情報の流れはサーバからクライアントへの一方向でした。クライアント側からサーバ側への情報の流れは未定義だったのです。

Atom Publishing Protocol (以下,AtomPub)ではこのAtom Syndication Formatで定義されているフォーマットを利用し,Webリソースの操作方法を定義しています。言い換えるとクライアント側からサーバ側への情報の出版(publishing)を定義しているのです図1)。

図1 Atomのアーキテクチャ

図1 Atomのアーキテクチャ

著者プロフィール

朝倉浩志(あさくらひろし)

NTTコミュニケーションズ 先端IPアーキテクチャセンタ リサーチエンジニア。上位層プロトコル及びWebテクノロジの技術開発に取り組む。

コメント

コメントの記入