RSS 2.0 Specification 日本語訳

本ドキュメントは、Weblogs At Harvard Law (ハーバード大学法学大学院のウェブログ)で公開されている 『RSS 2.0 Specification』 を futomi が日本語化したものです。みなさまの理解に役立てれば幸いです。なお、緑色で記載された文章は、futomi が注釈として加筆したものです。また、一部、直訳ではなく、意訳した部分がございます。原文と表現が異なることがございますので、ご了承ください。

注意: この日本語訳は、futomi が理解を深めるために、自分なりに日本語化したものです。本日本語訳には、翻訳上の誤りがある可能性があります。したがって、内容について一切保証をするものではありません。正確さを求める場合には、必ず原文を参照してください。当方は、この文書によって利用者が被るいかなる損害の責任を負いません。

もし誤りなどを見つけたら、こちらからご連絡いただければ幸いです。


RSS 2.0 Specification

目次

RSS って何?

RSS とは、ウェブコンテンツのシンジケートフォーマット のことです。

原文では syndication や syndicate という用語が使われております。RSS 関連の日本語文献では、"同時配信" と表現されているのを良く見かけます。ただ、実際にはマルチキャスト技術のように能動的にコンテンツを配信しているわけでありません。また、この単語に対する適切な日本語もないため、本日本語訳では "シンジケート" とそのまま表記することにします。

その名前は、Really Simple Syndication の頭文字をとったものです。

RSS は、XML の派生です。すべての RSS ファイルは、XML 1.0 の仕様に準拠しなければいけません。XML 1.0 の仕様は、World Wide Web Consortium (W3C) で公開されています。

RSS バージョン履歴 の要約

RSS 文書のトップレベルは、version という必須属性をもった <rss> 要素となります。その文書が準拠する RSS のバージョンを指定します。この仕様に準拠する文書であるなら、version 属性は 2.0 でなければいけません。

<rss> 要素の下位属性は、単一の <channel> 属性となります。<channel> 属性は、そのチャネル(メタデータ)とそのコンテンツに関する情報を含むものです。

サンプルファイル

サンプルファイルはこちらから : RSS 0.91, 0.92, 2.0

サンプルファイルは、すでになくなってしまった文書やサービスを指し示しているかもしれまんので、ご了承下さい。0.91 のサンプルは、0.91 の仕様書が書かれた時点で作成されたものです。サンプルの履歴を保存することは、得策かもしれません。

本文書について

本文書は、2002 年の秋発表のバージョン 2.0.1 の RSS を説明するものです。

このバージョンは、RSS 0.91 (June 2000) の基本仕様からのすべての変更と追加が盛り込まれています。そして、RSS 0.92 (2000 年 12 月) と RSS 0.94 (2002 年 8 月) で紹介された新機能を含んでいます。

改訂記録は、こちらをご覧下さい。

最初に我々は <channel> の必須子要素とオプション子要素について触れます。それから、<item> の子要素について触れます。最後の章では、良くある質問に答えます。そして、今後の進化のロードマップと拡張 RSS のガイドラインを提示します。

必須 channel 要素

下表は、必須 channel 要素のリストです。簡単な説明、用例、利用可能な場所、詳しい説明へのポインターを掲載しています。

要素 説明 用例
title チャンネル名です。それは、貴方のサービスへの参照方法です。もし貴方が、貴方の RSS ファイルと同じ情報を含む HTML ウェブサイトを持っているなら、貴方のチャンネルのタイトルは、貴方のウェブサイトのタイトルと同じであるべきです。 GoUpstate.com ニュースヘッドライン
link チャンネルに対応する HTML ウェブサイトへの URL http://www.goupstate.com/
description        チャネルの説明文 GoUpstate.com からの最新ニュース。スパータンバーグ ヘラルドジャーナルのウェブサイト

オプションの channel 要素

下表は、オプションの channel 要素のリストです。

要素 説明 用例
language チャンネルを記述している言語です。これにより、アグリゲータは、例えば、単一のページ上ですべてのイタリア語サイトと分類することができます。この要素で使える値のリストは、こちらをご覧下さい。Netscape によって提供されたものです。さらに、W3C によって定義された値も使うことができます。 en-us
copyright チャンネル内のコンテンツの著作権表示です。 Copyright 2002, Spartanburg Herald-Journal
managingEditor コンテンツ編集に携わった人の Email アドレスです。 geo@herald.com (George Matesky)
webMaster チャンネルに関する技術的な問題に責任を持つ人の Email アドレスです。 betty@herald.com (Betty Guernsey)
pubDate チャンネル内のコンテンツの発行日時です。例えば、New York Times が日次で発行するなら、発効日時は、24 時間に一度めくられます。それは、チャンネルの発行日時が変更になった時です。すべての RSS 内の日時は、RFC 822 で規定されている日時に準拠します。ただし、西暦を 2 文字で表現するかもしれないし、4 桁で表現するかもしれません。(4 桁が優先です。) Sat, 07 Sep 2002 00:00:01 GMT
lastBuildDate チャンネルのコンテンツが変更された最終日時です。 Sat, 07 Sep 2002 09:42:31 GMT
category チャンネルが属するカテゴリーを一つ以上指定します。<item> レベルの category 属性と同じルールが適用されます。詳細情報はこちらをご覧下さい。 <category>Newspapers</category>
generator チャンネルを生成するのに使われたプログラムを指し示す文字列です。 MightyInHouse Content System v2.3
docs RSS ファイルで使われているフォーマットを表す文書を指し示す URL です。それは、恐らくこのページへのポインターとなります。これは、今から 25 年間、ウェブサーバ上にある RSS ファイルを偶然見つけ、それはなんだろうと疑問に思うかもしれない人々のためにあります。 http://blogs.law.harvard.edu/tech/rss
cloud RSS フィード用のライトウェイトな配信予約プロトコルを使って、チャンネルへ更新を通知してもらうために、cloud に登録することができます。詳細情報はこちらをご覧下さい。 <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/>
ttl ttl は、time to live (有効期間)の略語です。それは、ソースからリフレッシュする前に、どれだけの期間、チャンネルをキャッシュすることができるかを指し示す分数です。詳細情報はこちらをご覧下さい。 <ttl>60</ttl>
image チャンネルと一緒に表示可能な GIF, JPEG, PNG 画像を指定します。詳細情報はこちらをご覧下さい。
rating チャンネルの PICS レーティングです。
textInput チャンネルと一緒に表示表示可能なテキスト入力ボックスを指定します。詳細情報はこちらをご覧下さい。
skipHours アグリゲータは何時にスキップすることができるかを伝える暗示です。詳細情報はこちらをご覧下さい。
skipDays アグリゲータは何曜日をスキップすることができるかを伝える暗示です。詳細情報はこちらをご覧下さい。

<image> : <channel> の子要素

<image> は、オプションの <channel> 子要素で、3 つの必須要素と 3 つのオプション要素を含みます。

<url> は、チャンネルを表す GIF, JPEG, PNG 画像の URLです。

<title> は、イメージを説明します。チャンネルが HTML で表示される際に、HTML <img> タグの ALT 属性で使われます。

<link> は、チャンネルが表示され、画像がそのサイトへリンクされる際に使われる、そのリンク先 URL です。(実際面では、image の <title> と <link> は、channel の <title> と <link> と同じ値になるべきです。)

オプション要素は、<width> と <height> です。これらは、ピクセルで表した画像の幅と高さを表す数字です。<description> は、HTML 表示の際に画像のリンクの TITLE 属性のテキストとなります。

width の最大値は 144 です。デフォルト値は 88 です。

height の最大値は 400 です。デフォルト値は 31 です。

<cloud> : <channel> の子要素

<cloud> は、<channel> のオプション子要素です。

この要素は、HTTP-POST, XML-RPC, SOAP 1.1 で実行できる rssCloud インタフェースをサポートするウェブサービスを指定するものです。

この要素の目的は、RSS フィード用のライトウェイトな配信予約プロトコルを使って、チャンネルへ更新を通知してもらうために、cloud に登録することです。

<cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="myCloud.rssPleaseNotify" protocol="xml-rpc" />

