MSDNのトップページを見ると、いくつかのRSSフィードがあります。
そのうち、
のURLが、よく似たものになっています。
どうも、http://www.microsoft.com/communities/rss.aspx という共通のフィードジェネレータに何らかのパラメータを与えると、フィードを返してくれるようです。
では、どんなパラメータを与えているのか、ちょっと見てみましょう。
「ダウンロード情報」を例に取ります。
URL はこれ(長いですね)。
http://www.microsoft.com/communities/rss.aspx?&Title=%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad%e3%83%bc%e3%83%89%e6%83%85%e5%a0%b1&RssTitle=%e6%9c%80%e6%96%b0%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad%e3%83%bc%e3%83%89%e6%83%85%e5%a0%b1&CMTYSvcSource=MSCOMDownloads&CMTYRawShape=list&Params=%7eCMTYDataSvcParams%5e%0d%0a%7earg+Name%3d'languageID'+Value%3d'45E0D2C5-FA32-43F7-BFF2-EDA0126931B6'%2f%5e%0d%0a%7earg+Name%3d'newerThan'+Value%3d'03%2f01%2f2006'%2f%5e%0d%0a%7earg+Name%3d'dcCategoryID'+Value%3d'10'%2f%5e%0d%0a%7earg+Name%3d'sortCriteria'+Value%3d'date'%2f%5e%0d%0a%7earg+Name%3d'sortOrder'+Value%3d'descending'%2f%5e%0d%0a%7earg+Name%3d'freeText'+Value%3d''%2f%5e%0d%0a%7esParams%5e%7eparams%5e%7eitem+name%3d'Consumer'+value%3d'scdataconsumer'%2f%5e%7e%2fparams%5e%0d%0a%7e%2fsParams%5e%0d%0a%7e%2fCMTYDataSvcParams%5e&NumberOfItems=20
まず、& で分解してパラメータを分けます。
http://www.microsoft.com/communities/rss.aspx?
&Title=%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad%e3%83%bc%e3%83%89%e6%83%85%e5%a0%b1
&RssTitle=%e6%9c%80%e6%96%b0%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad%e3%83%bc%e3%83%89%e6%83%85%e5%a0%b1
&CMTYSvcSource=MSCOMDownloads
&CMTYRawShape=list
&Params=%7eCMTYDataSvcParams%5e%0d%0a%7earg+Name%3d'languageID'+Value%3d'45E0D2C5-FA32-43F7-BFF2-EDA0126931B6'%2f%5e%0d%0a%7earg+Name%3d'newerThan'+Value%3d'03%2f01%2f2006'%2f%5e%0d%0a%7earg+Name%3d'dcCategoryID'+Value%3d'10'%2f%5e%0d%0a%7earg+Name%3d'sortCriteria'+Value%3d'date'%2f%5e%0d%0a%7earg+Name%3d'sortOrder'+Value%3d'descending'%2f%5e%0d%0a%7earg+Name%3d'freeText'+Value%3d''%2f%5e%0d%0a%7esParams%5e%7eparams%5e%7eitem+name%3d'Consumer'+value%3d'scdataconsumer'%2f%5e%7e%2fparams%5e%0d%0a%7e%2fsParams%5e%0d%0a%7e%2fCMTYDataSvcParams%5e
&NumberOfItems=20
次に、URL をデコードしましょう。
%xx は UTF-8 の文字コードとして文字に変換、+ はスペースに置換します。
すると、こう。
&Title=ダウンロード情報
&RssTitle=最新ダウンロード情報
&CMTYSvcSource=MSCOMDownloads
&CMTYRawShape=list
&Params=~CMTYDataSvcParams^
~arg Name='languageID' Value='45E0D2C5-FA32-43F7-BFF2-EDA0126931B6'/^
~arg Name='newerThan' Value='03/01/2006'/^
~arg Name='dcCategoryID' Value='10'/^
~arg Name='sortCriteria' Value='date'/^
~arg Name='sortOrder' Value='descending'/^
~arg Name='freeText' Value=''/^
~sParams^~params^~item name='Consumer' value='scdataconsumer'/^~/params^
~/sParams^
~/CMTYDataSvcParams^
&NumberOfItems=20
さらに、Params の謎の文字について、~ を < に、^ を > に置き換えると、こうなります(整形しています)。
&Title=ダウンロード情報
&RssTitle=最新ダウンロード情報
&CMTYSvcSource=MSCOMDownloads
&CMTYRawShape=list
&Params=
<CMTYDataSvcParams>
<arg Name='languageID' Value='45E0D2C5-FA32-43F7-BFF2-EDA0126931B6'/>
<arg Name='newerThan' Value='03/01/2006'/>
<arg Name='dcCategoryID' Value='10'/>
<arg Name='sortCriteria' Value='date'/>
<arg Name='sortOrder' Value='descending'/>
<arg Name='freeText' Value=''/>
<sParams>
<params><item name='Consumer' value='scdataconsumer'/></params>
</sParams>
</CMTYDataSvcParams>
&NumberOfItems=20
XML が出てきましたね。
では、各パラメータについて調べてみましょう。
まず、Title ですが、これは RSS に影響しないようです。
RssTitle は、rss の <title> 要素の文字列になりますね。
NumberOfItems は読んで字のごとくですね。返される RSS の件数になります。
RSS=20はよくわかりません。RSSのバージョンかと思いましたが、RSS=10に書き換えてみても、RSS 1.0が返されることはありませんでした。
CMTYSvcSourceは、パラメータ名から推測するに、RSS の生成元になるデータソースの名前でしょう。
ブログの場合は MSCOMBlogPosts、ダウンロード情報は MSCOMDownloads、サポート技術情報は PSSKBSearch となります。
他に、MSCOMMedia、CMTYTopics、MVP というのも確認されています。
CMTYRawShapeも謎です。list以外の値を取り得るのでしょうか?
そして、最大の謎(謎ばっかりです)が、Params です。
CMTYDataSvcParams 要素の中に、いくつかのパラメータが収まっています。
これは、データのフィルタリングや並び替えの条件ですね。
ただ、どんなパラメータがあるのかは、データソースによって異なるようです。
他にも、MatchPattern とか WebNewsURL というようなパラメータを持つものもありました。
こういうのの情報は公開してくれないんでしょうかね?
ちなみに、MSDN トップページにはもうひとつ、
http://msevents.microsoft.com/CUI/rssfdr.ashx
で生成されているフィードもありますね。
これもパラメータの作り方は秘密のようです。