Goodpic.com
2003年09月11日

ブログ同士をP2PでつなぐTrackBackとPingBackの技術解説

ブログ(weblog)の特徴は?と聞かれて説明するものの、なかなか説明しづらい仕組みがこのTrackBackとPingBack。MovableTypeではTrackBackが実装されていますが、PingBackも用途はほとんど同じで、実装の違いだけです。TrackBackがRDFより、PingBackはXML, HTMLよりと考えることもできるかもしれません。
MovableTypeでの一般的なTrackBackの利用方法は、参照したいブログのエントリーのTrackBack URLを見付けてコピー、自分の新規エントリー編集ページで”トラックバック先のURL”欄にペーストする、というのが普通の使い方だと思います。これだとただのCGIかな?と思ってしまいますが、本来の仕様的にはTrackBack URLを見付けるための自動検地も含まれていて、この部分が文章をセマンティックに自動リンクするという点で興味深いポイントです。
MovableTypeは、普通にブログを書いて公開しているだけでは気付かないのですが、結構色々なセマンティック情報をHTMLに自動的に組み込んでいます。例えば、自分のブログのトップページのソースを見ると、記事エントリーごとに以下のようなRDFが記述されています。

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description
rdf:about="http://www.goodpic.com/mt/archives/000101.html"
trackback:ping="http://www.goodpic.com/nocomment.php/69"
dc:title="weblogの更新通知 PingサービスをJava Servletで実装"
dc:identifier="http://www.goodpic.com/mt/archives/000101.html"
dc:subject="tech"
dc:description="TrackBackは面白い"
dc:creator="jkanekomt"
dc:date="2003-09-09T18:12:36+09:00" />
</rdf:RDF>

ここで、trackback:ping="http://www.goodpic.com/nocomment.php/69"という記述がありますが、これは自動検地プログラムがTrackBack URLを見付けだせるようにRDF内に記述されています。
TrackBack自動検地プログラムが、どのように動作するかを、仮に、他のAさんという人が、自動検地をONにして、私のこの記事を参照したというケースで説明します。

1. Aさんがこの記事へのリンクとして、URLをエントリーに記述
2. AさんのMovableTypeが入力をパースして外部リンクを検出
3. MTは、外部リンクにHTTP GETリクエストを送信、コンテンツを受信
4. MTは、コンテンツをパースして、埋め込まれたRDFを探す
5. RDFが複数ある場合は、GETリクエストしたURLにマッチするものを選択
6. RDF内のTrackBack URLを検出

ここまでがTrackBackURLの自動検出で、あとはTrackBackURLにHTTP POSTリクエストとして、Aさんのtitle, excerpt, url, blog_nameを相手(私)のMTに渡します。私のMTは受け取ったデータを基に、TrackBackされたリストにAさんのエントリーを記述します。
この自動検出はMovableTypeの”ウェブログの設定”で”トラックバックの auto-discovery を動作させる”をチェックすると動作します。ただauto-discoveryを利用すると、明らかにエントリーを作成する際に負荷がかかりますが。。
PingBackはデータのやり取りに、xml-rpcを利用するなど違いはありますが、詳しくは以下のサイトの技術仕様書が非常に参考になります。

- TrackBack 技術仕様書
- PingBack 1.0

TrackBackは、weblogの開発者がP2Pの議論をしている際に発案された、ということですが、以上のようにRDFとHTTPという非常に簡素な技術の組み合わせで実現されています。こういった使い方のためにも、RDFタグを自動的に挿入してくれているweblogツールというのは非常に重要ですね。あとはHTTPでのデータ交換のタイミングが工夫されて、ユーザーが負荷を感じないようにできればauto-discoveryもかなり面白くなるのかも。ただ、ここでもスパム防止のために何らかの相互確認の仕組みは必須ですね。

Posted by jkanekomt at 2003年09月11日 18:42 | trackBack



Comments
Post a comment









Remember personal info?







関連記事