ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

Google Readerのバグじゃね?と思ったが、バグじゃなかった件。

結論

RSS2.0のguidは、isPermaLink="false"が指定されていない限り、
(isPermaLink="true"、もしくは、無指定の場合)
エントリのリンクとして使ってよい。

事の発端

tweetvite.comというサイトがある。
twitterアカウントを使ったイベント管理&参加管理システムみたいなものだと思う。
ATNDみたいなものか。


一時期イベント厨と化していたので、
tweetvite.comが吐き出すRSSを、早速Google Readerに登録してみた。
が、しかし、購読しているフィードのリンクが間違っているせいで、
Google Readerからイベントのページに飛べないんですよ。これが。


配信されているフィードの中身をみてみたら、

<link>http://tweetvite.com/events/home/7887</link>
<guid>http://tweetvite.com/events/home/7887</guid>

みたいになってて、正しいイベントページのURLは、

http://tweetvite.com/event/4xaw

だったりして、思いっきり間違えてました。

英語書いてみた

しばらくしたら直るんじゃね?と思い、放置してたのですが、
一向に直る気配がなく。。
仕方なく、Contactのページより、間違ってますよ。と教えてあげました。
で、しばらくしたら返事がきて、直ったよと言ってました。


で、直った結果、配信されているフィードの中身をみてみたら、

<link>http://tweetvite.com/event/4xaw</link>
<guid>http://tweetvite.com/events/home/7887</guid>

となってて、これでばっちり!と思ったのですが、
Google Readerでエントリを開こうとすると、
正しいhttp://tweetvite.com/event/4xawではなく、
間違ったhttp://tweetvite.com/events/home/7887の方を開いてしまいます。
明らかに、guidのURLをエントリのリンクとして使っているわけです。


ちなみに、Firefoxライブブックマークでは大丈夫でした。

RSSの仕様を調べてみた

参考文献

RSS 2.0 Specification 日本語訳 - futomi's CGI Cafe

要はguidをエントリのリンクとして使ってよいかどうかなのですが、
こんな記述がありました。

もし guid 要素が "isPermaLink" と名づけられた属性を持ち、その属性値が真の値("true")なら、リーダーは、それは記事への永久リンクであり、ウェブブラウザーで開ける URL であり、 要素によって説明されている全記事を指し示しているとみなして構いません。例です。
http://inessential.com/2002/09/01.php#a2
isPermaLink はオプションです。そのデフォルト値は真(true)です。もしその値が偽(false)なら、guid を、特に何かを指し示すような url とみなしてはいけません。

というわけで、guidのisPermalink無指定は、isPermaLink="true"と一緒なので、
エントリのリンクとして使ってよいということになります。

つまり

Google Readerはバグってなかった。
むしろ、Firefoxライブブックマークの動きがおかしいと言えそうです。

でも

linkがあるんだから、linkつかえばいいのにね。

しかし

もう一回バグ報告するのははばかられるなあ。(面倒だなあ)