Feb 22, 2005

FeedBurnerに移行した件について。

Movable Typeの再構築が遅いの速いのという話がありますが、よくよく考えるまでもなくメイン・インデックスが再構築される(エントリー投稿・更新、コメント、トラックバック)時、RSS 1.0, 2.0, Atomの3つのXML Feedも一緒に再構築されています。ASP型のサービスでは大抵いずれか一つしか提供していないのにMovable Typeの親切ぶりはどうよ、どうなのよ、ねえ、と思わなくもありません。

個人的には一つだけにして当社比3倍(実際には他のアーカイブも再構築されるのでそんなに速くなりません)と行きたいところですが、Bloglinesで他のフィードにもまんべんなく読者が付いていることから判断するに、適当な方法で他のFeedのユーザーを誘導してやる必要が明白にあるということです。

とりあえずindex.rdf, index.xmlからatom.xmlにリダイレクトしてみたのですが、Bloglinesが3回ずつアビっていかれるご様子。また、AtomとRSSが将来統合されたらAtomという名前ですらなくなったりする気もしてその時またatom.xmlから変更するのかよ、と。将来Jabber/XMPP Botがフィード更新の通知を受け取ってから即時GETに来るようなフレームワークが一般的になったときに、今よりFeed Provider側(つまりは私の使っているサーバ)にトラフィックが集中しそうじゃんか、と。更新通知する仕組みを皆が用意するのは結局現実的でなくて適当なアウトソース先に丸投げしてそこが勝手に「アドバンストなテクノロジー」を発揮してくれればいいじゃんか、と。要するにもう少しユニバーサルで賢いやり方はないかと思ったわけです。

そこでFeedBurnerタン(FeedBurner - Point your feed here. We'll do the rest.)の登場ですよ。

FeedBurnerについてはGoogle 検索: FeedBurner。おいらの代わりにXML Feedの配信してくれるのに加えて、ブラウザヴィジブルにしてくれたり、統計を取ってくれたり、他のFeedをマージしてくれたりと(簡単にできることは)色々してくれます。多分「アドバンストなテクノロジー」も勝手に導入してくれるでしょう。

私のやった作業はこんな感じです。

当初Atom Feedを生成して、それをFeedBurnerに配信させる方法を記述していましたが、それだとbulkfeedsを含め多数のアプリケーションで正常に読み込めない問題があるようです。以下はRSS 2.0 Feedを生成するものとして記述を修正してあります。
  1. RSS 2.0 Feedを昔の名前(index.xml)以外の名前で生成するようにします。
  2. FeedBurnerでアカウントを作って1.で生成したFeedを指すようにします。これで「http://feeds.feedburner.com/AS-U-LIKE」という名前で配信できるようになりました。
  3. テンプレートで昔のFeedを参照している部分を2.で作ったものに書き換えます。私の場合例えばヘッダは以下のように書き換えてあります。
    <link rel="alternate" type="application/rss+xml" title="RSS"
          href="http://feeds.feedburner.com/ogawa" />
    <link rel="alternate" type="application/atom+xml" title="Atom"
          href="http://feeds.feedburner.com/ogawa" />
    
    なぜAtom形式でも宣言しておくかというと、RSS形式からAtom形式への変換はFeedBurnerが自動的にやってくれるからです。前者だけでも構わないと思います。
  4. 「移転しました」Feedを作っておきます。
  5. 適当な期間放置して、4.の「移転しました」Feedを削除します。
  6. やっぱり4.,5.は良くないっぽい(Bloglinesのsubscribe情報が全部消えた)。代わりに旧Feedから新Feedへpermanentなリダイレクトを設定した方がよいです。
    RewriteEngine on
    RewriteRule ^index\.rdf$ <新FeedのURL> [L,R=permanent]
    RewriteRule ^index\.xml$ <新FeedのURL> [L,R=permanent]
    RewriteRule ^atom\.xml$  <新FeedのURL> [L,R=permanent]
    
    Redirectでもできますからお好みで。

さてこの作業を行うと、ただでさえ遅かったBloglines(多分他のWebでサービスしているRSSリーダーも)の更新がより遅くなります。私の作ったFeedを適当な間隔でFeedBurnerがフェッチして二次公開し、それをBloglinesが1時間ないし2時間に一回フェッチするという二段構成になりますから。ただし、Ping-o-Matic!に更新Pingを打てばFeedBurnerに更新が即時に伝わって即フェッチに来ます。したがって一応二次公開に伴う遅延は限定的です。この場合、むしろMovable Typeが新規投稿時にしか更新Pingを送らないこと、従来からあるRSSリーダーの巡回遅延が大きいことの二つが問題です。

前者を解決するにはパッチを当てるかプラグインを入れるかして機能拡張する必要があります。

Ogawa::Buzz: Update-n-Ping Plugin

後者に関しては、私の場合2日に一度も更新しないので構いませんが、そのうちブレイクスルーが起きて如実に速くなることに期待しています。

また、Bloglinesの旧Feedに対するsubscribe情報は、新Feedに書き換わったみたいです。これを自動的にやるのは無理っぽい気がするので中の人が作業してくれた(=301 Redirectを検出してマージしてくれた)のだと思います。あるいは全読者が一斉に移行作業をしてくれたとか?アリエナーイ。

RSSリーダーを使っている読者様はお手数ですが下記URLから購読くださるようお願いいたします。

http://feeds.feedburner.com/ogawa

おまけ: RSSBarについて

FeedBurnerを使うとこのようにRSSリーダーごとの振る舞いも見られるわけなのです…。

しかし…、RSSBarというリーダーはユーザーベースでのシェアは3.6%(=6人/167人)なのですが、Feedのダウンロード回数でのシェアは43%(=478回/1112回)もあるのですね。24時間リーダーを使っていたとしても18分に一回クロールに来ている計算になり、他のツールと比較すると尋常でない頻度です。If-Modified-Sinceヘッダ付きで取りに来ているでしょうから、ほとんど304 Not Modifiedが返っているのでしょう。だけど、一方でリクエストしているクライアント側もそれなりの負荷がかかるわけで、遊休PCを使っているわけなのかしら?

こういうデータが見られるのは面白いです。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com