はてなキーワード検索アプリ作りました。

はてなキーワード検索アプリ作りました。



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



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

はてなキーワードAPIは、 HTTPGETに対してXMLで処理結果を返す、RESTAPI になっています。

そのため、以下のようなURLでキーワードを取得することができます。

http://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 = "http://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になっています。

そのため、以下のメソッド名、属性からキーワード連想語を取得することができます。

urihttp://d.hatena.ne.jp/xmlrpc

encoding:utf8

methodName:hatena.getSimilarWord
このXML-RPC APIの処理には、PEARXML_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のページには、PerlRubyのサンプルしか載っていないので、PHP版は上記のような感じになります。

XML-RPCの処理は初めてのことですが、思っていたよりは簡単で安心しました。

でも、RESTでXMLを取得できるはてなキーワードAPIの方が個人的には簡単に思います。





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



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



になります。