Movable Typeのトラックバック・システムによって、ウェブログ間で一対一のコミュニケーションや対話が可能になります。 たとえば、あなたがMovable Typeを使ったウェブログに、鑑賞したばかりの映画について書いたとします。 それを、Movable Typeを使っている別のウェブログ作成者(ブロガー)が読み、それについてエントリーを書こうとしています。 彼はあなたのウェブログにコメントを投稿するよりも、そのコメントを自分のデータベースに保管し自分のサイトにホストしたいと考えました。
トラックバックを使うと、別のブロガーがあなたのウェブログにpingを自動送信し、あなた発の投稿に関してエントリーを書いたことを知らせることができます。 それによって、以下の2つが達成できます。
しかし、トラックバックは、エントリーについてのコミュニケーション以上の役割を果たします。 トラックバックpingのURLは、ウェブログのカテゴリーに関連づけることもできます。 そしてそのカテゴリーにエントリーを投稿するたびに、関連付けたURLに、その投稿を通知することができます。 これによって、別のサイトではウェブ中に存在する投稿の参照先を蓄積していくことができます。
たとえば、あなたがPerlについてのサイトを開いているとします。そして他のウェブログにあるPerlの記事へのリンク集を提供したいと考えました。 トラックバックを使うと、別のウェブログからも、あるカテゴリーに属する新しいエントリーが投稿されるたびに、あなたのウェブログの該当するカテゴリーにpingを送信することができます。
これらはトラックバックの使用例にすぎません。 トラックバック自体は、ウェブログ間で一対一のコミュニケーションを実現するフレームワークです。トラックバックは、ウェブログ間の議論を追跡したり、別のコンテンツへのリンクを提供したり、ゲストによるエントリー作成をエミュレートしたり、そのほか、いろいろなことができます。 トラックバックのメカニズムはとても単純です。 別のサイトにあなたの存在を知らせたい場合は、そのサイトにpingを送信します。 これらのping(簡単なHTTP GETリクエスト)のフォーマットは後述します。 Movable Typeにトラックバックを実装するにあたり、シックスアパート社では、カテゴリー対象のping送信、特定のIPアドレスの禁止、自動RSS出力、および新しいpingのメール通知といったアクションに対し、パスワードで保護しました。
つまり、私達はMovable Typeのユーザー以外の方々にもトラックバックからの恩恵を受け、活用してもらいたいと考えています。 この機能をぜひ他のウェブログのツールにも統合してもらいたいと考えています。そのために、pingのフォーマットを下に公開し、基本的なフレームワークをとても簡素なものにしています。 この件に関するご質問はtrackback@movabletype.jp宛てにメールで遠慮なくお問い合わせください。
新しくMovable Typeを使う場合は、トラックバックのタグがデフォルト・テンプレートに含まれているため、Movable Typeをインストールすれば直ちにトラックバックを使用できます。 以下のステップ5まで飛ばします。
既にMovable Typeを使っている場合は、テンプレートをトラックバックpingが扱えるように設定する必要があります。 以下のステップ1から始めてください。
http://www.movabletype.org/default_templates.shtml#trackback
http://www.movabletype.org/default_styles.shtml
独自のスタイルシートを使っている場合は、トラックバック・リストのテンプレートをカスタマイズしてあなたのサイトのスタイルに一致させるか、.trackback-url、.trackback-body、および.trackback-postクラスに新しいCSSスタイルを加えます。
function OpenTrackback (c) {
window.open(c,
'trackback',
'width=480,height=480,scrollbars=yes,status=yes');
}
次に、<MTEntries>タグ内に、以下のコードを加え、各エントリーのトラックバック・リストへのリンクを表示します。
<MTEntryIfAllowPings>
| <a href="<$MTCGIPath$>mt-tb.cgi?__mode=view&entry_id=<$MTEntryID$>" onclick="OpenTrackback(this.href); return false">TrackBack
(<$MTEntryTrackbackCount$>)</a>
</MTEntryIfAllowPings>
<MTEntries>タグの直後に、以下のタグを加えます。
<$MTEntryTrackbackData$>
次に、個別のエントリー・アーカイブ・テンプレートのどこかに、以下の同じタグを加えます。
<$MTEntryTrackbackData$>
再構築すると、これがあなたの公開ファイルに必要な情報を加え、それによってMovable Typeのブックマークレットが、トラックバックの許可されているエントリーを解析して、これらのエントリーのping URLを獲得できるようになります。
これがトラックバックを使って別のサイトにある投稿を参照するプロセスを簡素化します。
ブックマークレットをすでに使っている場合は、現在使っている同じフィールドに加え、「トラックバックする」フィールドも使い、ブックマークレットを再び作成します。 ブックマークレットをまだ使っていない場合は、新しく作成します。
「メインメニュー」に移動し、「クイックポストの作成」をクリックします。 表示される指示に従って新しいブックマークレットを作成し、「トラックバックする」フィールドを含んでいることを確認します。
ブックマークレットはブラウザで以下のページにアクセスすると、テストできます。
http://www.movabletype.org/trackback/
ブラウザがそのページを表示したら、Movable Typeのブックマークレットをクリックします。 開いたウィンドウの上部には、「トラックバックするエントリーを選んでください:」というプルダウン・メニューが表示されているはずです。 メニューには、上のページにあるトラックバック有効のエントリーがすべて一覧されています。
メニューが表示されていると、ブックマークレットは機能しており、トラックバックの使用を開始できる状態です。
メニューが表示されていない場合は、mt-check.cgiを実行し、LWP::UserAgentがインストールされているかどうかをチェックします。 このモジュールはトラックバックを使うのに必要です。
トラックバックは、一般的に、別々のサイトにあるエントリーの間でコミュニケーションを取るためと、別々のサイトにあるカテゴリーの間でコミュニケーションを取るための2つの目的で使用できます。 さらに、それぞれのシナリオで、あなたはエントリーを投稿するコンテンツ作成者になることも、トラックバック・アイテム(エントリーであってもカテゴリーであっても)に関する投稿エントリーのリストを集めるコンテンツ収集者になることもできます。
コンテンツ作成者として:新しいエントリーを投稿し、別のウェブサイトのエントリーにpingを送信する場合は、上述の「トラックバックの設定」のステップ5で設定したMovable Typeのブックマークレットを使い投稿することも、手動で「新しいエントリー/エントリーの編集」画面に別のサイトのトラックバックping URLを加えることもできます。
コンテンツ作成者として: トラックバック先のURLのリストを1つのカテゴリーに関連付けられます。 あなたのサイトで新しいエントリーをこのカテゴリーに投稿すると、リストにある各URLはこの新しいエントリーの情報とともにpingされます。
pingがあなたのサイトのトラックバック・アイテムに送られると、システムは、Movable Typeのデータベースにpingを保存するほか、トラックバック・アイテムのRSSフィードを更新します。 XML出力は、ローカル・アーカイブ・パスにあるID.xmlというファイルに保存されます。そこではIDがトラックバック・アイテムの数字から成るIDになっています。
トラックバックは、pingにRESTモデルを使い、各トラックバック・アイテムが、その数字から成るIDによって固有のURLを有することを確認します。
http://foo.com/mt/mt-tb.cgi?tb_id=ID
上のIDは、トラックバック・アイテムの数字から成るIDです。 リクエスト・パラメータは以下のようにURLの最後に追加されます。
http://foo.com/mt/mt-tb.cgi?tb_id=ID&title=TITLE&url=URL
上は一例です。クエリーのパラメータには以下があります: title (エントリーのタイトル)、excerpt (エントリーの概要。80文字以上の場合は80文字に削られ、最後に「...」が付加)、url (エントリーのパーマリンク(permalink))、およびblog_name (エントリーが投稿されたウェブログ名)。
応答は、簡単なXMLフォーマットで、アプリケーション・レベルのエラー検出が有効です。HTTPレベルのエラーは、たとえば、トラックバック先のURLがサーバー上に存在しない場合にping送信すると、404エラーが返されるなどの形を取ります。
ping送信に成功すると、以下の応答が返ります。
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>0</error>
</response>
ping送信に失敗すると、以下の応答が返ります。
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>1</error>
<message>The error message</message>
</response>
アプリケーションはもちろん、将来必要なときに備え、フィールドを追加できるようにしておくべきです。 ただし、応答のXML構造は将来も同じです。
http://foo.com/mt/mt-tb.cgi?tb_id=ID&__mode=rss
上のIDは、トラックバック・アイテムの数字から成るIDです。
このリクエストへの応答は、このリクエストに対するエラーが同じフォーマットで返るか、<response>タグに挟まれたRSSマークアップに、そのトラックバック・アイテムのトラックバックpingが列挙されているかのいずれかです。
以下に例を挙げます。
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>0</error>
<rss version="0.91"><channel>
<title>TrackBack Test</title>
<link>http://this.is/the/trackback/item/link/</link>
<description>Description of the TrackBack item</description>
<language>en-us</language>
<item>
<title>TrackBack Demo</title>
<link>http://this.is/the/permalink/</link>
<description>Excerpt</description>
</item>
</channel>
</rss></response>
トラックバック関連要素についてのドキュメントは以下にあります。