Hatena::ブログ(Diary)

naoyaのはてなダイアリー

July 19, 2005

そのページが誰のものなのかを示す識別子を埋め込む仕様を考えています

今はてなブックマークに、はてなポイントをインフラにした投げ銭機能のようなものを追加したいと思っているのですが、ポイントを送信できる対象がはてなダイアリーだけでは面白くないし、それ以外のウェブサイトにもポイントを送信できるような仕組みを考えています。

そこで、AmazonのアソシエイトIDやGoogle AdSenseのIDのような、各アカウント毎にユニークなIDを発行してそれをウェブサイト上のどこかに埋め込んでもらえばいいのかなと思っています。その埋め込む方法を microformats で実現したらいいんだろうか、と思ってたのですがどうもそういう用途に使うというのは少し違うような気がしています。

naoyaのはてなダイアリー

ということで、引き続き投げ銭機能の仕様を考えています。全体的な機能自体の仕様はだいたい固まったのですが、この識別子のフォーマットについて決めかねています。

具体的にどういうことかというと、例えば(はてなダイアリー以外の)blogがあったとして、そこに面白いコンテンツがありました、そのコンテンツにポイントを送信したいな、といったときに、そのページははてなユーザー誰さんのページなのか、というのを識別する識別子をページに埋め込みたいんです。要は、はてなのIDをどういうフォーマットでページに記入してもらうか。

それに micoroformats がそれに使えるかな、と思っていたのですが

microformat仕様を作るときの心得は「pave the cowpaths」だろうと思います。XML.com: What Are Microformats?

つまり、誰もが何度もやっていることをこそまず便利にしよう、と(牛の通り道を舗装する=めちゃめちゃに使われてでこぼこになっちゃってる場所をキレイにする)。世の中にない新しい事柄をホゲるためにhogeってタグを作るってのはmicroformatsの目指すところではないのでしょう。

fumiakiyの日記

というトラックバックをいただき、どうやら microformats は固有のサービスの独自仕様のために用いるべきものではない、ということがわかりました。

じゃあもう少し枯れた方法で、と思い HTML の meta タグが使えるかなと思いながら、meta タグの Dublin Core 拡張なんかを見ていまして、例えば

<meta name="DC.creator" content="hatena:id:naoya">

とかでどうだろうと思ったのですが、なんとなくしっくり来ません。(というかこういう使い方をしてもいいものなのでしょうか?)

あるいは、XHTMLであると見立てて名前空間で拡張して

<html xmlns:hatena="http://www.hatena.ne.jp/info/xmlns#">
...
<hatena:id>naoya</hatena:id>
...

という方法もあるでしょうが、XHTML でないコンテンツにこれを埋めるというのが気持ち悪い感じもします。

一番原始的なのは

<!-- hatena:id:naoya -->

というのをどこかに埋めておいてもらうとかなんでしょうが、ちゃんと HTML の要素として埋め込めるならそっちの方がベターだから、これはあんまりしたくないなあという感じ。

何かいいアイデアやアドバイスをお持ちの方がいらっしゃいましたら是非コメントなりトラックバックなりでご一報くださいませ。

youheiyouhei 2005/07/19 10:13 一番原始的なのが見えません。。めくれないもんたメソッドだとおもって、推測すると、一番原始的なのって、やっぱコメントで埋め込む方法ですかね。それが一番無難な気がします。

naoyanaoya 2005/07/19 10:16 失礼、修正しました。コメントです。これが無難ですかあ...。

naoyanaoya 2005/07/19 10:18 あるいは Trackback Auto-Discovery みたいにして <!--<hatena:id xmlns=”...”>naoya</hatena:id> --> というのがいいのかなあ。』

namename 2005/07/19 10:22 個人の識別子ならFOAFでよいのでは。

naoyanaoya 2005/07/19 10:28 あ、FOAF をコメントで埋め込む、というのはアリかもしれませんね。

naoyanaoya 2005/07/19 10:38 foaf:accountServiceHomepage と foaf:accountName ではてなIDを表現、FOAF-AutoDiscovery で FOAF ファイルが見つかればそこから ID を取得、見つからない場合は HTML コンテンツ内のコメントから取得を試みる、って感じかな。