この例では、それが現れるチャンネルでの通知をリクエストするために、XML-RPC メッセージを、port 80 で、パスを /RPC2 と指定して、rpc.sys.com に送信します。呼び出すプロシージャーは、myCloud.rssPleaseNotify です。

この要素と rssCloud インタフェースの完全な説明は、こちらをご覧下さい。

<ttl> : <channel> の子要素

<ttl> は、<channel> のオプション子要素です。

ttl は、time to live を意味します。ソースからリフレッシュする前に、どれだけの期間、チャンネルをキャッシュすることができるかを指し示す分数です。これは、RSS ソースが Gnutella のようなファイル共有ネットワークによって管理されることを可能にします。

例: <ttl>60</ttl>

<textInput> : <channel>の子要素

チャンネルは、<textInput> 子要素をオプションで持つことができます。これは 4 つの必須子要素を含んでいます。

<title> -- テキスト入力エリアの Submit ボタンのラベル

<description> -- テキスト入力エリアの説明

<name> -- テキスト入力エリア内のテキストオブジェクトの名前

<link> -- プロセスがテキスト入力をリクエストする CGI スクリプトの URL

<textInput> 要素の目的は、少々謎めいています。検索エンジンボックスを特定するためにそれを使うことができます。または、読者にフィードバックしてもらうためにも使えます。殆どのアグリゲータはそれを無視します。

<item> 要素

チャンネルには、どれだけ <item> 要素を含めても構いません。item は新聞や雑誌にあるような "記事" を表すかもしれません。、description が記事の粗筋だとしたら、link は全記事を指し示します。description がテキスト(エンティティーエンコードされた HTML が使えます。をご覧下さい。)を含んでいるなら、その item はそれ自身で完結するかもしれません。そして、link と title は省略されるかもしれません。item のすべての要素はオプションです。しかし、title か description のいずれかは存在しないといけません。

Element Description Example
title 記事のタイトルです。 ヴェネチア映画祭は人気復活となるか?
link 記事の URL です。 http://www.nytimes.com/2002/09/07/movies/07FEST.html
description      記事の粗筋です。 今週開催されたヴェネチア映画祭で一番熱かった話題は、主人公達が Palazzo del Cinema に到着したときの演出の方法についてでした。
author 記事の著者の Email アドレスです。詳細はこちらをご覧下さい。 oprah@oxygen.net
category 一つ以上のカテゴリー内に記事を含みます。詳細はこちらをご覧下さい。 Simpsons Characters
comments 記事に関連するコメントのページ URL です。詳細はこちらをご覧下さい。 http://www.myblog.org/cgi-local/mt/mt-comments.cgi?entry_id=290
enclosure 記事に添付されるメディアオブジェクトを記述します。詳細はこちらをご覧下さい。
guid 記事を一意に特定できる文字列です。詳細はこちらをご覧下さい。 <GUID isPermaLink="true"> http://inessential.com/2002/09/01.php#a2 </GUID>
pubDate 記事が発行された日時を表します。詳細はこちらをご覧下さい。 Sun, 19 May 2002 15:21:36 GMT
source 記事が引用された RSS チャンネルです。詳細はこちらをご覧下さい。 <SOURCE url="http://www.quotationspage.com/data/qotd.rss"> Quotes of the Day </SOURCE>

<source> : <item> の子要素

<source> は <item> のオプション子要素です。

この値は、その記事が引用している RSS チャンネルの名前で、その <title> から引用されます。この要素には、必須属性が一つだけあります。それは url ですが、引用元の XML 化されたものにリンクします。

<source url="http://static.userland.com/tomalak/links2.xml">Tomalak's Realm</source>

この要素の目的は、引用元の評判を広め、ニュース記事の引用元を公にするためです。それは、アグリゲータの Post コマンドで使われることができます。それは、アグリゲータからウェブログオーサリングツールへ記事を転送する時、自動的に生成されるべきです。

<enclosure> : <item>の子要素

<enclosure> は <item> のオプション子要素です。

この要素は、3 つの必須属性を持ちます。url は、エンクロージャーが位置する場所を指します。length は、それのサイズが何バイトなのかを差します。type は、それのタイプ、つまり、標準 MIME タイプを表します。

url は、http url でなければいけません。

<enclosure url="http://www.scripting.com/mp3s/weatherReportSuite.mp3" length="12216320" type="audio/mpeg" />

この要素の利用例は、こちらをご覧下さい。

<category> : <item> の子要素

<category> は <item> のオプション子要素です。

それは、一つのオプション属性を持ちます。domain です。分類法を識別する文字列です。

要素の値は、指し示された分類法で階層的な場所を識別するスラッシュ記号で分割された文字列です。プロセッサーは、カテゴリーの解釈のために、規定を制定するかもしれません。以下に 2 つの例を示します。

<category>Grateful Dead</category>

<category domain="http://www.fool.com/cusips">MSFT</category>

貴方は、異なる domain のために、そして、同じドメインの違う部分で相互参照された記事を持つために、貴方が必要とするのと同じだけ多くの category 要素を含めても構いません。

<pubDate> : <item> の子要素

<pubDate> は <item> のオプション子要素です。

その値は、記事が発行された時を指し示す日時です。それが未来の日時であれば、アグリゲータはその日時まで記事を表示しなくても構いません。

<pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>

<guid> : <item> の子要素

<guid> は <item> のオプション子要素です。

guid は、globally unique identifier の略語で、記事を一意に識別する文字列です。guid が存在したら、アグリゲータは、この文字列を再審記事かどうかの判定に使っても構いません。

<guid>http://some.server.com/weblogItem3207</guid>

guid の構文のルールは全くありません。アグリゲータは、文字列としてそれらを見なければいけません。文字列の一意性の確立は、フィード側の責任です。

もし guid 要素が "isPermaLink" と名づけられた属性を持ち、その属性値が真の値("true")なら、リーダーは、それは記事への永久リンクであり、ウェブブラウザーで開ける URL であり、<item> 要素によって説明されている全記事を指し示しているとみなして構いません。例です。

<guid isPermaLink="true">http://inessential.com/2002/09/01.php#a2</guid>

isPermaLink はオプションです。そのデフォルト値は真(true)です。もしその値が偽(false)なら、guid を、特に何かを指し示すような url とみなしてはいけません。

<comments> : <item> の子要素

<comments> は <item> のオプション子要素です。

もし存在するなら、それは記事に対するコメントページの URL です。

<comments>http://rateyourmusic.com/yaccs/commentsn/blogId=705245&amp;itemId=271</comments>

comments に関して詳細情報はこちらをご覧下さい。

<author> : <item> の子要素

<author> は <item> のオプション子要素です。

この要素は、記事の著者の Email アドレスです。RSS を通した新聞や雑誌のシンジケートにとっては、著者とは <item> が説明している記事を書いた人です。合作のウェブログにとっては、記事の著者は、編集長やウェブマスターとは違うでしょう。一人の個人で編集されたウェブログにとっては、著者は <author> 要素を省略することは理にかなっているでしょう。

<author>lawyer@boyer.net (Lawyer Boyer)</author>

コメント

RSS は、<link> と <url> 要素内のデータの最初のホワイトスペースでない文字に制限を課します。これらの要素内のデータは、IANA で登録されている URI スキームで始まっていなければいけません。例えば、http://, https://, news://, mailto:, ftp:// です。RSS 2.0 より前のバージョンでは、http:// と ftp:// だけを許可していました。しかし、実際のところ、他の URI スキームがコンテンツ開発者によって使われ、アグリゲータによってサポートされてしまいました。アグリゲータは、彼らがサポートする URI スキームに限定していたかもしれません。コンテンツ開発者は、すべてのアグリゲータがすべてのスキームをサポートすると仮定してはいけません。

RSS 0.91 では、さまざまな要素が 500 もしくは 100 文字に制限されました。0.91 では、 <channel> 要素内に 15 個以上の <items> 要素を入れることはできません。RSS 0.92 以降では、文字長や XML レベルでの制限事項は撤廃されました。プロセッサーは、自ら制限を課すかもしれません。そして、ジェネレータは、たかだか特定の数の <item> 要素が channel 要素内に現れうるという、もしくは、文字列は長さが限定されているという、好き嫌いがあるかもしれません。

