第5回 Amazon Webサービスを料理してみる:作って学ぶ、今どきのWebサービス(3/3 ページ)
Webサービスを使いこなすといっても、Web検索の機能をアプリケーションに統合するだけでは、いまいち面白みがありません。今回は、Amazon.comが提供するAmazon Webサービスを料理してみましょう。
Net::AmazonでAmazon Webサービスを料理する
それではLWPとXML::SimpleでAmazon Webサービスを使ったアプリケーションを……といきたいところですが、Amazon Webサービスの仕様は結構大きめで、クエリの組み立てやXML文書のパースもなかなか大変です(それに、AmazonWebサービスの仕様をすべて解説して至ら誌面が幾らあっても足りません:P)。
こんなときはやっぱりCPAN。CPANにはNet::AmazonというAmazon Webサービスを簡単に利用するためのモジュールもちゃんと登録されています。Net::Amazonを使うと、Amazon Webサービスを使ったアプリケーションを作る作業量がぐぐっと減ってお得です。CPANシェルから「install Net::Amazon」でインストールしてしまいましょう。
ここでは例によって、コマンドプロンプトから任意の単語でAmazonの商品を探すアプリケーションを作ってみました。コードはリスト3のようになります。このスクリプトをコマンドラインから実行する(任意のキーワードを引数で渡す)と、商品名が表示されます。実行例1では、キーワードとして「perl」を渡しました。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
$ perl amazonsearch.pl perl
初めてのPerl
Code Reading―オープンソースから学ぶプログラミングテクニック
一週間でマスターするPerl for Windows
はじめての人のためのかんたんPerl/CGI入門―WindowsXP/MacOS X対応
続・初めてのPerl - Perlオブジェクト、リファレンス、モジュール
Perlデータマンジング―データ加工のテクニック集
:
:
わずか十数行のコードで、Amazonから商品を検索して表示するツールが完成してしまいました。簡単にコードの解説をしていきましょう。
6、7行目では、まずキーワードを引数として受け取り、それをUTF-8に変換しています。ここでは、わたしのシステムが入出力をEUC-JPにしているため、Jcodeの第2引数に「euc」を渡しています(省略した場合は自動判定)。お使いの環境に合わせて変更してください。
続いて8行目から11行目にかけてNet::Amazonのインスタンスを作成します。ここではtokenとして先の登録ID、それからlocaleとしてjpを渡しています。jpを渡すと、Webサービスのクエリを送信する対象が、Amazon.comではなくAmazon.co.jpに変更されます。
Net::Amazonのインスタンス作成時には、ほかにもさまざまなパラメータを渡すことができます。例えばアソシエイトIDを渡しておくと、以降の検索結果で取得できるURLがアソシエイト対応になったり、PerlのCache::Cacheオブジェクトを渡すと、検索結果をローカルで一時的にキャッシュしたりといった機能が使えます。詳しくはperldocかsearch.cpan.orgのドキュメントを参照してください。
12行目から15行目のように、Net::Amazonインスタンスのsearchメソッドを呼び出せば、Amazonの商品データベースを検索できます。ここでは書籍(books)を対象に、引数で与えられた単語を検索しています。
17行目以降は、検索結果のインスタンス(Net::Amazon::Response)に、検索が成功したかどうかをis_successでたずねて、成功していたら検索結果から商品名を取り出して表示します。リスト3にあるように、propertiesメソッドで検索結果の配列が返ってくるので、それをループで回して得られるオブジェクト(Net::Amazon::Property)にProductNameメソッドで問い合わせれば、商品名が取得できます。
この程度であれば、Amazon Webサービスの細かい仕様を知らなくても、Net::Amazonの使い方だけ覚えておけば作れてしまいます。簡単ですね。Net::Amazonの使い方は、CPANのドキュメントにあります。もっといろいろやってみたいという方は、ぜひ一度ドキュメントに目を通してみてください。
より本格的なアプリケーションを
前回と今回の2回は、WebサービスAPIを用いて、コマンドラインからクエリを送信、検索結果を表示するというアプリケーションを幾つか作ってみました。HTTPを介してWebサイトが持つ機能を自分のアプリケーションに取り込む、という意味でのWebサービスとはいったいどんなものかをご理解いただけたと思います。
さて、これらWebサービスを利用して本格的なアプリケーションを作ってみましょう……といきたいところですが、今回はここでおしまいです。続きは次回、WebアプリケーションとWebサービスを絡めて、インタラクティブなWebサイトを構築してみましょう。お楽しみに。
本記事は、オープンソースマガジン2005年8月号「作って学ぶ、今どきのWebサービス 第2回」を再構成したものです。
関連記事
- developersLife〜開発者という生き方
- 連載第1回:何はなくともCPANを知ろう
最近のWebかいわいでは、Webアプリケーション同士が連携してどんどん面白いサービスが生まれています。しかし、Web上のサービスは手元にソフトウェアも何も残らないので、どうしても雲をつかむような分かりにくさがあります。そこで本連載では、Webサービスを実際に利用/作成しながら、そういった「今どき」のテクノロジーを学んでみたいと思います。 - 連載第2回:RSSフィードの料理はLWPとXML::RSSにおまかせ
今回から、いよいよPerlプログラミングの世界に入っていきましょう。手始めに、PerlにおけるWebプログラミングの要ともいえるLWPを用いた、HTTPコンテンツをPerlでHackする手法を解説します。 - 連載第3回:XML::SimpleであらゆるXML文書を料理する
RSSにおけるXML::RSSのように、専用のモジュールがある場合にはそれを使えばよいのですが、そうでない場合は汎用のXMLパーサーモジュールを使ってパースすることになります。今回は、XML::Simpleを使ってあらゆるXML文書を料理できるようにしてみます。 - 連載第4回:Webサービスって実はこんなに簡単
前回まで3回に渡って、PerlにおけるWebプログラミングの基礎を解説しました。今回は一歩進めて、より実用的なアプリケーションを作るため、その足がかりとなるであろうXML Webサービスの使い方について解説していきたいと思います。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.