
最近、XMLベースのメッセージングの規格であるWebサービスが注目されています。 その代表的な仕組みはSOAPやXML-RPCですが、PHPにおいてもSOAPやXML-RPCの サポートが行われています。
現時点で、まだWebサービスは発展途上といった感じですが、 セキュリティ保護の機能が実装され、有用なコンテンツや出回るようになれば、 WebサービスはWebアプリケーションと肩を並べるような存在となるかもしれません。
ここでは、PHPにおけるWebサービス、特にSOAPに基づく実装とその応用例について紹介します。
2002年4月に検索エンジンとして有名なGoogleがWebサービスによる検索用のAPIを 公開しました。公開されてからまだ間もないにもかかわらず、既にJava、Rubyを始め、PHPを含む多くのサンプルコードが公開されています。 ここでは、PHPによるWebサービス用クライアントの例としてGoogleの検索用APIを使用して検索を行う簡単なスクリプトを示します。
PHP用のSOAPの実装は数種類存在します。ここでは、標準クラスライブラリPEARに 含まれているものを使用します。
まず、CVSによりPEARの開発版を入手します。
$ cvs -d:pserver:cvsread@cvs.php.net:/repository login [phpfi]と入力 $ cvs -d:pserver:cvsread@cvs.php.net:/repository -z4 co pearpear/SOAP/* と pear/SOAP_Google をPHPのインクルードディレクトリにコピーします。 --with-xml を configure に指定するか、動的に組み込むことにより、XML拡張モジュールを有効とする必要があります。
1 <?php
2 // Google検索用Webサービスのデモ
3 // Rui Hirokawa <rui_hirokawa@ybb.ne.jp> 2002/4/15
4 require_once 'SOAP/Google.php';
5
6 print <<<EOS
7 <form action="{$_SERVER['PHP_SELF']}" method="POST">
8 <input type="text" name="keyword">
9 <input type="submit">
10 </form>
11 EOS;
12
13 if (!empty($_POST['keyword'])) {
14 $key='henohenomoheji'; // 登録時に発行されるキーワード
15 $google = new SOAP_Google($key); // SOAP_Googleのインスタンスを生成
16 $result = $google->search(
17 array(
18 'query' => "{$_POST['keyword']}"
19 )
20 );
21
22 if (false !== $result) {
23 print "検索時間:".$result['searchTime']."
\n";
24 print "総ヒット数:".$result['estimatedTotalResultsCount']."<br><hr>\n";
25 foreach ($result['resultElements'] as $e) {
26 print $e['snippet'] . "
\n";
27 print "<a href=\"".$e['URL']."\">".$e['title'] . "</a>\n";
28 print $e['summray'] . "<br>\n";
29 }
30 } else {
31 echo 'クエリに失敗しました。';
32 }
33 }
34 ?>
この簡単なPHPスクリプトは、キーワード検索をGoogleに行って結果を表示するものです。とりあえず作ったものなので、あまり、高度なことはしていません。 14行目で設定しているキー($key)は、Google Web APIs (http://www.google.com/apis/)で登録するメールで送付されてきます。 また、Googleが提供するWeb Serviceに関するドキュメントやJavaクラスの実装等もダウンロード可能です。
とりあえず、Web ServiceをPHPで作ろうということで簡単に作ってみました。 なお、ここでは、Webサービスのクライアントを作成していますが、PEARのSOAPクラスでは、サーバーも作成できるようです。 何か面白そうな例ができたら紹介します。 また、今後GoogleのAPIを見て少し機能を追加する予定です。