TOP > プログラマ2.0日報 > 探しものは何ですか?

あすなろBlogger

facebookに投稿 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク このエントリーをはてなブックマークに追加 この記事をクリップ! livedoorclip ユーザー数 BuzzurlにブックマークBuzzurlにブックマーク この記事をtweetする

探しものは何ですか?

2007.02.22


探しものはなんですか?...って懐かしい表現ですが(年がバレます)、HTMLの上で関連する情報を、主としてロボットがゲットする手段が、内容もやり方もいろいろとあります。よくこんな機能のことを、「AutoDiscovery」と呼びますよね。ちょっと面白がって調べたのですが、いろいろある上に、まとめたサイトとか特にないので、ちょっと書きましょう。


一番良く見かけるタイプのものは、ヘッダ部に link タグで書くものです。たとえば、このページ自体にだって、


<link rel="alternate" type="application/rss+xml"
   title="RSS 2.0" href="/blog/index.xml" />


というかたちで、RSS2.0 形式の RSS が埋め込まれているわけです。だから、ここで href 属性に書かれている http://blog.pasonatech.co.jp/index.xmlにアクセスすれば、RSS を見ることができるわけです。万事この調子、です。ですから、こういう link タグの使い方はご存知の方が多いのでは?とも思います。たとえば、


<link rel="alternate" type="application/x.atom+xml"
  title="Atom" href="/blog/atom.xml" />
<link rel="alternate" type="application/rss+xml"
  title="RSS 1.0" href="/blog/index.rdf" />
<link rel="alternate" type="application/rss+xml"
  title="RSS 2.0" href="/blog/index.xml" />
<link rel="EditURI" type="application/rsd+xml"
  title="RSD" href="/blog/rsd.xml" />


のようにして、Atom 形式のフィード・RSS1.0形式のフィード・RSS2.0形式のフィードの在り処をロボットに教えてやることができるわけです。最後の RSD は少し特殊なもので、これがポイントする rsd.xml は、XML-RPC や ATOM API に対して、そのサービス・ポイントや必須属性を教えるための、決まった XML です。(詳細は「APIを自動判定しちゃう」をご覧あれ。)


今挙げた例は「FEED のさまざまなタイプ」がどこにあるか...でしたが、RSD のようなサービスポイント提供型(よくサービスポイントのURIを「口」なんて呼びますが....)の場合は、ATOM API を中心に、次のようなかたちでサポートされます。


<link rel="service.post" type="application/x.atom+xml"
  title="ブログタイトル" href="/blog/atomapi/default/"/>


これは、このブログの default ブログに対して、新規投稿をするための、ATOM API のアクセスポイントを href 属性で教えることになります。その他の情報は、ATOM API は REST 原理に従っているために、たとえば「ブログを特定する情報」なども URI として畳み込まれているので、RSD のように別フォーマットにする必要がないわけです。


ATOM API というと、現状使われているのは「エントリの新規投稿」がメインのようですが、実はいろいろな「サービスURI」に、REST 原理に従って PUT すれば更新、DELETE すれば削除...というように動作するものであるとされています。ということは、ATOM フィード内でこれが定義されている場合だけではなくて、個別のブログのHTMLエントリを取得した時にだって、


<link rel="service.edit" type="application/x.atom+xml"
  title="記事タイトルの編集URI" href="/blog/atomapi/default/kiji/記事タイトル"/>


とでも見つかれば、その href 属性が ATOM API の編集用のサービス提供URI と考えてもいいでしょう。同様に、まだあまり実装がないようですが、Atom Publishing Protocol では、UploadURI(たとえば画像ファイルをアップロードする)、CategoryURI(カテゴリを編集する)があるようなので、これらもそのうち、


<link rel="service.upload" type="application/x.atom+xml"
  title="ブログ用画像アップロード" href="/blog/upload/default/"/>
<link rel="service.category" type="application/x.atom+xml"
  title="ブログカテゴリ編集" href="/blog/category/default/"/>


のように、あたりまえに挿入されるようになるのかもしれません。


