連載 [第3回] :
  PerlでWeb APIを使いたおす

SOAPを利用したWeb API

2006年10月3日(火)
水野 貴明

SOAPをPerlから使う


   それでは、実際にSOAPを利用したWeb APIにPerlを使ってアクセスしてみることにしましょう。今回サンプルとして利用するのは、Google SOAP Search API(注1)、つまりGoogleが公開している検索用APIです。このサービスは公開されてからかなりの時間がたっているのですがいまだにベータ版で、検索の回数が1つのライセンスキーに対して1日1000クエリに限定されています。実用的かというと疑問が残りますが、有名なサービスということで、サンプルにはよいでしょう。

   リスト15に作成したサンプルを示します。このサンプルでは、「perl」というキーワードで検索を行い、10件のURLを表示しています。なお、このサンプルを実行するには、あらかじめGoogleのWebサイトにアクセスして、ライセンスキーを取得する必要があります。

リスト15:Google SOAP Search APIのサンプル
#!/usr/bin/perl
use SOAP::Lite;
use strict;
use warnings;

my $license_key ='ライセンスキー';
my $wsdl        = 'file:GoogleSearch.wsdl';
my $word        = 'perl';
my $api    = SOAP::Lite->service($wsdl);
my $result = $api->doGoogleSearch(
    $license_key,
    $word,
    0,
    10,
    'False',
    '',
    'False',
    '',
    'UTF-8',
    'UTF-8',
);
foreach (@{$result->{resultElements}}){
    print $_->{URL}."\n";
}

   Google SOAP Search APIは、WSDLを公開しているので、それをサンプルと同じディレクトリに置いて実行してください。WSDLのおかげで、プログラム中ではアクセス先のURLも、アクセスしているメソッドの詳細も記述する必要がありません。

   アクセスするのはWeb検索を行うdoGoogleSearchというメソッドです。受け渡すパラメータは次ページの表3の10個です。

パラメータ 意味
key Google API Key
q 検索する文字列
start 取得する結果のスタート位置(一番初めからなら0)
maxResult 取得する結果の件数
filter フィルタを設定する。同じサイトからの結果をひとつにするなどの設定が可能。
restricts 検索する対象を限定する。日本のサイトに限定するなら「countryJP」。
safeSearch Safe Search(アダルトサイトを検索しない機能)を有効にする
lr 検索対象とする言語(日本語ならlang_ja)
ie 検索する文字列の文字コード
oe 返ってくるデータの文字コード

表3:doGoogleSearchのパラメータ

   結果はパラメータ名をキーとしたハッシュとして返ってきます。検索されたページのデータはresultElementsというパラメータなので、それをループで回して、URLを表示しています。

   SOAP::Liteは処理を全て自動的に行ってくれるので非常に便利なのですが、内部で何が起こっているのかがよくわかりません。そこで、use文において以下のようにデバッグ情報を表示する設定を行うことで、どういう情報がやり取りされているのかを知ることができます。

use SOAP::Lite +trace => [qw(debug)];

1973年東京生まれ。エンジニア兼技術系ライター。株式会社はてな勤務。近著に「俺流Amazonの作り方」(アスキー)、「詳解RSS〜RSSを利用したサービスの理論と実践」(ディー・アート)など。趣味はラテン音楽と海外旅行と神輿。現在、家を荒らしまわるネズミの被害に頭を悩ませている。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています