お問い合わせ
会社概要 ソフトウェア 開発ブログ サポート

4章 The Atom Pulishing Protocol(AtomAPI)の利用法

最終更新日:2005/03/03   © Witha System, Ltd

Witha System » Atom目次
» [1章 The Atom Project - RSSの興隆からAtomの誕生]
» [2章 Atomフォーマット - The Atom Syndication Format]
» [3章 Atom出版プロトコル - The Atom Publishing Protocol(AtomAPI)]
» [4章 The Atom Publishing Protocol(AtomAPI)の利用法]
» [AtomやAtomAPI関連のニュースや仕様へのリンク]
» [RSS 2.0 と Atom 1.0 の比較]

4章 AtomAPIの利用法

AtomAPI対応ツールの紹介 -コードを書かない利用法

 

ここでは,肩の力を抜いて,AtomAPIを利用した便利なツールや面白いツールを紹介したいと思います.

Blog Pet 「こうさぎ」

「こうさぎ」とは,ウェブログ界隈で爆発的な人気を誇る,非常に面白いサービスです.ウェブログを持っている人なら,自分のウェブログのサイドバーに動き回る「こうさぎ」を飼育することが出来ます.ただ単に可愛らしいこうさぎがウェブログに表示されるだけではなく,ウェブログの記事をRSSを通して取得して,言葉を覚え,たどたどしく言葉をしゃべるのです.いわゆる人口無能を応用した機能です.
 こうさぎをクリックすると,可笑しなことを叫んだり,似た自分のウェブログと関連したウェブログを見つけて教えてくれます.アクセス解析をしてくれるなど,お馬鹿なことを言うわりに以外に賢い側面もあります.
 さらに,XML-RPCやAtomAPIに対応したウェブログでは,こうさぎが投稿してくれます.自分が書いた記事に,こうさぎがツッコミをいれるなど,面白いウェブログをよく見かけたりします.
 このこうさぎによる投稿も,AtomAPIを通して行なわれています.

 
設置
 