このように link タグを使う AutoDiscovery には、その他に CommentAPI という RSS形式でコメントを投稿する API のものが、


<link rel="service.comment" type="text/xml"
  href="/blog/commentapi/permalink" />


のかたちで CommentAPI を受け付ける「口」を教えてくれるし、あと、それほどには使われていませんが、Trackback の代替のような位置づけの Pingback 仕様が、こういう AutoDiscovery を使います。これは通常 XML-RPC で呼びますので、xmlrpc の「口」と同じことが多いでしょうが、permalink で Pingback 対象になるエントリを特定してもOKな使用になっています。


<link rel="pingback" href="/blog/xmlrpc/permalink" />


また、自己紹介データの形式である FOAF(Friend of a Friend)という XML文書がありますが、これもやはり AutoDiscovery があり、


<link rel="meta" type="application/rdf+xml"
  title="FOAF" href="/foaf.rdf"/>


というかたちで在処を記述します。


この機構はキレイに整理されていて、良いものだとは思うのですが、実は別なやり方(みたいなもの)もあるわけです。このやり方の弱点、みたいなものというと、rel 属性の値で種別を決めて、href 属性で URI を指示する、というだけですから、その他の情報が必要な場合、それを与えることができない、ということにあります。あと、rel 属性の値が「サービス種別を特定する」ということになりますから、「誰が新しい rel 属性値を定めることができるの???」という、マイクロフォーマットみたいな問題がないわけではありません。


そのため、「AutoDiscovery」系のやり方が別にあったりします。たとえば、ある特定のブログページに対するトラックバック先を見つけ出すための機構として、「Trackback AutoDiscovery」という仕組みがあるわけですが、これは発想がそもそも違います。


<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://myblog.jp/blog/2007/02/mydoc.html"
      trackback:ping="http://myblog.jp/blog/trackback/2007/02/mydoc.html"
      dc:title="Trackback Auto Discovery"
      dc:identifier="http://myblog.jp/blog/2007/02/mydoc.html" />
</rdf:RDF>


のような XML を HTML 自体の中に埋め込んでしまいます。とはいえ、この書き方は XHTML の DTD に違反しちゃうことになります。ですから、XHTML に対する検証(validation)をすると、勿論アウトです。ですから、これをコメントでくくって挿入することが多いようです。とはいえこれなら、RDF ベースで適当に好きなように、属性の使いかたを決めてやれば「新しい AutoDiscovery」として使えるようになるわけですよね。


同様なもので「ブログとは別に運営しているホームページから、自分のブログを指し示させるためにはどうすれば...」という問題から、主として「はてな」利用者の間で Account Auto-Discovery が話題になっていたことがあります。これは RDF に FOAF(Friend of a Friend)フォーマットを流用して、


<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:foaf="http://xmlns.com/foaf/0.1/">
<rdf:Description rdf:about="http://www.hatena.ne.jp/info/perl/autodiscovery/test">
  <dc:creator>
    <foaf:Person>
      <foaf:holdsAccount>
        <foaf:OnlineAccount foaf:accountName="hatena">
          <foaf:accountServiceHomepage rdf:resource="http://www.hatena.ne.jp/"/>
        </foaf:OnlineAccount>
      </foaf:holdsAccount>
    </foaf:Person>
  </dc:creator>
</rdf:Description>
</rdf:RDF>


なものになってしまったことが、マイクロフォーマットとの関連で批判されたり..とか、いろいろあったようです。こういう具合に「自動で探す(AutoDiscovery)」は、ホントにいろいろなものが利用されていますね。

投稿者 : 杉浦 こずえ | 投稿日時 : 2007.02.22 17:36

あすなろBLOGのトラックバック・コメントは承認制になっています。
すぐにブログに反映されませんので、ご了承ください。

トラックバック

エキサイトリーダー 
どうも、おはようございます。 最近、私はRSSリーダーの媒体としまして、エキサイトリーダーを使用している 事にしています。 しかしながらも、RS...

トラックバックURL


コメントの送信








カレンダー

<< 2007年02月 >>

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28      

最新のエントリー

最新のトラックバック

最新のコメント

Tag

バックナンバー