tsupotsupo 2005/07/19 11:10 html や foafファイルを自由にいじれない環境の人の場合は、記事本文に何らかの識別文字列を埋め込んでもらう、ということになりそうですね。

naoyanaoya 2005/07/19 11:12 テンプレートをいじれないシステムのこととかを考えるとそうなりますね。無理に XML とかにしないで一番シンプルな方法が良い気もしてきた。悩ましい...。

datedate 2005/07/19 11:18 well-known location なファイルを用意してもらうというのはどうでしょう。robots.txt や w3c/p3p.xml みたいなやつです。自由にファイルを置けないと使えませんが。

naoyanaoya 2005/07/19 11:23 blogサービスとかファイルを置けないところも多いからそれはちょっと難しいかなあ。

aqlaql 2005/07/19 12:16 ページに対する署名の一つとしてはてなIDが使えたら便利と思うのですが、それを考えたらmicroformats的アプローチになってしまいました。

miyagawamiyagawa 2005/07/19 12:21 <link rel=”hatena.donate” href=”http://www.hatena.ne.jp/donate?id=naoya” /> とか。microformats ラブなら、
<a href=”http://www.hatena.ne.jp/donate?id=naoya” class=”hatena-donate” id=”hatena-donate-naoya”>投げ銭</a> など。

naoyanaoya 2005/07/19 12:27 microformats 的な考え方で署名で埋め込む、というのは結構目からうろこです。 > aql

アンカータグに表現できると B ボタンの配布と一緒に実現できるのでいいなあと思っていたり。 > miyagawa さん

トラックバックでは Dublin Core を使うのも悪くない、という意見をいただいており。

複数手段を用意しておいて、HTML的に正しいものを求める人はこっち、実用性が必要な人(テンプレートいじれないとか)にはこっち、みたいなのもありかなという感じもしてきました。

miyagawamiyagawa 2005/07/19 12:39 URLの持ち主の署名ということになればOpenIDなんですけどね。
http://www.openid.net/

fumiakiyfumiakiy 2005/07/19 14:49 単にユーザープロファイルの中に外部ブログへのURLを設定できるようにして、/entrylistみたいな仕組みじゃだめ?エントリ1個1個に毎度埋め込むのはメンドクサイ。Technoratiのrel=”tag”とかやってみたけど1回でめんどくさかった。

naoyanaoya 2005/07/19 15:01 外部URL登録だけだとそのURLが本当に自分のサイトのものであるっていう認証を一度やる必要がありますよね。それをやるとなると、どちらにしろ1度はIDみたいなものをサイトに埋め込んでもらうしかなかったり。あと http://d.hatena.ne.jp/ を A さんに登録されている場合に http://d.hatena.ne.jp/naoya/ は naoya のものだけど http://d.hatena.ne.jp/help は A さんのもの、みたいな微妙な問題もあります。

Technorati の rel=”tag” とは違って、テンプレートをいじれる CMS とかならテンプレートを編集しておくだけで ok なので手間は変わらないと思います。

naoyanaoya 2005/07/19 15:02 テンプレートをいじれる CMS とかならテンプレートを編集しておくだけで ok → (毎回手で埋めるんではなく)初回にテンプレートに埋め込んでおくだけ、の意。

ytoyto 2005/07/19 23:36 コメント埋め込みLOVE!

あと、オールドタイプな話で恐縮ですが、
これ用のはてなバナー画像を直リンクで貼り付けるというのはどうでしょう?(URLにid埋め込み)
「はてなユーザでもあるんですよ」ということもバナーで宣言できるし、SEOだし。

tociyukitociyuki 2005/07/20 16:33 <link rel=”schema.Hatena” href=”http://www.hatena.ne.jp/info/xmlns#” />
としておいて
<meta name=”Hatena.donate” content=”id:naoya”/>
または
<link type=”application/x-hatena-api” rel=”Hatena.donate”
href=”http://donate.hatena.ne.jp/naoya” title=”naoyaさんへ投げ銭” />
はどうでしょう。