… RSS2.0  配信ページを作る

neko1sa.gif 横着者のRSS 2.0 配信ページの作成方法

昨今 RSS フィードリーダなる言葉を良く聞くようになりました。
何かと思えば、概要を配信するテキストのページのような・・・・・。試しにいろいろなブラウザで表示してみました。結構面白かったりして・・・

ということで、さっそく好奇心丸出しで作成にチャレンジしてみました。道具は横着者のサイトマップ作成方法の時のようにWindows付属のメモ帖でも、他のエディタでも、webページ作成用のツールでもなんでもかまわないと思います。
拡張子 .xml のファイルを作る事ができればそれでいいのですから。

RSS 2.0 Sample

まずサンプルを見てください。
RSS 2.0 at Harvard Law http://www.intertwingly.net/wiki/pie/Rss20AndAtom10Compared よりお借りしてきました。
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>

<title>Example Feed</title>
<description>Insert witty or insightful remark here</description>
<link>http://example.org/</link>
<lastBuildDate>Sat, 13 Dec 2003 18:30:02 GMT</lastBuildDate>
<managingEditor>johndoe@example.com (John Doe)</managingEditor>

<item>
<title>Atom-Powered Robots Run Amok</title>
<link>http://example.org/2003/12/13/atom03</link>
<guid isPermaLink="false">urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</guid>
<pubDate>Sat, 13 Dec 2003 18:30:02 GMT</pubDate>
<description>Some text.</description>
</item>

</channel>
</rss>



簡単な説明― channel 要素

まず、上記のサンプルでトップの2行は宣言文ですから、これは何も考えずにコピペします。

<?xml version="1.0"?>
<rss version="2.0">

上記の2行が基本のスタイルです。文字コードの指定はありません。自動になります。
これを強制的に utf-8 などに指定する場合は以下のようになります。

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">


次は XML 形式文書の最初の子オブジェクトになる <channel> 要素です。
channel要素は、RSS 2.0を配信する配信元となるサイトなどの情報を示す要素です。
この要素には次のようなオプションの定義づけができます。なお、以下の項目で * は必須項目です。

以下、このサンプルに出てくるオブジェクトや要素、オプションなどの簡単な説明です。

 <channel> 要素の主なオプション
  title    配信元となるサイトなどの名称を表記
  link   配信元となるサイトなどのURLを表記
 language    使用言語
 copyiright    著作権表記
 pubDate    配信元ファイルの最終更新日 ( RFC 822 フォーマット形式による)
 lastBuildDate    RSS 2.0ファイルの最終更新日 ( RFC 822 フォーマット形式による)
 webMaster  サイト管理人
 managingEditor  編集者へのEメールアドレス
 category  配信元の所属するカテゴリーをひとつ以上指定
 generator  RSS 2.0 ファイル作成に使用したツール名
 cloud  XML - RPC などを利用した更新通知サービスを利用する際に記述
 docs  RSSの内容を記述したドキュメントの URL (通常は、RSSファイルのある場所)
 ttl  キャッシュの有効期限
 rating  チャンネルのPICSレーティング
 skipHours  アグリゲータにスキップさせるアクセス予定時刻を記述
 skipDays  アグリゲータにスキップさせるアクセス予定曜日を記述
 textInput  入力用テキストボックスを指定
 image  GIF、JPEGまたはPNGイメージを指定
※ オプションはこの他にも多数あります。ここではよく使われるものだけを抜粋してあります。


ここまでで、最小の項目だけということになれば、以下のようになります。

<?xml version="1.0" encoding="utf-8"?>  ← 宣言1
<rss version="2.0">  ← 宣言2
<channel>  ← 子オブジェクト1( channel 要素)
<title>mrs.suzu841.com</title>  ← 配信元の名称
<description>雑多なサイトです</description>  ← 概要
<link>http://mrs.suzu841.com</link>  ← 配信元のURL


必須項目はこれだけですが、もう少し配信元の情報を付け加えてみませんか? 
せめて、使用言語とか、使用したツールとか、最終更新日くらいは記述してみたいとおもうのですが。

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>

<title>mrs.suzu841.com</title>
<description>雑多なサイトです</description>
<link>http://mrs.suzu841.com</link>
<language>ja</language>  ← 使用言語 ja (日本語)

<pubDate>Thu, 5 Jun 2008 19:36:28 +0900</pubDate>  ← 元ファイルの最終更新日
<lastBuildDate>Wed, 4 Jun 2008 19:11:42 +0900</lastBuildDate>  ← RSS 2.0 ファイルの最終更新日
<generator>秀丸エディタ Version 6.14</generator>  ← 使用したツールの名前
<webMaster>mrs@suzu841.com</webMaster>  ← サイト管理者のメールアドレス
<copyright>>Copyright (c) 2008, [mrs.suzu841.com 管理人]</copyright>  ← 著作権


配信されるファイルにこの位の配信元の情報があれば、なんとかなるかな? と思うのですが・・・
もちろん、これらの情報は必須ではないので、面倒であれば記述しなくてもいいのですが・・・。
ここまでがサイト全体の概要になります。

簡単な説明― item 要素

次は各ページの説明になります。
例えば、私のこの mrs.suzu841.com というサイトには、いろいろなページがあるわけです。 firefox のページとか、 OpenOffice 3 のページとか、サイトマップの作り方のページとか、散歩のページとか石けんとか、管理人の日々のぶちぶち日記のページとかあるわけです。それらの各ページについての情報を <item> 要素の中へ書いていきます。
ひとつのページがひとつの <item> 要素で完結します。
オブジェクト要素である <channel> の中で <item> 要素は、多数あります。



