Web Bugをフィードに埋め込む

ひとつ前のエントリで取り上げたように、エントリ内の画像を利用するとエントリの閲覧者数を大雑把に知ることが可能で、リファラを数え上げるなどをすればいろいろなサービス経由での閲覧者数を大雑把に把握することも可能。しかし、フィードの本当の購読者数にはそのまま応用することは出来ない。そこで古くからあるWeb Bug(あるいはWebビーコン)と呼ばれる手法を使ってやってみようとかそんな話。

Web Bugは小さな画像をWebページに埋め込んで、その画像へのアクセス・ログを閲覧してニヤニヤするというある程度正確なページ・ビューを割り出すという類のもの。Webページへのアクセス・ログによる統計と違い、いわゆるグラフィカルなブラウザのアクセスだけを対象にできるので、より価値のあるデータを得ることが出来る。

これをフィードに応用する場合も特に難しいことはなく、適当に各エントリにあたる部分に小さな画像を埋め込むようにしてやれば良いだけ。具体的にMovable TypeAtom Indexテンプレートを例にすると、

<entry>
  <title><$MTEntryTitle remove_html="1" encode_xml="1"$></title>
  <link rel="alternate" type="text/html" href="<$MTEntryPermalink encode_xml="1"$>" />
  <link rel="service.edit" type="application/atom+xml" href="<$MTCGIPath$><$MTAtomScript$>/weblog/blog_id=<$MTBlogID$>/entry_id=<$MTEntryID$>" title="<$MTEntryTitle encode_html="1"$>" />
  <id><$MTEntryAtomID$></id>

  <published><$MTEntryDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></published>
  <updated><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></updated>

  <summary><$MTEntryExcerpt remove_html="1" encode_xml="1"$></summary>
  <author>
    <name><$MTEntryAuthorDisplayName encode_xml="1"$></name>
    <MTIfNonEmpty tag="MTEntryAuthorURL"><uri><$MTEntryAuthorURL encode_xml="1"$></uri></MTIfNonEmpty>
  </author>
  <MTEntryCategories>
    <category term="<$MTCategoryLabel encode_xml="1"$>" />
  </MTEntryCategories>
  <content type="html" xml:lang="<$MTBlogLanguage ietf="1"$>" xml:base="<$MTBlogURL encode_xml="1"$>">
    <$MTEntryBody encode_xml="1"$>
    <$MTEntryMore encode_xml="1"$>
    <div><img src="http://example.com/images/web-bug.png?id=<$MTEntryID$>" alt="Web Bug" width="1" height="1" /></div>
  </content>
</entry>

こんな感じにcontents要素の最後にWeb Bug画像を追加するだけで良い。各エントリ固有のIDをWeb Bug画像のクエリとして追加しておく必要はある。他のblogツールでもこの程度の手間で実現できるはず。あとはWebサーバーのログを閲覧してニヤニヤすればフィードの購読者数を割り出せば良い。このケースでは、フィードのみにWeb Bug画像を追加しているので、Web Bug画像へのアクセス数とフィードの購読者数はほぼ一致するはず。

このサイトのフィードにはまだWeb Bug画像は埋め込んでいない。やろうかなーとかやってみたいなーとは思うけど、Web Bug画像に嫌悪感を抱く人もいるらしいので躊躇。