AtomPPとは


   RESTアーキテクチャスタイルを利用して設計されたWeb APIの汎用的な仕様として、AtomPPを見ていくことにしましょう。AtomPP(Atom Publishing Protocol)はかつてはAtom APIと呼ばれていたもので、有志によって開発が行われています。

   Atomというと、RSSと並ぶ情報配信フォーマットを思い浮かべる方もいるかもしれません。そちらはAtomの中でもAtom Feedと呼ばれるデータフォーマットです。Atomは、情報配信フォーマットであるAtom Feed、Atom Feedを自動的に発見するための仕様であるAtom AutoDiscovery、そしてAtomPPの3つの仕様で構成されています。

   AtomPPは、やり取りする情報としてAtom Feedのデータを利用します。AtomPPは現在まだ完成してはおらず、本稿執筆時のバージョンは0.9ですが、すでにAtomPPを利用したAPIも登場しています。例えば、はてなブックマークAPIでは、AtomPPを利用して、ブックマークを登録したりできます。また、Movable Type(TypePad)やBlogger、livedoor Blogは、AtomPPを利用したブログのエントリの取得や更新、削除に対応しています。さらに、GoogleがGoogle Calendarなどで利用しているGData(Google Data API)では、AtomPPの仕様を拡張し、RSSなどをAtom Feedの代わりにも利用できるようにしたものを採用しています。

   それではAtomPPの仕様を見ていくことにしましょう。AtomPPでのリソースは表5の3つに分類できます。
リソース意味
CollectionMemberをまとめたもの
Member個々の情報
Introspection Documentアクセス可能なCollectionの一覧

表5:AtomPPにおけるリソース

   ブログを例にとると、Memberが個々のブログのエントリ、Collectionはブログそのもの、Introspection Documentはアクセス可能なブログの一覧、ということになるでしょう。また、カテゴリもCollectionの1つということになります。ブログにエントリを追加する場合は、ブログ(Collection)のURIに対してPOSTメソッドでエントリのデータを送信することになります。同じブログのURIに対してGETメソッドでアクセスすれば、エントリの一覧が取得できます。

   そして個々のエントリの取得、編集や削除は、そのエントリのURIに対してGETやPUT、DELETEメソッドを利用してアクセスすることで可能になるわけです。

   例えばブログに新しいエントリを投稿するのであれば、そのブログのURI(Collection)に対して前ページのリスト16のようなAtom Feed形式のデータをPOSTで送信します。

リスト16:AtomPPでブログのエントリを登録する
<?xml version="1.0" ?>
<entry xmlns="http://www.w3.org/2005/Atom">
  <title>Blog Title</title>
  <id>121341341</id>
  <updated>2006-08-11T12:13:00Z</updated>
  <author><name>Taro Yamada</name></author>
  <content>ブログの内容</content>
</entry>

   AtomPPが正しくそのリクエストを受け取り、処理を終えた場合、レスポンスとして「201 Created」というレスポンスコードが返ってきます。そしてLocationヘッダーとしてMemberのURIが渡され、同時に作成されたMemberの情報がAtom Feedとして渡されます(リスト17)。

リスト17:Member作成の際のレスポンスデータ
HTTP/1.1 201 Created
Date: Fri, 11 Aug 2006 12:13:23 GMT
Content-Length: 332
Content-Type: application/atom+xml; charset="utf-8"
Content-Location: http://example.org/edit/121341341.atom
Location: http://example.org/edit/121341341.atom

<?xml version="1.0"?>
<entry xmlns="http://www.w3.org/2005/Atom">
  <title>ブログタイトル</title>
  <id>121341341</id>
  <updated>2006-08-11T12:13:00Z</updated>
  <author><name>Taro Yamada</name></author>
  <content>ブログの内容</content>
  <link rel="edit"
      href="http://example.org/edit/first-post.atom"/>
</entry>

   この後、作成されたMemberを参照したいときはMemberのURIに対してGETメソッドでアクセスをすればいいですし、削除したい場合はDELETEメソッドでアクセス、編集はPUTメソッドでアクセスして新しい情報を再びAtom Feedで渡すわけです。

   なお、MemberやCollectionといった呼び名は現在のAtomPPの最新の仕様に基づいています。古い仕様(バージョン0.3まで)では、アクセスするURIに基づいて、PostURIとFeedURI、EditURIという名前で呼ばれていました。PostURIとFeedURIはCollectionのURI、EditURIはMemberのURIに相当します。古い仕様を利用しているAPIでは、これらの呼び名が使われていることがあります。また、PostURI(POST用)とFeedURI(GET用)が異なるURIになっているケースもあります。

   ちなみにここでは触れませんが、AtomPPはSOAPを使うこともできる仕様になっています。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30