<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>

<title>mrs.suzu841.com</title>
<description>雑多なサイトです</description>
<link>http://mrs.suzu841.com</link>
<language>ja</language>
<pubDate>Thu, 5 Jun 2008 19:36:28 +0900</pubDate>
<lastBuildDate>Wed, 4 Jun 2008 19:11:42 +0900</lastBuildDate>
<generator>秀丸エディタ Version 6.14</generator>
<webMaster>mrs@suzu841.com</webMaster>
<dc:creator>mrs.suzu841.com 管理人</dc:creator>
<copyright>>Copyright (c) 2008, [mrs.suzu841.com 管理人]</copyright>

<item>

</item>


この <item> 要素にはいくつかのオプションがあります。

<item> 要素の主なオプション
 title   ページ( item )のタイトル
 link  ページ( item )のリンク先
 description    概要
 pubDate    ページの最終更新日 ( RFC 822 フォーマット形式による)
 enclosure  ページに添付してあるメディアコンテンツのURL
 comments  関連するコメントページがあればそのURL
 author  著者へのEメールアドレス
 category  カテゴリーをひとつ以上指定
 source  情報元のリンク URL
 guid  ページの識別ID(ユニークID )
※ guid には isPermaLink 属性を持たせることができます。
この場合属性値は "true" を指定する事によって、URL をIDとすることが出来ます。
例 : <guid isPermaLink="true">http://mrs.suzu841.com/rss</guid>


では、上の表の中から <title> , <link> , <guid> , <pubDate> , <description> を付け加えてみます。

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>

<title>mrs.suzu841.com</title>
<description>雑多なサイトです</description>
<link>http://mrs.suzu841.com</link>
<language>ja</language>
<pubDate>Thu, 5 Jun 2008 19:36:28 +0900</pubDate>
<lastBuildDate>Wed, 4 Jun 2008 19:11:42 +0900</lastBuildDate>
<generator>秀丸エディタ Version 6.14</generator>
<webMaster>mrs@suzu841.com</webMaster>
<copyright>>Copyright (c) 2008, [mrs.suzu841.com 管理人]</copyright>

<item>
<title>  </title>
<link>   </link>
<guid isPermaLink="true">   </guid>
<pubDate>   </pubDate>
<description><![CDATA[  ]]></description>
</item>




これを実際に私のサイトに当てはめてみると以下のようになります。

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>

<title>mrs.suzu841.com</title>
<description>雑多なサイトです</description>
<link>http://mrs.suzu841.com</link>
<language>ja</language>
<pubDate>Thu, 5 Jun 2008 19:36:28 +0900</pubDate>
<lastBuildDate>Wed, 4 Jun 2008 19:11:42 +0900</lastBuildDate>
<generator>秀丸エディタ Version 6.14</generator>
<webMaster>mrs@suzu841.com</webMaster>
<copyright>>Copyright (c) 2008, [mrs.suzu841.com 管理人]</copyright>

<item>
<title>CentOS5にFirefox2をインストール</title>
<link>http://mrs.suzu841.com/firefox/</link>
<guid isPermaLink="true">http://mrs.suzu841.com/firefox/</guid>
<pubDate>Thu, 5 Jun 2008 19:36:28 +0900</pubDate>
<description><![CDATA[ Linux CentOS 5.1 がセットアップされている実機にせめて、Firefox と OpenOffice くらいは最新バージョンにしておこうと思います。...]]></description>
</item>


<item> は、ページの分だけありますから、これをくり返していく事になります。
そうして最後は、
</channel>
</rss>
で締めくくり完成です。

こんな感じになります。
text
これをブラウザで表示すると以下のようになります。
firefox3beta

配信する

完成した rss ファイルを保存します。横着者のサイトマップ作成方法の時と同じように、拡張子は .xml です。ファイル名はこの場合は rss でも、rss2 でも、rss20 でも。ようは自分にこのファイルが RSS 2.0 のファイルだとわかればいいのですから。

拡張子が .xml のファイルを保存できたら、今度は配信元になる HTML ページの head 部分に記述をします。

<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="ここへRSS 2.0のファイルを置く場所のURLを記述する" />

私の場合ですと、 mrs.suzu841.com の直下に置きましたから、以下のようになります。

<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://mrs.suzu841.com/rss20.xml" />



こうして完成したRSS.xml のファイルと、このファイルの情報を記述した HTML ファイルを FTP します。
server に送信したら、自分のサイトのアドレスバーに feed icon のようなフィードアイコンが表示されていますでしょうか?
アドレスバーのfeedicon
見るには、アドレスバーのフィードアイコンを普通にクリックして、購読を選択すれば表示してくれます。

フィードリーダに対応していないブラウザで表示すると以下のようになります。
non-feed

このような時にはスタイルシートを指定しておいてあげると、そのスタイルで表示します。
ですが、2008年6月現在では、ほとんどのブラウザが対応してきているので、せっかくスタイルシートを作って指定しておいても、そのスタイルで表示をしてくれなくなっているほうが多くなりました。ですので、ここではスタイルシートについては、省略させていただきます。

下の画像は Seamonkey で表示したものです。
css
どうやらRSSリーダーを持っていないようです。スタイルシートの姿で表示されました。


なお、自分で作成した RSS ファイルがちゃんと仕様があっているかどうかを確認するにはValidator-feedAnalyzer のようなところがあります。

※ オプションはこの他にも多数ありますが、ここではよく使われるものだけを抜粋してあります。



※ 参考サイト : Rss20AndAtom10Compared | Dublin Core | RFC 4287