ページ

2004年1月27日火曜日

.Text のトラックバック

あらためて説明しなくとも、Google あたりで 「トラックバックとは」 とかのキーワードで検索するとたくさん出てきます。なので、一般論はそちらにお任せしちゃいます。
ここでは、.Text を使っている場合のトラックバックについて書きます。


.Text でトラックバックするには?


実は何もする必要がありません。記事を書くときに単に PermaLink のリンクを含めるだけで OK です。(PermaLink っていうのは、各記事への URL のことです。たとえば、この記事だと http://www.divakk.co.jp/blog/aoyagi/archive/2004/01/27/442.aspx になります)


PermaLink が含まれた記事を POST すると、自動的にトラックバックを送ります(もちろん、相手がトラックバックを受けれる blog じゃないとダメですが。詳細は後述)。


ただ、1つだけ気をつけたほうがいいことがあります。
トラックバックのときに相手先に送る情報は、



  • title … 記事のタイトルです。たとえば、この記事だったら 「.Text のトラックバック」 です。

  • excerpt … 英単語の意味は引用とか抜粋とかですが、まぁ、コメントだと思ったらいいです。

  • url … 自分の URL です。トラックバックする元、たとえば、この記事が PermaLink を含んでいるとしたら、この記事自身の URL です。

  • blog_name … そのまんま blog の名前です。ここだったら 「青柳臣一 blog」 ですね。

  • (あと "charset=utf-8" も含めようという方向になってます。が、まだ Trackback 仕様書には載ってないです)

があります。ここで、title、url、blog_name は問題ないんですが、excerpt がちょっと問題です。.Text では Excerpt が記入されていない場合は、単にタイトルを送っちゃいます(title と excerpt が同じものになります)。
じゃ、Excerpt はどこで記入するのかというと、POST のページの下のほうにある "Advanced Options" を開くと出てくる Excerpt です。なので、記事中に PermaLink へのリンクがある場合はここにコメントを書きましょう。するとこれが相手先に送られます。


トラックバックするとどうなるのか?


ここでは、トラックバックする相手も .Text だとします。
.Text では、コメントやトラックバックをひっくるめて Feedback と呼んでいます。こちらからある記事にトラックバックすると、相手の記事の Feedback のところに表示されるようになります。見た目はコメントとほとんど区別できません。ただ、Excerpt に書いた内容がコメントとして表示され、自分の記事への URL がリンクされます。(うーん、言葉で書くのが難しい(^^; )


まぁ、結局、トラックバックっていうのは 「自動コメント&自動逆リンク」 なわけです。


ところで、私はトラックバックかどうかを簡単に見分けられたほうがいいかな?と思って "(トラックバック)" と表示されるようにスキンを変更してます。


仕組みは?


ほんとうは、PermaLink の URL とトラックバック用の URL は別物です。ではなぜ PermaLink だけからトラックバックできるんでしょう?


実は各記事にはトラックバックの URL がわかるようにコメントが埋め込んであります。
HTML のソースを見ると


<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://www.foo.com/archive.html#foo"
dc:identifier="http://www.foo.com/archive.html#foo"
dc:title="Foo Bar"
trackback:ping="http://www.foo.com/tb.cgi/5" />
</rdf:RDF>
-->

なんて感じのが見つかります。これの trackback:ping 属性がトラックバック用の URL です。
このように HTML 中にコメントとしてトラックバックの URL を埋め込んで自動的にトラックバックできるようにすることを Auto-Discovery というようです。
http://www.movabletype.org/docs/mttrackback.html#autodiscovery of trackback ping urls


.Text は記事を POST する処理の中で、



  1. 記事中に PermaLink があるかどうか探す。

  2. あったら、そのリンク先を HTTP GET してみる。

  3. GET できたら、その HTML 中に trackback:ping があるか探す。

  4. あったら、そこへトラックバックする。

  5. 以上を記事中のすべての PermaLink について繰り返す。

といった処理を行っています。
そんなわけで PermaLink へのリンクを含めるだけで、自動的にトラックバックしてくれるわけです。


というように、.Text 自身が Auto-Discovery を使うことを前提にしているので、どこにもトラックバック用の URL が表示されてないんですよね。これは、どっかに表示するようにしようと思います。


ところで、「おいおい 2~4 って HTTP のやり取りだろ。重いんじゃないの?」 とお思いの方もいるかとは思いますが、.Text ではこの部分はちゃんと ThreadPool を使って別スレッドで行うようになっています。

7 件のコメント:

  1. > .Text 自身が Auto-Discovery を使うことを前提にしているので、どこにもトラックバック用の URL が表示されてないんですよね。


    なるほど。そういうことだったのですね。

    ちなみにMovable Typeの場合は、Auto-Discoveryを有効にするかどうか設定できるのですが、私の場合、意識しないところで勝手にトラックバックが送信されるのが怖いのでOFFにしてます。だから、トラックバック先のURLも手動で取得してました。Auto-Discovery、使ってみれば結構便利なのでしょうか・・・。

    返信削除
  2. すみません、私のテストとかでこの記事がトラックバック広場になってしまいました。


    で、なぜか私のサーバー -> 青柳さんのサーバーはうまく動くのですが、私のサーバー -> 私のサーバーとか、先が私のサーバーになってたらトラックバックが動いていませんね。なんか他に設定あるのかしら。

    返信削除
  3. >このように HTML 中にコメントとしてトラックバックの URL を埋め込んで自動的にトラックバックできるようにすることを Auto-Discovery というようです。


     これって、外人な人にリンクしたエントリ書くとトラックバックが送られちゃうって事ですよね。

     utf-8 で送るってのを本家ソースに吸収して貰わないとトラックバック飛んだ先で迷惑になるかなぁ。


     トラックバックせずにエントリする方法も選べると良いですね。

    返信削除
  4. 参考にさせていただきました。

    しょっちゅう拝見してます。

    私もがんばって.Textの勉強をしてみます。(^^


    返信削除
  5. .TEXTは、Auto-Discovery を使うことを前提にしているとあるのですが、これを勝手に引用元にTBを送らないようにするのは、難しいでしょうか。

    返信削除
  6. 青柳さま:

    コメントにも書かせていただきます。(貴重なスペースを消費してしまい、恐れ入ります)

    Web.configでの設定で調整する件、ありがとうございました。

    返信削除