oEmbed
oEmbed is a format for allowing an embedded representation of a URL on third party sites
oEmbed はサードパーティで URL の埋め込み表現を許可するためのフォーマットです。
という直訳になりますが、Pownce で使われるケースが oEmbed のサイトに載っていたので、その使われ方がなんとなく理解できましたので、僕なりの使われ方をご紹介したいと思います。
例
Twitter などに代表されるマイクロブログなどでは URL だけがポンと投稿されることが多いと思います。oEmbed のサイトの例で言うと、
http://www.flickr.com/photos/bees/2341623661/
という文字列の URL が投稿されることになります。
Twitter はその投稿された内容を parse することはないので、そのまま文字列が読者にも見えるわけですが、これを parse するようなサービスを展開しようとしたときには、
URL を fetch して、URL の先のコンテンツの種別をとってくる
コンテンツの種別に応じて、幅や高さなどの属性を調べる
URL と属性を利用して HTML タグを作成する
自分のサービス内にその HTML を埋め込む
みたいなことをするのだと思います。で、oEmbed を利用したとしても確かに同様な手順が必要なのですが、2 の自分で調べるという手間が省けます。画像の場合、ImageMagick などを利用して属性を取得するなど自分のサーバ内での処理が増えるので、若干しんどい面があります。Mashuper たちは特に面倒でしょう。
そこで oEmbed です。oEmbed はエンドポイントに URL を渡すと必要そうな属性が返却されるという API です。oEmbed のサイトの例で言うと、
http://www.flickr.com/services/oembed/?url=http%3A//www.flickr.com/photos/bees/2341623661/
こんな感じでリクエストを送ります。するとレスポンスとして、JSON ならば、
{
"version": "1.0",
"type": "photo",
"width": 240,
"height": 160,
"title": "ZB8T0193",
"url": "http://farm4.static.flickr.com/3123/2341623661_7c99f48bbf_m.jpg",
"author_name": "Bees",
"author_url": "http://www.flickr.com/photos/bees/",
"provider_name": "Flickr",
"provider_url": "http://www.flickr.com/"
}
という感じで返ってきます。Format としては JSON か XML で返却する感じみたいです。返却されるパラメータの内容も定義されていますが、これについては oEmbed のサイトを参考にするとよいでしょう。上記の例は Flickr ということもあり、Type が photo になっていますが、その他に video、link、rich もあります。photo は画像、video は動画、link は URL、rich は xhtml となるようです。
oEmbed のサイトの「7 章 implements」 に現在 oEmbed が実装済のサービスが記載されています。YouTube など動画サイトやPicasa など写真共有サイトが積極的に対応するようになると、他のサービスを利用する側もちょっと楽ができていいのになあ。
Discovery を埋めてくれていると助かりますね。
<link rel="alternate" type="application/json+oembed"
href="http://flickr.com/services/oembed?url=http%3A//flickr.com/photos/bees/2362225867/&format=json"
title="Bacon Lollys oEmbed Profile" />
まとめ
TypePad のようなブログサービスでも、例えばコメント欄に oEmbed をサポートするサービスの URL が貼り付けられた場合、Anchor タグを生成するのではなくて、画像も表示してあげるようにするとかやるとうれしい人もいるかもしれませんね。(スパムだったりすると気に入らない画像が列挙されて嫌な思いをするケースもあるかもしれませんが。。。)
ちょうど microformats の上級版で、API の簡易版という印象があるので、結構手軽に活用できるのではないかと思いました。せっかくだから画像なんかはオプションで選択すると Exif 情報も含めて送ってくれるなんかだとうれしいかもな。
seealso: