はてなRSSの技術的ポイント

はてなRSS、ブックマークの検索機能、ダイアリーのバージョンアップと立て続けに大きいのを進めてきまして、ようやくひと段落着きました。

ちょっとまだはてなRSSの巡回君が最適化しきれておらず、毎日動きを見ながらチューンしているところです。はてなRSSに限らず、巡回ロボットプログラムは世間の荒波にもまれて少しずつ(ad hocに)育てていくものなので、がんばって改良してまいります。

さて、たまには技術の話でもしてみます。はてなRSSの技術的ポイント。とは言ってもそんなに目立つようなところはないのですが、とりあえずは「もっと読む」ボタンのところで Ajax を使ってるなんてところでしょうか。

RSS 1.0 で content:encoded があるフィードや Atom でフルコンテンツを公開しているものからは、その本文を抽出して「もっと読む」で読めるようにしてあります。(excite Blog とか FeedBurner を挟んだフィードとか RSS 2.0 で description に HTML マークアップが入ってるものは未対応、ぼちぼち対応していきます。)

このときに、RSSリーダーにアクセスした時はもっと読むは隠れていて、押すと出てきます。ここまでは普通の JavaScript + CSS、つまりは DHTML のみで可能です。その場合、隠してあるコンテンツも HTML に記述しておいて display でひっこめたり出したりするわけです。

が、隠れているものも読み込ませるとなると、はてなRSSのようにサーバーサイドで提供しているアプリケーションにとっては厳しい負荷になってしまいます。塵も積もればなんとやら。更に、もっと読むの中身は結構(処理という意味での)コストの高いキーワードリンクを行っていたりするし、表示する必要がない箇所にそのコストを払うのは実にもったいない。

そこで必要になったら動的にロードする、というところで Ajax の出番です。Ajax というか XMLHttpRequest の async モード。実際にはサーバーからコンテンツ部分を読み出して responseText を innerHTML に突っ込むという、Ajax のごくごく基本的なことをやっているだけですが、おかげさまでサーバに優しい設計を行うことができました。問題は、JavaScript が有効でないと機能しないというところなのですが、そこはまた別の手段で解決しないとなという感じです。

それ以外にも、ブックマークとの連携のところでも Ajax をちょっと使っています。(いいタイミングで Ajax が盛り上がってくれたものです。)

Ajax と言えば、とある雑誌に Ajax の原稿を書いているところです。僕は概要紹介をするぐらいですが、そのほかの執筆陣が Ajax 界隈(?) ではかなり有名どころの豪華執筆陣で、ページ数もかなりに上るので期待できる内容になるかと思います。発売は1, 2ヵ月後ぐらいかな。