検索
連載

第4回 Webサービスって実はこんなに簡単作って学ぶ、今どきのWebサービス(2/2 ページ)

前回まで3回に渡って、PerlにおけるWebプログラミングの基礎を解説しました。今回は一歩進めて、より実用的なアプリケーションを作るため、その足がかりとなるであろうXML Webサービスの使い方について解説していきたいと思います。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

LWPとXML::SimpleでYahoo! Search Web Servicesを料理する

 それでは具体的にPerlで検索のアプリケーションを書いてみましょう。任意の検索語句を渡すと、その検索結果のタイトルを10件出力するという(実行例1)、簡単なコマンドラインアプリケーションです。コードはリスト3のようになります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

実行例1 検索結果のタイトルを10件ほど出力するアプリケーション

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

リスト3 Yahoo! Search Web Servicesを利用するアプリケーション

 今回利用するモジュールは、

  • Jcode
  • LWP::Simple
  • URI::Escape
  • XML::Simple

の4つです。LWPとXML::Simpleは前回解説したとおり。Yahoo! Search Web Servicesでは入力も出力もマルチバイト文字をUTF-8で扱うことになっているので、Jcodeは文字コードを変換するために利用します*。また、URI::EscapeはクエリパラメータをURLエンコードするために利用しています。

 特に難しいところはないですね。大枠は前回解説したコードとほとんど一緒です。クエリパラメータ付きのURLを先に組み立てておいて、LWP::SimpleでそれをGET。取得したXML文書をXML::Simpleでパースしてタイトルに当たる個所だけを出力、ということを行っています。

 具体例を見て、Webサービスとは何かをつかんでいただけたでしょうか。Webサービスを利用することで、Webを介してXMLをやり取りして、任意のアプリケーションにWebサイトの機能(ここではYahoo!の検索)を取り込むことができました。

 ここでは入力をスクリプト実行時の引数、出力を標準出力にしていますが、この入力をWebから、出力をWebに書き換えれば、Webアプリケーションとして検索ページが作れます(このあたりは今後解説したいと思います)。

Yahoo::Searchでよりお手軽に

 さて、リスト3ではLWP::SimpleとXML::Simpleを使っていますが、CPANを探すとYahoo::Searchというモジュールが見つかると思います。これはYahoo! Search Web Services専用のモジュールで、Yahoo!社員がCPANに登録しているものです。

 LWPとXML::Simpleも良いですが、このモジュールを使うと*、もっとシンプルかつすっきりとしたコードで同じ機能のプログラムが書けます(リスト4)

 URLの組み立てや、XML::Simpleが作った生のデータ構造をたどったりする必要がなくなり、かなり分かりやすくなったと思いませんか? このように、CPANには特定のWebサービス専用のモジュールなどもあるという好例といえるでしょう。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

リスト4 Yahoo::Searchを使った場合

SOAPとREST

 ところで、Webサービスに関係する言葉で、SOAP(Simple Object Access Protocol)というものを聞いたことがあるかもしれません。SOAPとは、WebサービスにおけるXML文書交換用のプロトコルのことです。

 ここで示したYahoo! Web Search APIではSOAPは利用していません。Yahoo! Web Searchのように、HTTPのGETでURLにアクセスしてシンプルにXML文書を取得するAPIは、REST API(あるいはXML over HTTP)などと呼ばれます。

 Google Web APIsはSOAPを採用しています。今回はSOAPによるWebサービスの解説は省略しますが、SOAPによるWebサービスはPerlならSOAP::Liteを使ってHackすると良いでしょう。

次回は

 今回はGoogleとYahoo!の検索機能に関するWebサービスを題材に解説してきました。しかしながら、実用的なアプリケーションを作ると言いつつも、Web検索の機能をアプリケーションに統合するだけでは、いまいち面白みがありません。工夫次第でいろいろ面白いものが作れるとは思いますが、より実用的なデータをWebサービスで扱いたいところですね。

 そこで次回は、Amazon.comが提供するAmazon Webサービスを題材にしたいと思います。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

このページで出てきた専門用語

Jcodeは文字コードを変換するために利用します

Perl 5.8ではこれまでEncodeモジュールを利用するのが一般的だったがEncodeのラッパーモジュールとしてJcode 2.xも利用可能だ。こちらの方が使いやすいので、今後は日本語の変換にはJcodeを使っても良いだろう。

このモジュールを使うと

コンストラクタに渡しているそれぞれのパラメータの説明は、Yahoo::Searchのperldocかsearch.cpan.orgのドキュメントを参照してほしい。


本記事は、オープンソースマガジン2005年8月号「作って学ぶ、今どきのWebサービス 第2回」を再構成したものです。


前のページへ |       

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る