連載 [第5回] :
  PerlでWeb APIを使いたおす

AtomPP を利用したWeb API

2006年10月12日(木)
水野 貴明

AtomPPをPerlから使う


   それでは実際にAtomPPを利用したプログラムを書いてみることにしましょう。PerlにはXML::AtomというAtomPPやAtom Feedを扱うモジュールがあるので、こちらを利用します。

   題材としては、はてなブックマーク(注3)を利用してみます。はてなブックマークはソーシャルブックマークサービスで、ブックマークの登録や取得、編集をAtomPPで行うことができます。

   今回は自分のブックマークに新規のエントリを登録するプログラムを書いてみました(リスト18)。

リスト18:はてなブックマークにポストする
#!/usr/bin/perl
use strict;
use warnings;
use XML::Atom::Client;
use XML::Atom::Entry;
use XML::Atom::Link;

my $api = XML::Atom::Client->new;
$api->username('ユーザー名');
$api->password('パスワード');

my $collection_uri = 'http://b.hatena.ne.jp/atom/post';
my $uri = '登録するエントリのURI';
my $comment = 'コメント';

my $link = XML::Atom::Link->new;
$link->type('text/html');
$link->rel('related');
$link->href($uri);
my $entry = XML::Atom::Entry->new;
$entry->add_link($link);
$entry->add(undef,'summary',$comment,{type => 'text/plain'});
my $member_uri = $api->createEntry($collection_uri, $entry);

my $posted_entry = $api->getEntry($member_uri);
print $posted_entry->as_xml;

   処理としては簡単で、XML::Atom::Entryのインスタンスとして登録情報を作成し、それをXML::Atom::Clientを使って登録(新規エントリの作成)しているだけです。はてなブックマークのAPIでは、登録するエントリのURIはlink要素として指定するので、XML::Atom::Entryを使って生成し、それをエントリオブジェクトに加えています。コメントはsummary要素として渡します。

   実際に追加する作業は、XML::Atom::ClientクラスのcreateEntryメソッドに追加先のCollectionのURI(PostURI)とエントリを渡せば完了です。登録の際に送られるEntryのデータは次ページのリスト19のようなものです。

リスト19:POSTされるエントリ情報
POSTされるエントリ情報
(画像をクリックすると別ウィンドウに拡大図を表示します)

   エントリを追加すると、レスポンスとして、追加されたMemberのURIが返されます。そこで、今度はそのURIに対してGETメソッドでアクセスして(getEntryを利用)、エントリの内容を取得します。内容はXML::Atom::Entryとして返されるので、最後にそれをXMLのまま表示しています。その内容は、次ページのリスト20のようなものになっているはずです。

リスト20:取得したエントリ情報
取得したエントリ情報
(画像をクリックすると別ウィンドウに拡大図を表示します)

   ちなみに、はてなブックマークではユーザー認証にWSSE認証という仕組みを利用していますが、XML::Atomにはその仕組みが用意されているので、特に気にすることなく利用できます。

   はてなブックマークのAtomPP APIの仕様については以下のドキュメントを参照してください。


1973年東京生まれ。エンジニア兼技術系ライター。株式会社はてな勤務。近著に「俺流Amazonの作り方」(アスキー)、「詳解RSS〜RSSを利用したサービスの理論と実践」(ディー・アート)など。趣味はラテン音楽と海外旅行と神輿。現在、家を荒らしまわるネズミの被害に頭を悩ませている。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています