« 12月9日,17日 ET研究会 Googleの戦略 | メイン | SSEが有効なアプリケーション »
2005年11月24日
Simple Sharing Extensions : RSSシンジケーション、双方向へ
Computerworld, Microsoft making RSS a two-way street
Microsoft, Simple Sharing Extensions for RSS and OPML
Really Simple Sharing
マイクロソフトがRSSを拡張するSSEという仕様を提案しています。 これは、ブログのように、個人サーバの草の根シンジケーションで、スケジュール共有、アドレス共有などのコラボレーションをできるようにするための仕様です。 スケジュールサーバを例として、説明しましょう。
スケジュールサーバが、各予定を一つの記事(アイテム)としてRSSファイルを作成し、配信することを想像してください。 こうすれば、RSSリーダでスケジュールが見れて、便利でしょう。 このくらいなら、今のRSSの仕様でも困らずにできます。(もちろん、アクセス制御とか、いろいろ工夫はいるけど・・・)
さて、こんなRSSフィーダつき個人スケジュールサーバを使っている人が何人もいたら、自分のスケジュールサーバと友達のスケジュールサーバをシンジケーションさせたいですよね。 例えば、友達が飲み会の予定を友達自身のスケジュールサーバに登録したら、RSS配信により自分のスケジュールサーバに反映されるようにします。 こういう使い方を考えていくと、いくつかの課題に気づきます
1. ループをいかに防ぐか?
サーバAがサーバBから予定リストを取得して、サーバBもサーバAから予定リストを取得するようにすると、配信情報がループしてしまう。 1件の予定追加が予定追加の無限ループを招かないようにする必要がある。
2.情報の競合をいかに解決するか?
例えば、スケジュールサーバA,Bとスケジュール集約サーバXがあって、サーバBはサーバAの予定を、直接とサーバX経由の二つのパスで、取得しているとします。 この場合、サーバAの予定が更新されたときに、更新ずれによって過渡的に、二つのパスで矛盾する予定情報がスケジュールサーバBに届きます。 サーバBがどちらの予定情報が正しいのか(最新か)をチェックすることが必要となります。
3.情報の削除をいかに伝えるか?
予定がキャンセルされたときに、それを削除したことを伝える方法が必要です。 有るものを表現する方式を決めただけでは、なくなったという状態変化を伝えることができません。
これらの課題を解決するのがSSEです。 syncという拡張エレメントを定義して、ループ検出のためのユニークID、競合判定のためのバージョン番号、削除を伝える情報、をアイテム情報に含められるようにしています。
スケジュールサーバを例にして説明しましたが、SSE自体はあらゆる情報リストに適用可能なように抽象化された仕様になっています。 なので、SSEだけではなんのアプリケーションもできないので、一種のフレームワーク仕様と考えてよいでしょう。
実は、スケジューラの世界では、この種の概念は、iCalendar(RFC-2445), ITIP(RFC-2446)という技術仕様で掘り下げられています。
RFC-2445, RFC-2446を活用して、SSEのスケジューラ・インスタンスを定義すれば、かなり便利なスケジュール共有を実現できるのではないかと思います。
参考: The Web Kanzaki, RDFカレンダー:イベント情報の公開と活用
投稿者 motlab : 2005年11月24日 23:03