PHPでWebサービスを作ろう

はじめに

最近、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を使用して検索を行う簡単なスクリプトを示します。

SOAPのインストール

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 pear

pear/SOAP/* と pear/SOAP_Google をPHPのインクルードディレクトリにコピーします。 --with-xml を configure に指定するか、動的に組み込むことにより、XML拡張モジュールを有効とする必要があります。

GoogleのWeb Service APIを使用する

以下にデモ用のサンプルコードを示します。
 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を見て少し機能を追加する予定です。


[トップページ]