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

* 本ドキュメントに関する注意事項

本ドキュメントははてなダイアリーにおける、『はてなダイアリーキーワード連想語API』の実装を解説するものです。主にはてなスタッフがその作成と更新を行っています。

* 変更履歴

- 2006年 2月15日 リリース

* API仕様の解説

キーワードのリストを送信すると、はてなダイアリーのキーワードデータベースと照合し、関連するキーワードを返信するAPIです。

APIはXML-RPC APIを用いて実装を行っており、メソッド名および指定可能な各属性は、以下の通りです。
>>
:uri:http://d.hatena.ne.jp/xmlrpc
:encoding:utf8
:methodName:hatena.getSimilarWord
:parameters:以下を参照
-wordlist(array): はてなダイアリーキーワードを配列で指定します。
<<
このAPIを用いてやり取りを行った場合のサンプルは以下のようになります。
>|
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
  <methodName>hatena.getSimilarWord</methodName>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>wordlist</name>
            <value>
              <array>
                <data>
                  <value>
                    <string>Hatena</string>
                  </value>
                  <value>
                    <string>Perl</string>
                  </value>
                </data>
              </array>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>|<

>|
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>wordlist</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>wordpress</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>大文字</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>インタプリタ</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>開発者</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>Larry Wall</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>リスト</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>日記</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>システム</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>言語</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>OS</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>レポート</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>スクリプト</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>処理系</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>はてな</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>移植</string></value>
                      </member>
                    </struct>
                  </value>
                  <value>
                    <struct>
                      <member>
                        <name>word</name>
                        <value><string>プログラミング言語</string></value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodResponse>|<

*サンプルプログラム

外部アプリケーションにおいて、あるキーワードに対して関連キーワードを取得するサンプルスクリプトは以下のようになります。

>|
#!/usr/bin/perl
use strict;
use warnings;
use encoding 'utf8';
use XMLRPC::Lite;

my $res = XMLRPC::Lite
    ->new
    ->proxy('[]http://d.hatena.ne.jp/xmlrpc[]')
    ->call(
        'hatena.getSimilarWord',
        {
            wordlist => [
                'Hatena',
                'Perl'
            ]
        });

if ( my $fault = $res->fault ) {
    warn "$_ => $fault->{$_}"
        for ( keys %$fault );
} else {
    print $_->{word},"?n"
        for ( @{$res->result->{wordlist}} );
}

exit;|<

* 補注

任意のテキストに対するはてなダイアリーキーワードの抽出は、[http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%C0%A5%A4%A5%A2%A5%EA%A1%BC%A5%AD%A1%BC%A5%EF%A1%BC%A5%C9%BC%AB%C6%B0%A5%EA%A5%F3%A5%AFAPI:title=はてなダイアリーキーワード自動リンクAPI]をご利用ください。

* 参照

- [http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%C0%A5%A4%A5%A2%A5%EA%A1%BC%A5%AD%A1%BC%A5%EF%A1%BC%A5%C9%BC%AB%C6%B0%A5%EA%A5%F3%A5%AFAPI:title]
- [http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%ad%a1%bc%a5%ef%a1%bc%a5%c9API:title]
- [http://www.hatena.ne.jp/info/webservices:title]