ZAPAnet総合情報局 > ZAPAブログ2.0 > RPC.phpのバグ

RPC.phpのバグ

2006年07月27日 プログラミングTIPS
AWS、BWS、楽天に対応した[Z]ZAPAnetサーチ2.0で書いた「日本語キーワードの関連語が取得できない」件ですが、原因が見つかりました。

最初は、自分で作ったプログラムソースをいくら解析してもバグが見つからないので、はてな側で何かバグがあるのではないかと探してみました。
はてなダイアリーキーワード連想語APIとは - はてな
を見ても、バグや改訂の様子もなく原因が掴めませんでした。

次に、このAPIを使ったサイトを探してみると以下のサイトが見つかりました。
Ajax と OpenSearch と はてなダイアリーキーワード連想語 API を使ったはてな検索のデモ

このサイトで、日本語の検索を行ってみると…
あれっ、ちゃんと表示されてる!?

サンプルソースも配布されていたので、中身を確認してみましたが、特別な処理は一切行われていませんでした。
サンプルソース以外にも同梱のライブラリが添付されていたので、それをチェックしてみると…!

PEAR :: Package :: XML_RPCのバージョンに古いものを用いていました!
もしかして、このライブラリが原因かもしれないと、現在自分のサーバー上で使われているRPC.php,v 1.99を使わずにRPC.php,v 1.88に切り替えてみました。
すると!

ちゃんと表示された!

どうやらPEARを最新版にアップグレード(アップグレード方法はPEARのアップグレードメモ参照)したときに、RPC.phpに日本語関連のバグ(もしくは仕様変更)が発生していたようです。

差分を取って中身を確認してみようかと思いましたが…
< * @copyright 1999-2001 Edd Dumbill, 2001-2006 The PHP Group
< * @version CVS: $Id: RPC.php,v 1.99 2006/06/16 16:00:54 danielc Exp $
---
> * @copyright 1999-2001 Edd Dumbill, 2001-2005 The PHP Group
> * @version CVS: $Id: RPC.php,v 1.88 2005/10/15 20:29:43 danielc Exp $

以下続く...
複雑そうだったのでやめました。

続いて、v1.88よりもう少し新しいv1.95で試してみたところ、これも正常に動作しました。
< * @copyright 1999-2001 Edd Dumbill, 2001-2006 The PHP Group
< * @version CVS: $Id: RPC.php,v 1.99 2006/06/16 16:00:54 danielc Exp $
---
> * @copyright 1999-2001 Edd Dumbill, 2001-2005 The PHP Group
> * @version CVS: $Id: RPC.php,v 1.95 2006/04/16 15:04:53 danielc Exp $

以下続く...
自分で作ったプログラムでも、提供されていたAPIのバグでもなく、PEARのライブラリに問題があるとは気付きませんでした。
取りあえずは最新版ではなく、少し古いバージョンのライブラリを使うことにします。



[Z]ZAPAnetサーチ2.0の方の挙動も正常に直ったので、ぜひ関連語巡りをしてみてください。

例えば、[Z]ZAPAnetサーチ2.0を開いて、注目のキーワードのところに以下のリンクがあった場合…
沢尻エリカ / 夏川結衣 / 石田えり / タワーマンション / 岡本綾
沢尻エリカのリンクをクリックすると、関連キーワードが表示されます。
沢尻エリカ関連キーワード ( by はてなダイアリーキーワード連想語API )
| 問題のない私たち | 天国 | ABC | ポイント | 澤尻義勝 | MBS | 写真集 | 2006年 | フランス人 |
ここで、関連キーワードで気になったリンクをクリック。例えば、問題のない私たちをクリック。
問題のない私たち関連キーワード ( by はてなダイアリーキーワード連想語API )
| 小貫華子 | 沢尻エリカ | 黒川芽以 | ISBN | 美波 | 少女漫画 | 映画 | 野波麻帆 | 森絵梨佳 |
そして、黒川芽以をクリック…。
沢尻エリカ問題のない私たち黒川芽以→以下続く
と関連キーワードで次々と検索していくことができます。

こんな作品に出てたんだ!
こんな商品あったんだ!

という発見があったりもしますので、一度遊んでみてください。