探しものは何ですか?
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のトラックバック・コメントは承認制になっています。
すぐにブログに反映されませんので、ご了承ください。





