2008年10月18日土曜日

トラックバック仕様まとめ

トラックバックについては他にも資料はあると思うのですが。

前のサイトに実装する時に色々調べたので、トラックバック自体の仕様もまとめておきます。
まあ誰かの役に立つかもしれないので。

トラックバック概要


トラックバックとは、「各ポスト(投稿)同士をつなぎ合わせる」機能を提供するものです。

例えば、自分が新しい記事を投稿するとき、他のサイトに関連した記事があれば、「トラックバック」を送信して、相手のサイトに自分の記事へのリンクを提供できます。
また、自分の書いた記事にトラックバック受信機能があれば、誰かが自分で書いた補足情報へのリンクを送信してきてくれたりするのです。

まあトラックバックスパムとか最近増えててあれですけどね。
それでもとても有用なブログ連携技術なのは確かです。

下に仕様を。

トラックバックには受付専用のURLを設ける事。


ブログなどでは通常、各記事ごとにトラックバック受付用のURL(トラックバック Ping URL)を設けます。

通常「http://hogehogehogeee.com/trackback/3」とかいうURLになります。
特に規定は無いようですが、トラックバックであることが分かるURLの後ろに記事IDが付くことが多いようです。

トラックバックPing(トラックバック)はREST アーキテクチャで動作する。


なにやら難しそうなこと言ってますが、要は普通のHTTPリクエストで動作しますよ、ってことです。
ブラウザにURL入力して実行するのもREST、Webフォームに入力して送信ボタンを押してもREST。普通のネットサーフィンはほとんどRESTアーキテクチャです。

リクエストメソッドはPOST。コンテントタイプは「application/x-www-form-urlencoded」とする。


このままですね。普通のHTMLの<FORM>タグで作るWebフォームと同じような形式ってことです。

つまり、
<form action="http://hogehogehogeee.com/trackback/3" method="post" enctype="application/x-www-form-urlencoded">
...
</form>

で送信されたと同じデータが飛んできます。
普通の掲示板とかと全く同じです。テストしやすいですね。

ちなみに一般的なブラウザのFORMでのコンテントタイプ(enctype)は特別指定しない限り元々これ(つまりデフォルト)なので、enctype="application/x-www-form-urlencoded"は省略しても動きますよ。付けるに越したことはないですが。

ちなみに昔はリクエストメソッド「GET」、つまりURLアドレスに内容も含めて送信する形式だったそうなのですが、5年前くらいに廃止されたそうです。
現在のほとんどのサイトはPOSTリクエストにしか対応していません。

受信パラメータは4つ。


これから増えるかもしれませんけどね。Pingなんかは活発に議論されてるとか。

とはいえ増えても受信側は無視する(というか気づかない)だけなので、開発者的には今から怖がる必要は無いかと。気が向いたら対応すればOKです。

内容です。
  • title (送信側サイトの記事タイトル)
  • excerpt (送信側サイトの記事概要。普通は最初の500文字程度)
  • url (送信側サイトの記事URL。サイトのトップページとかはダメです)
  • blog_name (送信側サイトの名前)


いちいち送信側サイトの、と書いているので気づいたかもしれませんが、この情報には、トラックバックを送信する「うちの記事関連してるから載せてくれ!」って言ってきた側の情報しか載ってません。

つまり受信者側(開発側)は、受け取ったトラックバックがどの記事に対して送られたかをちゃんと把握して、的確な記事と一緒に表示させてあげる必要がある、と言うことです。

基本的にトラックバックURLは記事ごとに作ることになっているので、URLからどの記事かを判断する必要がありますね。

ちなみにMovable Typeなどもそうですが、これら4つすべてのパラメータを要求するサイトは少ないようです。
私はMovable Typeと同じく、urlのみ必須にしています。


こんなところで。以上。