ZAPAnet総合情報局 > ZAPAブログ2.0 > はてなキーワード検索アプリ

はてなキーワード検索アプリ

2006年06月10日 プログラミングTIPS
はてなキーワード検索アプリ作りました。

はてなキーワードAPIはてなダイアリーキーワード連想語APIを利用して、任意のワードからはてなキーワードと連想語を表示します。

はてなキーワードAPIの処理について

はてなキーワードAPIは、 HTTPGETに対してXMLで処理結果を返す、RESTAPI になっています。
そのため、以下のようなURLでキーワードを取得することができます。
https://d.hatena.ne.jp/keyword?word=%e3%81%af%e3%81%a6%e3%81%aa&mode=rss&ie=utf8
この前PHP4からPHP5にアップデートしたばかりなので、取得したXMLを処理するために、新機能のSimpleXMLを使って処理してみました。
例えば、以下のような感じでXMLの要素を配列に格納できるため、とても簡単です。
$keyword = htmlspecialchars($_GET['keyword'],ENT_QUOTES);
$file = "https://search.hatena.ne.jp/keyword?&word=".$keyword."&mode=rss2&ie=utf8&page=1";
$xml = simplexml_load_file($file);
後は格納した配列を処理するだけで、簡単に表示することができます。
PHP4の時に、SAXで一要素ずつ処理していたのと比べると、あまりの簡単さに驚いてしまいます。

はてなダイアリーキーワード連想語API

はてなダイアリーキーワード連想語APIは、はてなキーワードAPIとは違って、XML-RPC APIを用いたAPIになっています。
そのため、以下のメソッド名、属性からキーワード連想語を取得することができます。
uri:https://d.hatena.ne.jp/xmlrpc
encoding:utf8
methodName:hatena.getSimilarWord
このXML-RPC APIの処理には、PEARのXML_RPCを利用して処理しました。
require_once 'XML/RPC.php';
$client = new XML_RPC_client('/xmlrpc', 'd.hatena.ne.jp');
$params = new XML_RPC_Value(
	    array(
	        'wordlist' => new XML_RPC_Value($keyword)	    ),
	    'struct'
	);
$message = new XML_RPC_Message('hatena.getSimilarWord', array($params));
$response = $client->send($message);
後は受信した連想語を処理していけば、連想語を表示することができます。
はてなのはてなダイアリーキーワード連想語APIのページには、PerlとRubyのサンプルしか載っていないので、PHP版は上記のような感じになります。
XML-RPCの処理は初めてのことですが、思っていたよりは簡単で安心しました。
でも、RESTでXMLを取得できるはてなキーワードAPIの方が個人的には簡単に思います。


そんなわけで完成したアプリは、

はてなキーワード検索アプリ

になります。