ねぎ嫌い

始業前に学んだことを小出しに。最近はHacker Newsの人気記事をまとめてみたり。

ATOMって何

ATOMって?

ATOMとはAtom syndication FormatのことでXMLフォーマットのひとつ。
RSSの標準フォーマットとして策定された。
フィードの目的だけでなく検索エンジンや写真管理にも利用できるらしい。

リソースモデル

構成要素は、
メンバリソースと
コレクションリソースに分かれる。

メンバリソース

Atomにおける最小単位。
ブログならば1つの記事。
写真管理ならば1つの写真がメンバリソースに値する。

メンバリソースの中には、
エントリリソースと
メディアリソースが存在する。

エントリリソース

エントリリソースはブログの本文と、
それに対応するタイトルや日時などがまとまっているテキストやXMLを指す。

メディアリソース

エントリリソース以外の、
画像や映像などのバイナリデータを指す。

コレクションリソース

複数のメンバリソースを含む。
コレクションリソースは再帰的に持つことは出来ない。
フィードと呼ばれる。

メディアタイプ

MIMEタイプ

基本的には下記のように記す。

Content-Type: application/atom+xml

エントリやフィードであることを明示する場合は、

Content-Type: application/atom+xml; type=entry;
Content-Type: application/atom+xml; type=feed; charset=utf-8

のようにする。

拡張子

明示的にAtomを宣言する場合は、URIに.atomを付ける。

名前空間

http://www.w3.org/2005/Atom

Atomで定義する要素はこの名前空間に属する。

エントリ

エントリリソースの表現。
下記のようにメタデータと内容がフラットに並ぶ。

<entry xmlns="http://www.w3.org/2005/Atom">
	<id>tag:example.jp,2014-07-24,entry:1234<id>
	<title>サンプルタイトル</title>
	<updated>2014-07-24T09:13:54Z</updated>
	<link href="http://example.jp/1234" />
	<content>サンプルコンテント</content>
	<author>
		<name>anizozina</name>
		<url></url>
		<email></email>
	</author>
</entry>

メタデータ

Atomが定義してるエントリのメタデータは以下。

ID
<id>

要素はエントリを一意に示すURI形式のID。
httpスキームのURIも利用出来るが、一般的にはtagスキームが使われるらしい。
tagスキームの構成は次のようになる。

tag:{$DNS名orメールアドレス},{日付},{任意の文字列}

DNSまたはメールアドレスと日付によってグローバルで一意になることを保証する。
日付以降は[:]で区切れば任意の文字列を入れられる。

タイトルと概要

<title>

要素はエントリの題名を示し、必須の項目となる。
エントリの概要を示す

<summary>

要素も存在する。
両要素は、type属性として[text][html][xhtml]を持つ。
例えば下記のように。

<entry xmlns="http://www.w3.org/2005/Atom">
	<title>サンプルタイトル</title>
	<summery type="xhtml">
		<div xmlns="http://www.w3.org/1999/xhtml">
			<p>このエントリは<b>サンプル</b>です</p>
		</div>
	</summery>
	...
</entry>

著者と貢献者

<author>

要素は著者を示し、エントリには必須の項目となる。
貢献者を示す、

<conrtibutor>

要素もある。
両要素とも、

  • name 要素(必須)
  • url 要素
  • email 要素

を持つ。

公開日時と更新日時

<updated>

要素は更新日時を示し、必須となる。

<published>

要素は公開日時を示す。
両要素とも、RFC3339で既定されている。

カテゴリ

<category>

要素はそのエントリの属するカテゴリを示す。
この要素には、term属性が必須となり、
そのほかにscheme属性とlabel属性を持つことが出来る。

<entry xmlns="http://www.w3.org/2005/Atom">
	<category term="animals" label="動物"
		scheme="http://emxample.jp/tags" />
</entry>

scheme属性はそのタグを識別するためのURI
label属性はアプリケーションが表示するためのラベル。

リンク

<link>

要素はリンクを示す。
この要素には、
必須属性でリンク先のURIが入るhref属性と
リンク関係を表現するrel属性、
リンク先のリソースの言語タグを示すhreflang属性を持つ。
リンク関係は5つ定義されており、

  • alternate

デフォルト値

  • self

エントリ/フィード自身のURI

  • enclosure

添付ファイルへのリンク

  • related

関連するリソースへのリンク

  • via

情報元リソースへのリンク

<link rel="enclosure" type="autio/mpeg" length="489822"
  href="http://~~~~~~" title="sample" />

とりあえずここまで。
頭に入らない。