Yahoo曰く、XMLじゃなくてPHPの変数をそのままシリアライズして返せばいいじゃん
Yahoo! Developer Networkに設けられた、PHP Developer Centerに面白い内容があった。→Using Serialized PHP with Yahoo! Web Services
要するに、
- 普通、Webサービスといえばやり取りするデータのフォーマットとしてXMLを使うけど
- Yahoo(米国本家)のWebサービスではRESTでのリクエストで「&output=php」を指定してくれれば結果をXMLじゃなくてPHPの変数をシリアライズした状態で返してあげるようにしてみました、と。
- それを直接PHPのunserialize関数に読み込ませれば、データをいきなり変数化できるんで便利だよ
http://api.search.yahoo.com/ImageSearchService /V1/imageSearch?appid=YahooDemo&query=Madonna &results=1&output=phpPHPのserialize/unserialize関数は、変数の内容をテキスト化する(又はその逆)のための機能。情報を一時的にファイル等にキャッシュしたい場合などに使われるのだが、なるほど、こういう使い方もいいかもしれない。
PHPにはXMLを取り扱うための関数はいろいろとある。しかし、
- いろいろありすぎてどれをつかったらいいのかわからない(笑)。 (PHP マニュアルの目次のページ内を「XML」で検索すると、少なくとも3つか4つはヒットしてしまうはず。)
- それぞれに使い方にクセがある上に、それぞれ「PHP5以上」「まだ開発中(CVSにしかない)」「要拡張モジュール(or再コンパイル)」だったりして、いったいどーすりゃ・・・
しかし、どんなフォーマットでデータを送る/受け取るんあれ、最終的には受け取る側のプログラム内部で多次元配列変数かなにかにしてしまうわけだから、だったらXMLなんか使わなくともはじめからunserialize関数一発で変数化できるような形で送っちゃえばいいじゃん、というアプローチ。うーん、コロンブスの卵。
なお、 この記事の下のほうに、Javaやperlなど他の言語上でデータをPHP言語のserialize形式データに変換する方法(リンク)がいくつか紹介されている。Webサービスを提供する側がPHP以外の言語で構築されている場合でもやろうと思えば可能ということだ。
ちなみに、「これからはPHP言語を積極的に使います」とYahooが公言してから早3年たったわけか。
see also:
Yahoo!、オープンソースの PHP スクリプト言語に移行(Japan.internet.com 2002.10)
One Year of PHP at Yahoo!(PHP言語をYahooで採用して1年を経て)
July 9, 2003 (OSCON 2002) PDFファイル
PHP at Yahoo! October 20, 2005 (Zend/PHP Conference) PPTファイル
ITmedia エンタープライズ:Yahoo!、PHP開発者センターを開設 (2006/2)

