第6回 Webアプリケーション開発にチャレンジ【前編】作って学ぶ、今どきのWebサービス(1/3 ページ)

本連載ではこれまで、PerlによるWebプログラミングの基礎から応用まで解説してきました。今回は、これまで学んだことを踏まえた上で、Webサービスを使ったWebアプリケーション開発にチャレンジします。

» 2007年03月09日 07時00分 公開
[はてな 伊藤直也,ITmedia]

 本連載ではこれまで、PerlによるWebプログラミングの基礎としてHTTPクライアントの作り方、XMLモジュールの使い方、そしてその応用として、Yahoo!やAmazonなどのWebサービスを使ってみました。今回と次回では、これまで学んだことを踏まえた上で、Webサービスを使ったWebアプリケーション開発にチャレンジします。

Webサービスを利用するWebアプリケーション

 Webサービスを使うと、検索システムや商品データベースを自分で持つことなしに、それらの機能を搭載したアプリケーションを簡単に作ることができるのは前回紹介したとおりです。ただ、そこで紹介したスクリプトはコマンドラインから入力を受け取り、ターミナル上でそれを表示するという簡素なものでした。

そこで今回は、Webサービスを使いつつ、入力や出力をWebブラウザで行うもう少しリッチなアプリケーション、すなわちWebアプリケーションを作ってみたいと思います。その過程の中で、テンプレートエンジンやフレームワークの使い方を解説していきたいと思います。

Open Searchで検索

 今回扱うWebサービスは、Amazon.comの子会社であるA9.comが提供するOpen Searchです。

 Open Searchは、複数の検索エンジンから自分の好きなものを組み合わせ、まとめて検索できる検索サービスです(図1)。例えば「Google」という単語で検索したときに、Yahoo!のWeb検索、Googleのイメージ検索、Amazon.co.jpの商品検索を3つまとめて検索可能です。

図1 図1 A9.com

 また、Open Searchは検索エンジンをまとめて利用できるというだけでなく、検索エンジンの組み合わせ候補として、サードパーティーが自社の検索エンジンを登録できるという意欲的な試みとなっています。例えばわたしが所属するはてなの検索サービスであるはてな検索もOpen Searchに対応していて、A9.comから利用できます(図2)

図2 図2 はてな検索

 Open Searchに対応するには、A9.comから指定されたフォーマットで検索結果のRSSフィードを出力し、Open Search Description Documentと呼ばれる検索エンジンの仕様を記載したXML文書をサイト上で公開します。

 これを逆に見ると、「Open Searchに対応している検索エンジンは、検索結果のRSSフィードを出力していて仕様がXML文書で公開されているので、第三者がそれを取得できる」ということでもあり、かつ「Open Searchに対応している検索エンジンは、すべて同じA9.comが指定したとおりのインタフェースで、Webサービスとして利用できる」ということでもあります。

 実例を見た方が分かりやすいかもしれませんね。CPANに登録されているWWW::OpenSearchというモジュールを使って、Open Search対応の検索エンジンをWebサービスとして使ってみましょう(リスト1)


#!/usr/local/bin/perl
use strict;
use warnings;
use Jcode;
use WWW::OpenSearch;

my $word = shift; my $osxml = shift || "http://search.hatena.ne.jp/osxml"; # Open Search Description Document のURL my $engine = WWW::OpenSearch->new($osxml); my $feed = $engine->search($word);
printf("%s\n", Jcode->new($_->{title}, 'utf8')->euc)     for @{$feed->items};
リスト1 WWW::OpenSearchモジュールを使った検索エンジン

 WWW::OpenSearchは、任意の検索エンジンのOpen Search Description DocumentのURLを渡すと、自動でその検索エンジンの仕様を解析し、検索結果をXML::RSSインスタンスとして返してくれるという便利なモジュールです。XML::RSSインスタンスを操作すれば、検索結果のタイトルや概要などが取得できる、という具合です。

 このスクリプトを実行すると、デフォルトでは、はてな検索のOpen Search Description Documentが利用されます(実行例1)。ここでは「perl」という単語で検索してみました(検索結果としてはてな検索の結果が表示されています)。


$ perl opensearch.pl perl
Perl
mod_perl
BioPerl
        :
        :

実行例1 Open Search対応検索エンジンを実行したところ

 このスクリプトに対して、別の検索エンジンのOpen Search Description DocumentのURLを渡してみましょう。blog検索エンジンのBulkfeedsのものを指定してみます(実行例2)


$ perl opensearch.pl perl http://bulkfeeds.net/opensearch.xml
PC・システム開発
[ARG]Windows版MRTGをサービスとして起動する
perl 多用警報
        :
        :

実行例2 Bulkfeedsのエンジンを用いて検索を実行

 検索結果がBulkfeedsのものに変わりました。このように、Open Search対応の検索エンジンは、それぞれOpen Search Description DocumentのURLが異なるだけで、まったく同じインタフェースで扱うことができるのが特徴です。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