RDF Site Summary (RSS) ファイルは XML を基にしており、Web コンテンツの同時配信と集約のためのオープンな方式を提供します。RSSファイルを使用すると、自分の Web サイトから見出し、リンク、および記事の要約を提供するためのデータ・フィードを作成できます。RSSファイルには、情報のチャネルが記述されます。そこには、ロゴ、リンク、入力ボックス、および複数の「ニュース項目」を含めることができます。他のサイトは、自分のページに自動的にこちらの情報を取り込むことができます。こちら側でも、他のサイトからのRSS フィードを使用して、自分のサイトに最近のニュースの見出しを載せることができます。この技法により、サイトへのアクセス数を増やすことができますし、サイトに最新の情報を掲載することもできます。
RSS フォーマットは、My Netscape および My UserLand の各サイトに端を発しています。これはどちらも、XMLニュース・フィードに由来するコンテンツを集約するものです。RSS は最も単純なXML アプリケーションの 1 つであるため、類似のタスクを実行する必要のある多くのデベロッパーに気に入られました。ユーザーの中には、Moreover、Meerkat、UserLand、およびXML Tree が含まれます。この記事では、RSS フォーマットについて考察し、RSSファイルを容易に処理できるようにする、オープン・ソースの Perl モジュールをいくつか調べます。
RSS ファイルはメタデータです (関連記事 「メタデータとは何か」 を参照してください)。実際に使ってみたり、例を見たりしないと、RSS ファイルが何かを理解することは容易ではないかもしれませんが、これを作成するのは容易です。一般に、RSSファイルには、4 つの主なタイプのエレメントが含まれます。すなわち、チャネル(channel)、イメージ (image)、アイテム (item)、およびテキスト入力 (textinput) です。リスト 1 の例に示すとおり、これらのエレメントは識別とコーディングが容易です。リスト1 は RSS 0.91 ファイルに入っているアイテムの例ですが、ここには容易に識別できるパーツが3 つ含まれています。すなわち、タイトル (title)、リンク (link)、および説明(description) です。
リスト 1. RSS 内のサンプル・アイテム
<item>
<title>
Mozilla Dispenses with Old, Proprietary DOM
</title>
<link>
http://www.mozillazine.org/talkback.html?article=604
</link>
<description>
The Mozilla team has decided to forgo backwards
compatibilitywith Netscape's proprietary DOM.
</description>
|
RSS ファイルの集約を利用して見出し集を公開する場合、HTML は通常、指定されているタイトルを見出しにします。たいてい、タイトルはリンクにもなります。これには、リンク・エレメントにリストされているURL が使われます。最後に、説明が、通常は見出しの下に記事の要約として表示されます。
RSS ファイルを作成するときは、RSS 1.0 という提案中の仕様に従うこともできますし、RSS0.91 という現時点でより普及している仕様に従うこともできます。実動アプリケーションを作成する場合は、RSS0.91 を使用してください。1.0 の提案はまだ考慮中だからです。下の 「参考文献」 のセクションには、1.0 仕様と 0.91 仕様の両方へのリンクが含まれています。それぞれ、すべてのエレメントについて詳細に考察されています。この記事では、最も一般的に使用されるエレメントに焦点を当てます。記事中の例はすべて0.91 フォーマットにのっとっています。
1.0 の提案には、0.91 のフォーマットとの大きな違いが 1 つあります。すなわち、ResourceDescription Framework (RDF) のエレメントが組み込まれているということです。これにより、複雑さが若干増すという犠牲は伴うものの、柔軟性が高まります。提案中のこの仕様では拡張性が向上しており、これによって作成されることになるRSS ファイル用の W3C 標準は、現在の必要にかない、後ろ向きの互換性が可能な限り保たれ、かつ将来の要件にも適応可能なものとなります。
どちらのバージョンの仕様でも、デベロッパーがさまざまな目的に使用できる軽量のフォーマットである、という性質は共通しています。
RSS は XML アプリケーションです。そのため、RSS 文書はすべて、XML 1.0 宣言で始まり、その後にRSS 文書タイプ宣言が続きます。これをリスト 2 に示します。
リスト 2. XML 宣言
<?xml version="1.0"?>
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" |
1 行目では、文書が XML 文書であることを宣言しています。2 行目は DTD 宣言であり、このXML
ファイルが Netscape の RSS 0.91 文書タイプ定義 (DTD)
を基にしていることを指定します。最後に、ルート・エレメントにより、RSSファイルの内容が始まることが示されます。RSS
ファイルの内容はすべて、
<rss version "0.91">
タグと
</rss>
タグにはさまれます。
ルート・エレメントの後に、RSS ファイルの 4 つの主なセクションが続きます。すなわち、チャネル、イメージ、アイテム、およびテキスト入力の各セクションです。実際の使用に際し、RSS ファイルが実用に足るものであるためには、チャネルとアイテムの各エレメントは必須です。一方、イメージとテキスト入力はオプショナルです。
チャネル・エレメントにはチャネル自体を記述するメタデータが含まれ、チャネルが何であるか、また作成者は誰であるかが示されます。チャネルは必須エレメントであり、チャネルの名前、説明、言語、およびURL が含まれます。URL は、通常、チャネルの情報のソースを指すために用いられます。
リスト 3 に、チャネル・エレメントの先頭を示します。チャネル・エレメントのこの部分では、チャネルを定義し、チャネル情報を開始します。
リスト 3. チャネル・エレメント
<channel>
<title>
MozillaZine
</title>
<link>
http://www.mozillazine.org
</link>
<description>
Your source for Mozilla news, advocacy, interviews,
builds,
|
チャネル・エレメントには残りのチャネル・タグも含まれます。それらのタグは、チャネルを記述し、チャネルをHTML で表示できるようにします。タイトルは、見出しのリンクとして扱うことができます。そして、その後に説明が続きます。チャネル言語定義は、集約プログラムがニュース・フィードをフィルターに掛けることを可能にするとともに、適切な言語で表示を行うのに必要な情報をレンダリング・ソフトウェアに与えます。
チャネル・エレメントすべての後に
</channnel>
タグが使用され、チャネルを閉じます。RSS は XML
仕様に準拠しているため、エレメントは整形式でなければならず、クローズ・タグを必要とします。
0.91 のチャネル定義には、9 つのオプショナル・タグを含めることができます。例としては、PICSレーティング、著作権 ID、公表日付、Web マスターなどがあります。これらの付加的なエレメントを、さまざまな目的で使用することができます。たとえば、コンテンツを集約するサイトでは、これらの付加的なメタ情報を使うことにより、ユーザーがPlatform for Internet Content Selection (PICS) レーティングに基づいてニュース・フィードをフィルターに掛けられるようになります。他のチャネル・タグの追加情報については、RSSの仕様書を参照してください。
イメージ・エレメントは、一般にチャネル・プロバイダーのロゴを含めるために使用されるオプショナル・エレメントです。イメージのデフォルトのサイズは、幅が88 ピクセルに対して高さが 31 ピクセルですが、最大のロゴ・サイズは、幅が144 ピクセルに対して高さが 400 ピクセルです。ここで、イメージ・エレメントのサンプルを示します。
リスト 4. イメージ・エレメント
<image>
<title>
MozillaZine
</title>
<url>
http://www.mozillazine.org/image/mynetscape88.gif
</url>
<link>
http://www.mozillazine.org
</link>
<width>
88
</width>
<height>
31
</height>
</image>
|
イメージのタイトル (title)、URL、リンク (link)、幅 (width)、および高さ(height) タグは、レンダリング・プログラムがファイルを HTML に変換することを可能にします。タイトル・タグは通常、イメージのALT テキストに使用されます。可能であれば、イメージは 88 x 31 以下のサイズにとどめてください。なぜなら、多くのレンダリング・プログラムはチャネルを固定幅(100 ピクセル幅) のテーブルに変換するからです。グラフィックスのサイズがそれより大きいと、テーブルが不適切に分割されたり、イメージの表示が脱落したりする可能性があります。
アイテムは、チャネルの最も重要なエレメントであり、通常は RSS ファイルの動的な部分を成します。チャネル、イメージ、およびテキスト入力の各エレメントがチャネルのアイデンティティーを成し、長期間に渡って変化しないのが一般的であるのに対し、チャネル・アイテムはニュースの見出しとなり、チャネルの変更に応じてかなり頻繁に値が変化します。ここで、チャネル・アイテムの例を示します。
リスト 5. アイテム・エレメント
<item>
<title>
Java2 in Navigator 5?
</title>
<link>
http://www.mozillazine.org/talkback.html?article=607
</link>
<description>
Will Java2 be an integrated part of Navigator 5?
|
1 チャネルに許容されるアイテムの数は 15 までです。これは道理にかなった制限といえます。なぜなら、大部分の人々は、最近のWeb コンテンツを配布するためにチャネルを使用するからです。タイトルは 100文字より少なくなければなりません。一方、説明は 500 文字より少なくなければなりません。通常、アイテムのタイトルは見出しになり、この見出しが記事全体へのリンクとなります。記事全体のURL は、アイテムのリンクに指定されます。アイテムの説明は、記事の内容の要約、または記事への論評のいずれかのために使用されるのが一般的です。ニュース・フィード・チャネルは、通常、チャネルの所有者のサイト上で、ニュース記事の内容を強調するために説明を使用します。Webログ・チャネルは、しばしば、サード・パーティーのサイト上で、さまざまなコンテンツへの論評を行うために説明を使用します。
RSS フォーマットの美点のほとんどは、アイテム・エレメントにあります。上記の例からも分かるとおり、アイテムは、デベロッパーにとって定義しやすく、ユーザーにとって読みやすいものです。
テキスト入力エリアはオプショナルのエレメントであり、チャネルごとに 1 つだけ使用できます。テキスト入力は、通常HTML フォームとなり、ユーザーがチャネルに応答することを可能にします。この機能を使って、ユーザーがニュースレターの購読やサイトの検索を行えるようにできるかもしれません。ここで、テキスト入力エレメントの例を示します。
リスト 6. テキスト入力エレメント
<textinput>
<title>
Send
</title>
<description>
Comments about MozillaZine?
</description>
<name>
responseText
</name>
<link>
http://www.mozillazine.org/cgi-bin/sampleonly.cgi
</link>
</textinput>
|
タイトルは、通常、フォームの発信ボタンのラベルになります。説明は、入力フィールドの前後に表示されるテキストになります。発信ボタンがクリックされると、テキスト入力の名前(name) がテキスト・フィールドの内容と一緒に提供されます。
RSS ファイルには 4 つの主なエレメントがあります。イメージ、アイテム、およびテキスト入力を追加した後、
</channel>
タグでチャネルを閉じること、および
</rss>
タグで RSS ファイルを閉じることを忘れないでください。
提案中の RSS 1.0 仕様ではモジュールが導入されました。これは、RSS を拡張して、仕様を書き直さずに追加情報を収められるようにするものです。たとえば、広帯域のクライアント用には、リッチ・メディアをチャネルに含めるモジュールを作成し、標準クライアントに対しては、従来どおりに見出しと説明を表示するということができるかもしれません。1.0仕様がインプリメントされたら、モジュールについてさらに学び、その利点を活用できるでしょう。
RSS ファイルを使った作業を始めるには、いくつかの方法があります。RSS ファイルは非常に単純であるため、どのテキスト・エディターまたはXML エディターを使っても、容易に作成できます。また、カスタム RSS ファイルをオンラインで作成できるよう、Webフォームを備えたサイトもあります。さらに、RSS ファイルを自動的に作成してみることもできます。Java、PHP、およびPerl 用のオープン・ソースのツールは、ファイルの作成に着手する上で役に立つかもしれません。
簡単な RSS ファイルを作成したら、それを妥当性検査したいと思うことでしょう。これは、以下の 「参考文献」 のセクションに挙げた Netscape のサイトで行うことができます。Web サイトの公にアクセスできるエリアにRSS ファイルを置いたら、Netscape のサイトにアクセスし、自分の URL を発信します。すると、妥当性検査プログラムがファイルの互換性をテストします。
有効な RSS ファイルを Web サイトに準備したら、コンテンツを同時配信できます。これは、公開と購読の方法で行うことができます。これは、こちら側で情報を公開し、購読したい人はだれでも購読できるようにする方法です。あるいは、Moreoverまたは Userland などのコンテンツ集約業者に URL を通知することもできます。集約業者はさまざまなサイトからコンテンツを入手して、それをフィードに公開します。集約業者を利用すると、自分のサイトの情報が他の提供者からのコンテンツと混合することになりますが、情報の配布の範囲は劇的に広がる可能性があります。
RSS ファイルは、イントラネットまたはエクストラネット上で私用の配布を行う場合にも使用できます。RSSファイルは単純なので、さまざまなシステムに情報を公開するための良い方法となります。
RSS ファイルを使った作業を開始したら、個々の情報単位に立ち返ってファイルの構文解析を行いたいと思うことでしょう。これは、さまざまなオープン・ソースのツールの助けを借りて行うことができます。Java、Perl、PHPで作成されたツールがあり、ASP で作成されたものさえあります。パーサーは、XMLテキストのストリームを読み、オープン・タグとクローズ・タグを識別し、両方のタグで囲まれたテキストを見つけ、構文解析する情報を処理するためのハンドルを作成します。構文解析が済んだら、この情報を動的に生成されるページに組み込むことができます。
リスト 8 とリスト 9 に、RSS ファイルを読む、2 つの単純な Perl プログラムを示します。Perlでプログラムを作成しない方でも、これらの例からいくらかのアイデアを得られるかもしれません。それをご自身の開発環境で使用することができるでしょう。
Perl は RSS ファイルを操作する上で大変優れた言語です。作業に着手するのに役立つ相当量のオープン・ソースのコードが簡単に入手できます。JonathanEisenzopf は、RSS ファイルの作成と構文解析を行う、XML::RSS モジュールを開発しました。このパーサーを利用するには、XML::Parserモジュールも必要です。これらの 2 つの Perl モジュールは、CPAN から無料で入手できます( 「参考文献」 参照)。
ここで、XML::RSS の使用例を示します。
リスト 8. XML::RSS を使った Perl の例
# Setup includes
use strict;
use XML::RSS;
use LWP::Simple;
# Declare variables for URL to be parsed
my $url2parse;
# Get the command-line argument
my $arg = shift;
# Create new instance of XML::RSS
my $rss = new XML::RSS;
# Get the URL, assign it to url2parse, and then parse the RSS content
$url2parse = get($arg);
die "Could not retrieve $arg" unless $url2parse;
$rss->parse($url2parse);
|
このコード・サンプルは、構文解析のために URL を Perl スクリプトに渡します。構文解析が済んだら、RSSファイルのエレメントをさまざまな方法で使用することができます。たとえば、RSSのアイテムを見出しのリストの作成に使えるかもしれません。
リスト 9. Perl で見出しを作成する
# Print the channel items
foreach my $item (@{$rss->{'items'}}) {
next unless defined($item->{'title'}) && defined($item->{'link'});
print "<li><a href=\"$item->{'link'}\">$item->{'title'}</a><BR>\n";
} |
このサンプルは、RSS アイテムの配列をループ処理し、各アイテムにタイトルとリンクが揃っているかどうか検査します。不完全なアイテムはスキップされ、完全なアイテムはリンクされた見出しのリストに含められます。
XML::RSS モジュールを使用することを計画しているなら、何らかのテキスト・エディターを使ってこのモジュールを開き、それを読んでください。このモジュールには、多量のコメントが記されており、効果的な使用法に関する提案が見つかるからです。
RSS ファイルに手を染めると、これを使用するさまざまな方法があることに気付くことでしょう。たとえば、サイトに更新を加えるたびにRSS 要約を生成するスクリプト、または他のサイトからのニュースを定期的に検索して、自分自身のニュース・ページを自動的に更新するスクリプトを作成することができます。(このようなスクリプトの作成方法は別の記事で扱うべき内容ですが、 「参考文献」 にリストしたツールのソースの中には、RSS の要約を自動的に生成する、オープン・ソースの便利なツールがあります。)
以上、RSS ファイルの作成と仕様に関して、いくつかの提案をお知らせしました。「参考文献」のセクションでは、RSSファイルのソース、RSS の仕様、およびご自分の見出しを掲載できる場所などの、追加情報を示しています。
関係する標準
-
RSS 1.0 Specification Proposal
サイトには、背景、動機、設計目標、および作業の仕様など、一般的な情報が含まれています。
-
RDF に関する W3C の勧告は、
Resource Description Framework
に含まれています。
-
Webreference のオンラインの
RSS Channel Editor
は、RSS ファイル作成に着手するための良い方法です。
-
Wireless Developer Network
には、PHP で RSS ファイルを構文解析するツールがあります。
-
Moreover
は、1,500 以上のニュース・ソースからの無料のニュース・フィードを呼び物にした集約業者です。
-
同時配信コンテンツの例としては、
XML-Tree
があります。ここには、大量のチャネルが収集されています。
-
My Userland
では、さまざまなソースの見出しが集約されています。ここは、RSS ファイルを初めて使用したサイトの1
つです。
-
Meerkat
は、RSS を基にした同時配信コンテンツ・リーダーであり、それと同時にニュース・フィードのソースです。