hCalendarは用法を守って使わないと「更新」に弱い

ご無沙汰しております。最近何をしていたかと申しますと、気がついたら「スケジュール情報」に関する研究に従事しておりました。マニアックなテーマであるためにうまくfitする学会が見つからず、あまり学会発表できませんでしたが、紆余曲折の末に修士号をいただける運びとなりました。

そんな話はさておき。

先日、id:amachang氏によるhCalendarの紹介記事を見つけました(→hCalendar を使って予定を公開しよう! - IT戦記)。この記事はhCalendarの概要と自作のJavaScriptライブラリについて記述されたものであり、特にhCalendarの概要については非常にわかりやすく説明されております。自作のライブラリを開発してしまうくらいですから、id:amachang氏のhCalendarへの期待は並ではないでしょう。

しかし私は、hCalendarを使用してスケジュール情報を記述する際に「1つのHTMLリソースにつき1つのスケジュール情報」というルールを守らない限り、スケジュール情報を利用する側の人間に不便を強いることになると考えております(このルールは私が勝手に考えているものであり、hCalendarの思想には無いものですのでご注意ください)。

確かにhCalendarで記述されたスケジュール情報はGoogleのロボットに特別扱いされたり、コピペだけで簡単にGoogle Calendar・Yahoo Calendarに取り込むライブラリを作れたりするかもしれません。それが便利であることに関して異論はありません。

ですが、そのライブラリを使用してGoogle Calendarにスケジュール情報を取り込んだ後に、内容が変更されたらどうなるのでしょうか。願わくはGoogle Calendarに取り込んだ「私のスケジュール情報」に変更内容が反映されたいところです。

スケジュール情報は往々にして、開催されるまでに何度も内容が変更・加筆されるものです。例えば私は、修士論文審査の日程に関するメールを2週間おきに3通も受信しました。最初のメールには「日程の詳細は後日お知らせいたします。」と記述されておりました。次のメールに記述された日程が最後だろう思ったら、直前になって発表者の変更があったために、またまた変更を通知するメールが届きました。このようなローカルな場合でなくても、例えば様々な学会の論文投稿締め切り日は頻繁に延期になりますし、電車・飛行機の発着予定時刻も事故などの理由により頻繁に変わります。予定を決める側としても「最初から開始日時・終了日時・詳細をキッチリ決めてください。あとで修正できませんから」というのはやりづらくて堪らないのではないでしょうか。

この理由から、スケジュール情報の内容に更新があったことを検知する方法について考えなければなりません。修士論文発表会の場合はたまたま変更通知がメールで届いたので助かりましたが、全てのスケジュール情報についてこれが可能なわけではありません(飛行機の発着時刻の変更を全てメールで送られたら堪らないでしょう)。PubSubHubbubなども同様です。

RSSのように、固有のURLをスケジュール情報に対応付ける方法があります。hCalendarはHTMLリソースに記述されているのですから、そのHTMLを示すURLを定期的にクロールすれば良いのです。iCalendar形式で記述されたスケジュール情報では、よく行われていることです。

1つのHTMLリソース(対応するURLも1つだけ)に複数のスケジュール情報が記述してはいけない理由がここにあります。1つのURLに対応するスケジュール情報が複数できてしまうので、1つのスケジュール情報に対応できないのです。出現する順番をURLに付加する方法は、はてなブックマークみたくコンテンツの順番が頻繁に変更される場合に破綻します。

例えばイベント開催支援ツール アテンド : ATNDは、用法を正しく守って使用している例です。イベント詳細ページ(例:ATNDデモ(タイトル)自由に参加/キャンセルをしてみてください : ATND)には、hCalendarで記述されたスケジュール情報が1つしか無いことがわかります。ですので、このスケジュール情報に更新があったかどうかを検知するには、http://atnd.org/events/1の内容をクロールすれば良いのです。

このような例であれば良いのですが、例えばスケジュール情報のまとめサイトを作る際に苦労するかもしれませんね。スケジュール情報一覧があるページ(以下「一覧ページ」)には複数のスケジュール情報が掲載されるでしょうが、用法を守るとなるとhCalendarで記述できるスケジュール情報は1つだけ。仕方が無いので、1つのスケジュール情報について詳細に記述するページ(以下「詳細ページ」)にジャンプしてもらって、そこからhCalendarを取り込んでもらうことになるでしょう。一覧ページからわざわざ詳細ページにジャンプしないと欲しいスケジュール情報が取り込めないなんて、聞くからに不便そうではありませんか。まぁ、これはhCalendarのコンセプト上の限界なので、諦めるしかなさそうですが。

そんなわけで、個人的には

いいことずくめです!

これは hCalendar を使わない手はない!
(hCalendar を使って予定を公開しよう! - IT戦記より引用)

というのは言いすぎかな、という気がします。iCalendar形式で記述されたファイルをHTTPでダウンロードできるようにする方が数倍は有意義な気がしてなりません*1(もちろん、iCalendarファイルには1つのVEVENTコンポーネントしか含まれていない、という前提で)。

*1:私はiCalendar形式の不満と解決について論文に書いたら、修士号がいただける運びとなりましたが。