pmphp、MySQLの学習の一環として、2週間ほど前に「蔵書管理システム」を試作した。当然のことながら、システムの作成はできても蔵書データの入力は大変だ。1000冊程度まではデータを入力したものの、この先、このあたりをどうするか考えなければならない。調べてみると、AmazonのDBからISBNを与えると書籍データが、容易に、取得できそうだ。Servicesと呼ばれている。データ取得のためのAPIについて、詳細なテクニカルドキュメントが公開されている。このサービス、基本的には、Amazon製品を販売する(言い換えるとAmazonの「小売店」として)Webサイトを構築する際に利用できるサポートと言える。このWebサービスを通じて、さまざまの商品情報を「小売店」が取得可能というわけだ。誰でも、Amazonの「小売店」登録さえすれば、書籍に限らず、Amazonで扱っている商品情報を全て取得できる。(この説明、少し単純化している。詳しくは、Amazonのサイトで確認を・・・・。AmazonWebサイトからIDを即座に登録することができる。登録すると、時間をおかず登録したメールアドレス宛にIDが送られてくる。Serviceを利用を可能にするものである。Idも取得しておくことが必要だ。これで、上で述べたAmazonの「小売店」登録が完了するわけだ。Serviceは、RESTとSOAPの両方をサポートしている。私自身、SOAPについては何の知識をもっていない。APIを通じたデータの取得方法について説明しよう。Transfer)とは何かというところについて記述することが必要だろう。第4回アーキテクチャスタイル『REST』とは何か」を参照させてもらった。APIの仕様を決めるうえでのアーキテクチャスタイル、つまり基本的な考え方ということができる。RESTの本来の意味は、リソース(ここでは、ブログ記事、アップロードした写真、WEBページ全体のコンテンツなどのひとかたまりの情報)を扱うための考え方で、夫々のリソースに固有のURIを持たせ、これらURIにアクセスすることでリソースをHTTPの「操作」する。AmazonECS(など)においてRESTというとき、これを、単に、HTTPとXMLを利用してリソースの操作を行うもとのとし、「全てのパラメータをURLに含めてGETメソッドで呼び出しを行い、結果を独自仕様のXMLデータとして返す」。ここでは、GETメソッドがHTTPの本来の定義では、本来、リソースに変化を加えないものとされているが、AmazonECSでは、ショッピングカートの内容の変更などもこのGETメソッドを利用して行う。(以上の記述、私の理解に基づいて、若干、編集している。正確な表現は、参照記事を、直接、見て頂きたい)となっている。要は、このサービス、HTTPの形式に沿って、要求に応じたXMLデータを取得可能な形式になっていると理解していいと思う。説明のなかで「全てのパラメータをURLに含めてGETメソッドで呼び出す」と述べられている。この記述、Amazonの該当するサイトのURL(日本の場合、ecs.amazonaws.jp/onca/xml)に、情報取得のために必要なパラメータ値をクエリーストリングスとして加えることにより、求める情報がXMLデータとして返されるという理解でいいだろう。情報取得のために必要なパラメータは、Amazonの扱う商品が厖大な種類におよぶこともあって、非常に複雑な構成になっている。詳細なパラメータの記述方法は、Amazonの技術ドキュメントから得ることができる。具体的に書籍データの取得がどのように行われるか、私の本棚にあった書籍リチャード・ドーキンスの「盲目の時計職人」(ISBN:4152085576)を例に、みてみよう。ItemPage=1これをブラウザのURLボックスに入力すると(注:改行せず、またスペースをいれてはいけない)、XMLデータが返されてくる。返されたデータは、ブラウザ画面上に表示される。ブラウザ上に現れたXMLデータを書籍データの主要な部分のみに限定(多くの部分は省略)して示すと以下のようなものだ。XMLデータの全体は、是非、自らAWSAccessKeyId取得することにより確認してほしい。取得するための、phpスクリプトを書いてみた(php-5が必要)。下記で用いている関数file_get_contents()は、php.iniの設定でURLをファイルとして取り扱うことを許可する必要がある(allow_url_fopen=on)。URL先の中身が文字列として返される。XMLデータ(文字列)が返り値となる。"\n";?>ここで示した例はphpで、簡単に、書籍データが取得できることを示したに過ぎない。効果的なプログラミングを可能にするライブラリーパッケージもいろいろあるようだ(例:PEAR)。実際にAmazonのデータベースにアクセスした印象。厖大なデータベースに無料でアクセスできるというのには驚きだ。IBSNから書籍データを取得するというだけではもったいない。有効な活用方法がある。それにしても凄いサービスだ。ページが見つかりません」のメッセージが出るだけでリクエストが帰ってきません。したらよいのでしょうか。ちなみにアクセスキーIDを消して入力すると以下のメッセージが出ます。図書利用システムを作ろうと思っています。よいアドバイスがあればよろしくお願いします。このエントリを書いたのは、ほぼ5年前で、それからアマゾンAPIの仕様がかなり変わりました。変更されたなかには、Requestに電子署名を必要にするなども含まれています。」のなかにまとめていますので、変更のいきさつなどを見ていただければよろしいのでは、と思います。