こうさぎの設置は非常に簡単です.こうさぎのウェブサイト(http://cousagi.yomiusa.net/)にアクセスしてアカウントを作成し,こうさぎに名前をつけ、自分のウェブログの情報を入力します.
 もしLivedoor Blogを利用している場合は,XML-RPCではなく,AtomAPIを使いますので,「Blogのmt-xmlrpc.cgiのURL」とある所には,AtomAPIのエンドポイントURIを入力します.

そして生成されたJavascriptを自分のウェブログのHTMLに貼り付けると作業は終了です.

 
 

自分のウェブログにこうさぎが表示されているのを確認したら,こうさぎをクリックしてみましょう.きっと何か面白いことを言ってくれるます.あとは,ウェブログに記事を書いて,こうさぎが投稿してくれるのを待つだけです.

「Blog Pet こうさぎ」
http://cousagi.yomiusa.net/

Blogエディタ「BlogWrite」

 

BlogWriteBlogWriteは,ウェブログの投稿や編集を支援するクライアントソフトです.ウェブログの良い点の一つは,ブラウザから投稿や編集が出来るのというものではありますが,書いている途中に間違えてブラウザを閉じてしまったり,戻るボタンを押したりして,せっかく書いた記事が消えてしまった,という事が起こります.経験した事がある方も結構いらっしゃると思いますが,BlogWriteのようなクライアントソフトを使うとそのような心配はありません.
 Blogエディターやクライアントと呼ばれるこの種のツールは,MovableTypeやBloggerがウェブ上のフォームを使って入力するのとは異なり,WindowsやMac上で動くアプリケーションです.

 
 ウェブ上のMovableTypeなどのツールと通信を行ない,記事の作成や編集を行なうのが,BlogWriteのような,Blogクライアントソフトです.その通信にAtomAPIつまり,「Atom Publishing Protocol」を用います.Windows上でうごく「BlogWrite」はXML-RPCとAtomAPIという二つの種類の通信規格に対応していますので,非常に幅広いサービスと連携して利用する事が出来ます.
 BlogWriteの主な特徴は,

 メモ帳感覚で書ける
 バックアップを保存する
 WYGIWYS編集とHTMLエディタ
 複数のウェブログを管理
 画像の挿入やリサイズが簡単

 WYSIWYG(What You See Is What You Get:見たままの結果を得られる)編集と言って,ワードで文字修飾を追加したりすることが出来るので,HTMLを意識することなく,ウェブログの記事を書くことが出来ます.最近は企業などでもウェブログを活用する,いわゆるビジネスブログが広まっていますが,HTMLやCSSを勉強する時間のない,ホームページ担当者でもBlogWriteを使えばHTMLもウェブログであることさえも意識せずに,ワープロ感覚でウェブログを更新することが出来るでしょう.
 さらに,BlogWriteではタグの補完や自動挿入機能などを備えた,色付けされたHTMLエディタを搭載しているのでHTMLになれたユーザでも便利に使えます.

「BlogWrite」
http://www.witha.jp/BlogWrite/

BlogWriteを使う

BlogWriteには,無料版のBlogWrite Freeとシェアウェア版のBlogWriteがあります.ここでは,無料版のBlogWriteを使って,ウェブログに記事を投稿する方法をご紹介します.技術者ではない,一般の利用者でも簡単に使えるように作られていますので,使い方は非常に簡単です.
 まず,BlogWrite Freeのインストーラを入手します.(http://www.witha.jp/BlogWrite/)インストールして実行すると,始めに設定の画面が表示されます.BlogWriteは,XML-RPCとAtomAPIに両方対応していますので,ここでも無料ですぐ利用できるLivedoor Blogを利用してAtomAPIで投稿してみましょう.

アカウントのセットアップ

BlogWrite
*覚えやすい任意のアカウント名を入力します.
*ツールタイプでLivedoor Blogを選択すると,必要な情報が自動的に設定されます.
「次へ」をクリックして,Livedoor Blogのユーザ名とパスワードを入力し「終了」をクリック.以上でアカウントの設定は完了です.

 
ログイン

アカウントのセットアップが終了すると,ログイン画面が出ます。ここからが設定後,BlogWriteを起動した時の通常の手順となります.ウェブログを複数登録する事も可能で,ここで先に名前をつけたウェブログのアカウント名を選択します.「Login」ボタンをクリックすると編集画面に移ります.

記事作成

 編集画面には,「本文編集」と「オプション」と「プレビュー」の三つのタブがありますが,とりあえず「本文編集」タブで,記事本文を入力します.そして忘れずにタイトルを入力して,「投稿&公開」ボタンを押すとウェブログが更新されます.

オプション
 

トラックバックPingやアップデートPingのURLを指定したりすることが出来ます.シェアウェア版では、これに加え,コメントやトラックバックの設定,日付時刻の指定などが出来ます.

その他のAtomAPI対応Blogクライアント

Blogエディタ「ecto」
 

ectoMacユーザに古くから定評のある「ecto」があります.ソフト自体は基本的には英語ですが,日本語も問題なく使用出来ます.海外製という訳ではなく,作者の方は実は日本に住んでいらっしゃいます.その「ecto」のWindows版として,開発者は別の方ですが,「ecto for Windows」が公開されています.こちらも,ソフトは英語ですが,両者共にメニューなどはほぼ日本語化されており,日本語も利用出来ます.両方ともシェアウェアですが,XML-RPCとAtomAPIの両方がサポートされており,どちらのソフトでも簡単にウェブログを更新する事が出来ます.興味のある方は一度試してみてはいかがでしょうか.

 

「ecto for Mac OS X」
「ecto for Windows」
http://ecto.kung-foo.tv/

携帯Atomクライアント「MobileAtom」
 

MobileAtomMobileAtomは,Java(J2ME)による携帯アプリのAtomAPI実装サンプルです.携帯からウェブログを更新します.もちろん,投稿だけでなく,編集,削除もサポートしています.
 MobileAtomのウェブサイトには(英語ですが),画像付きの詳しい解説が公開されており,完全なソースコードがダウンロード出来ます.日本の携帯では動かないかもしれませんが,MobileAtomはXML Webサービスの仕様であるSOAPを一部で利用していますので,AtomAPIのSOAPバージョンの実装に興味のある方は,こちらをご覧になると良いかと思います.

 

「MobileAtom J2ME」
http://franklinmint.fm/2004/09/27/mobile_atom.html

ライブラリを利用したAtomAPIの使い方

PerlでAtomAPIを使う

 

AtomAPIを利用したアプリケーションを作るには,AtomAPIの仕様をすべて知っていなければならない,という訳ではありません.ライブラリやモジュールとして,利用しやすい形で提供されているものを活用しましょう.

XML::Atom Perl モジュール
 

Perlでは,CPANに登録されているXML::Atomというモジュールを利用する事が出来ます.
これは,MovableTypeとTypePadを開発した、Benjamin Trott氏が作成したモジュールで,実際にMovableTypeやTypePadのシステムでも利用されています.XML::Atomには,Atomフィードを扱うXML::Atom::Feed や,AtomAPIのクライアント用のXML::Atom::Client ,さらにAtomAPIのサーバXML::Atom::Serverの実装スケルトンも含まれています.開発者は,これらのモジュールを用いて簡単に,アプリケーションを構築することが出来ます.
現在の最新バージョンは、0.09 で,http://search.cpan.org/dist/XML-Atom/から入手する事が出来ます.

準備
 

XML::Atom::Clientを使う簡単なAtomAPIクライアントのサンプルを作成して,AtomAPIに対応しているLivedoor Blogに投稿してみましょう.このPerlモジュールを使うと,AtomAPIの細かい仕様を意識する事なく,簡単にパワフルなクライアントを作成する事が出来ます.
 このモジュールは,CPANからダウンロードする事が出来ます.XML::Atomをインストールしても,動かすにはさらに幾つかのPerlモジュールが必要となります.もしすべてを手作業でインストールするのが面倒な場合は,MovableTypeのインストールパッケージに含まれる,extlibというディレクトリを,ライブラリの検索パスに含めてしまうという手があります.
 Perlがモジュールを探索するディレクトリの一覧は、@INCという配列に入っていますので,とりあえず,スクリプトの二行目以降に,

BEGIN {
 unshift @INC, '/srv/www/cgi-bin/mt/extlib';
}
などとして,MTが利用している外部ライブラリを丸ごと検索パスに追加してしまいましょう.

ウェブログの情報を取得
 

まず,第3章で解説したように,ウェブログの情報を取得するために,エンドポイントURIというのを知る必要があります.Livedoor Blogでは, 固定で,
http://blog.livedoor.com/atom
です.その他のTypePad系(OCNのブログ人やNiftyのココログ等)のシステムでは異なりますので,別途ご確認ください.
まず,ウェブログの情報を取得します.

[atomGetBlog.pl]
#!/usr/bin/perl -w
use strict;
use XML::Atom::Client;

my $EndPointURI = "http://blog.livedoor.com/atom"; #エンドポイントURI

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

my $feed = $api->getFeed($EndPointURI);

if ($feed) {
print $feed->as_xml;
} else {
print $api->errstr;
}

 XMLの情報が返りますので,第3章で解説したように,ウェブログ特定し,以下の部分からEditURIを取得ます.
<link xmlns="http://purl.org/atom/ns#" type="application/x.atom+xml" rel="service.post" href="http://blog.livedoor.com/atom/blog_id=*****" title="****" />

 PerlでのXML処理は様々な方法があります.PerlでそれらXMLを処理するパーサやDOM,関連するモジュールについて解説するのは本稿の範囲を逸脱するので割愛しますが,Perlのモットーは"There is more than one way to do it."つまり,幾とおりもの方法がありますので,一番自分にあった方法を選択することが出来ます.

■投稿
 では,実際に投稿するスクリプトを作成して見ましょう.必要なのは,Livedoor Blogのユーザ名とパスワード,そして,エンドポイントから取得した,ウェブログのPostURIです.
  AtomPost.plを参考に必要な個所を書き換えて実行して見てください.

[AtomPost.pl]
#!/usr/bin/perl -w
use strict;
use XML::Atom::Client;
use XML::Atom::Entry;

my $PostURI = 'http://blog.livedoor.com/atom/blog_id=****'; #****をPostURIに差し替える.

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

my $entry = XML::Atom::Entry->new;
$entry->title('New Entry'); #記事のタイトル
$entry->content('Hello World!'); #記事の内容

my $EditURI = $api->createEntry($PostURI, $entry);

print "$EditURI\n";

 非常に簡単に投稿できるのがお分かりでしょうか?ウェブログのページを確認すれば,新しい記事が追加されているのを確認できると思います.
 AtomPost.plを実行すると,ウェブログで新しく記事が作成され,それが成功すると,その記事のEditURIが返ります.このアドレスを用いて,後で編集したり,削除したりする事が出来ます.

編集
 

記事の作成で取得したEditURIを用いて,記事を上書き編集して見ましょう.

[AtomUpdate.pl]
#!/usr/bin/perl -w
use strict;
use XML::Atom::Client;
use XML::Atom::Entry;

my $EditURI = "http://blog.livedoor.com/atom/blog_id=***/entry_id=****"; #EditURI

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

my $entry = XML::Atom::Entry->new;
$entry->title('update'); #変更した記事のタイトル
$entry->content('new contents'); #変更した記事の内容
$entry->issued('2004-11-10T00:12:34Z'); #記事の作成日時

my $result = $api->updateEntry($EditURI, $entry);

  AtomUpdate.plを実行すると,記事を新しい内容で書き換えます.ここでは,さらに作成日時も指定していますので,新しい日付に更新されます.

削除
 

記事の作成で取得したEditURIを用いて,記事の削除も行なえます.

[AtomDelete.pl]
#!/usr/bin/perl -w
use strict;
use XML::Atom::Client;

my $EditURI = "http://blog.livedoor.com/atom/blog_id=***/entry_id=****"; #EditURI

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

$api->deleteEntry($EditURI);

 AtomDelete.plを実行すると,記事が削除されます.

TypePadのAtomAPI拡張を利用する
 

第3章でご紹介したTypePadでのAtomAPIの拡張はどのように利用するのでしょうか.TypePadのAtomAPI仕様書に,XML::Atomを利用したサンプルがそれぞれ載っています.
 つまり,XML::Atomを使えば,名前空間を利用して独自に拡張した,AtomAPIにも対応出来るという事です.

その他の言語・開発環境

WSDL
 

WSDLとは,Web Services Description Languageの略で,WSDLで記述したXML文書のことをWSDL文書と呼びます。最近の統合開発環境に付属するツールには,WSDL文書を読み込ませることによって、Webサービスを呼び出すためのインターフェースコードを自動生成してくれるものがあります。
 AtomAPIには,第3章で触れたように,RESTバージョンとSOAPを使う二つのタイプがあります.つまり,AtomAPIは一般に言われるXML Web サービスでもあるわけですから,WSDLに対応した開発環境において,WSDLを読み込ませれば,AtomAPIを利用するための基本的なコードが自動で生成されます.
 Javaの開発環境やMicrosoft社のVisualStudio,Borland社のDelphi等では,実際にWSDLに対応していますのでお試しください.手元のDelphiでは,自動的に各種クラスとメソッドが自動的に生成されています.

「AtomAPI in WSDL」
http://www.kbcafe.com/iBLOGthere4iM/atom3.1.wsdl(動作確認)
http://www.kbcafe.com/iBLOGthere4iM/AtomApi.0.3.0.wsdl(最新版)
「Documented WSDL」
http://www.kbcafe.com/iBLOGthere4iM/?guid=20040614174016

「isoTope」
「isoTope」は,PHPで書かれた,AtomAPIのためのウェブアプリケーションのフレームワークです.
http://www.isolani.co.uk/projects/atom/isoTope/

「Atomenabled - Developer Tools」
Atomを扱うための各開発環境用のライブラリ一覧
http://www.atomenabled.org/everyone/atomenabled/index.php?c=7

[番外編:マニュアルに記載されていないMovableTypeでのAtomAPIの利用方法]

インストール型ウェブログのツールとして圧倒的な人気を誇るMovableTypeですが,現在のバージョン(3.01)では,AtomAPIをサポートしていますが,利用する上で注意しなければならない点が幾つかあります.

認証用トークン

 

MovableTypeでは,セキュリティを確保するため,パスワードを復帰不可能な方法で暗号化し,サーバに保存しています.現在のAtomAPIの認証方法では素のパスワードを用いて比較しなければならないため,MovableTypeでAtomAPIを利用する際は,通常のパスワードの代わりに,特別なキーを用いなければなりません.具体的には,MovableTypeの管理メニュー「プロフィールの編集」画面にある,「Atom API 認証用トークン」というものを使います.これが,AtomAPIを使うときのパスワード代わりになります.
 また,認証情報を生成する時に,ローカルの現在時刻を利用し,認証情報の盗用を防ぐために,一定時間をすぎた認証情報を無効とする機能があります.これが幾分厳しく設定されているのか,パソコンの時間が多少狂っていると,AtomAPI利用時に認証エラー(エラーコード:403 X-WSSE UsernameToken timed out)となって認証をパス出来ない事があります.その場合は,パソコンの時間を正確に合わせるまたは,サーバ機の時間を正確に合わせる事によって解決する事が出来ます.

エンドポイントURI

 

さらに,これもマニュアル等には記述がありませんが,MovableTypeでのエンドポイントは,

http://ドメイン/mtへのパス/mt-atom.cgi/weblog/

です.AtomAPIに対応したソフトウェアやスクリプトが始めにウェブログの情報を取得するのは,このアドレスとなります.

 

これら以外にも,一般のレンタルホスティングのサーバを利用する際に問題となる点があり,レンタルサーバにAtomAPIを動かすのに必要なPerlのモジュールが入っていない,といったケースが残念ながら多く見かけられます.このため,AtomAPIで通信を行なうとエラーが返る事があります.MovableTypeでは今の所このような問題がありますが,これはAtomAPIの仕様によるものでもありますので,今後に期待できると言って構わないと思います.MovableTypeはXML-RPCにも対応していますから,当座はXML-RPCを利用する事が出来るでしょう.

まとめ

 

Perlのモジュールを利用した場合,実際のXMLや通信を意識しないで非常に楽に実装できます.もちろん,XMLとHTTPですから,どのような言語を使用しても実装は可能です.余裕があればあなたのお使いの言語でAtomAPIを利用するためのライブラリを作成されてみるのはいかがでしょうか.