前述の通り、RSS 2.0 では、channel レベルのカテゴリー機能を使うことで、カタログシステムにおいてチャネルをその識別子へリンクするための準備がなされました。例えば、Syndic8 識別子へチャンネルをリンクするなら ドメイン "Syndic8" を使って、<channel> 要素の子要素として category 要素を含めるのです。そして、Syndic8 データベース内の貴方のチャネル用の識別子を重視するのです。Scripting News のための適切な category 要素は、<category domain="Syndic8">1765</category> となるでしょう。

<guid> に関するよくある質問は、それらをどうやって <link> と比較するのかということです。それらは、同じものですか? いくつかのコンテンツシステムでは、"はい" ですし、それ以外では "いいえ" です。いくつかのシステムでは、<link> はウェブログの記事への永久リンクです。しかし、他のシステムでは、各 <item> は、より長い記事の粗筋なのです。<link> は記事を指し示し、<guid> はウェブログエントリーへの永久リンクを指し示すのです。すべてのケースにおいて、あなたが guid を提供することが推奨されます。そして、もし可能なら、それを永久リンクにして下さい。こうすれば、たとえ記事が変更編集されたとしても、アグリゲータは記事を繰り返さなくてもすむようになるのです。

もし、貴方が RSS 2.0 に関して疑問をお持ちなら、RSS2-Support メーリングリストに投稿して下さい。このメーリングリストの主催者は、Sjoerd Visscher です。これは、ディベートリストではありません。しかし、RSS 2.0 フォーマットでコンテンツを生成したり使ったりするユーザ、著者、開発者のためのサポート情報源として提供するものです。

拡張 RSS

RSS は 1999 年に産声を上げ 、単純で易しいフォーマットという、どちらかというと控えめな目標を目指してきました。RSS がポピュラーなフォーマットになってから、開発者は、W3C で規定されているように、名前空間で定義されたモジュールを使って RSS を拡張したくなりました。

RSS 2.0 は、単一のルールに従って、機能が加わっています。RSS フィードは、このページで説明されていない要素を含んでいるかもしれません。ただし、それらの要素が名前空間で定義されている場合に限っているのです。

本文書で定義されている要素は、それら自身は名前空間の一部ではありません。つまり、RSS 2.0 は次に示す意味で、以前のバージョンと互換性を保ったままにすることができるということです。それは、バージョン 0.91 または 0.92 のファイルは、妥当な 2.0 ファイルでもあるということです。もし RSS 2.0 の要素が名前空間にあれば、この制約は破綻してしまい、バージョン 0.9x ファイルは妥当な 2.0 ファイルではなくなってしまいます。

ロードマップ

RSS は、決して完璧なフォーマットではありません。しかし、それは非常にポピュラーで広く使われています。仕様が固定されていることが、RSS が長い間必要とされてきた重要なポイントだったのです。この作業の目的は、それが普遍的なものになるよう手助けし、それにかかわる開発市場での成長を助成し、新しいシンジケーションフォーマットで革新するための道のりを明確にすることです。それゆえに、RSS 仕様は、すべての実用目的のために、バージョン 2.0.1 で凍結されます。我々は、フォーマットに新機能を追加するためではなく、仕様を明確にするためだけに、2.0.2 や 2.0.3 の可能性を見込んでいます。今後も引き続き、名前空間を使ったモジュールについて、そして新しい名前となる完全に新しいシンジケーションフォーマットについて、作業が継続されるでしょう。

ライセンスと原作者

RSS 2.0 は、Creative Commons license の "Attribution/Share Alike" の条件のもとで、ハーバード大学法学大学院の Berkman Center for Internet & Society によって提供されます。本文書の著者は Dave Winer です。彼は UserLand software の創立者で、Berkman Center の特別研究員です。

原文の "Attribution/Share Alike" の説明ページへのリンクは古いものになっています。"Attribution/Share Alike" は改訂され、現時点では、こちらのページに変更されています。http://creativecommons.org/licenses/by-sa/2.0/
尚、この日本語訳は、原文が条件とする Creative Commons license の Attribution (帰属)条項に従い、原文の二次著作物として作成されたものです。そして、Share Alike (同一条件承諾)条項に従い、原文と同等の条件が適用されます。