Jan 19, 2005

No Follow, No Life

たかがIndexingのクオリティを上げるトリック(しかも実質的にユーザーやアプリケーションにオフロードしただけ)を10年来の技術革新と呼んでしまうのはどうかと思いますね。まあアプリケーションベンダーがYesと言っているのだからいいのだという言い方もできますが、この調子でやっていればMachine writableだけどHuman writableでないHTMLの拡張仕様が出来上がってしまいます。

ITmediaニュース:Googleなど、リンクスパム対策に乗り出す――「ノーフォロー」タグを導入へ

最近のネタだとTechnorati Tagsあたりも結構怪しいと思っています。Technorati TagsではA要素のrel属性の名前空間を実際「無制限に」「混沌と」使ってしまいます。A要素やLINK要素のrel属性というのはそもそもリンク先の当該文書に対する「関係」を記述するものであって、一般的な「アノテーション」を記述するものではなかったはずです。スタイルシートを示すLINK要素に対して「rel="stylesheet"」と付記するように「ごく秩序立って」利用されてきたはずなのですがね。

そういうわけで将来この属性を使ったまともな拡張ができなくなる可能性もあるでしょう。Google他が「rel="nofollow"」とか言い出したのは、この名前空間を自分たちの都合のいいように早いうちに予約してしまった方がいいんじゃないか、という判断が働いているように思えます。

同じ仕組みを使って、Webブラウザがrel="nofollow"のリンクにアクセスするときにはRefer(r)erを渡さないようにすることも可能ですが、そちらの方が技術的にも社会的にも重要な意味があります。と言うよりもですね、こういう仕様を標準化してWebブラウザにあまねく採用していただき(いやまあそれは無理だとして仮に採用されなかったとしても提案・標準化したことには意義がある)、その仕様を(不肖Google、Yahooも)Indexingに流用させていただきます、という話の方が筋が良いと思います。話としてアサマシクなく、むしろスガスガシイです。

と書きながら自分でもアサマシクも"nofollow"を指定したりしているわけですけれど、私が対象にしているのはPing URLへのリンクだけで、それ以外のところに指定するとリンクの意義を損ないかねないと考えています。ですが、そういう思惑とは逆にと言うか無関係に、安直に指定してしまう人が増える気もしています。特にプラグインはその傾向を加速しがちですよね。つまるところ、お互いにリンクの効果を弱め合うチキンレース(?)の始まりだとも言えます。ブログはリンクの効果が強すぎたのは確かで、だからこそスパマーにも付け狙われやすくもあり、この時点で多少是正される方がよいのかもしれません。が、残念ながらこれはみんなで不幸になるレース、あるいは胴元だけが儲かる博打です。

つまりですね、サーチエンジンやポータルは、それを支える技術やマネーの規模がいつの間にやら増大し、淘汰が進み、ほとんど寡占が完成しつつある状況です。しかもそれらは広告料を主収入としているわけです。いずれこのシステムはテレビや新聞同然(ビジネスモデルはすでに同然です)となるでしょう。あなたが自分のブログにAdSenseを付ける時、それは二次広告収入というメリットをもたらすかもしれませんが、広告の製品やサービスに対してネガティブなことを書けば広告が表示されないように「技術的には」できますし、サーチエンジンのインデックスから削除することも「技術的には」できます。それが嫌なら製品やサービスの宣伝をするしかありません。つまりあなたは『Googleテレビ』の出演者・制作者になったのです。そしてまた今、あなたはスパムコメントが減るという餌に釣られていますが、これは一義的には検索結果の質を上げる(=広告の効果を上げる)ための意味しかありません。「立ち位置をもう少し右にすると画面映りが良くなるよ」という甘言の裏に「そこに立たれたままだと後ろのスポンサーの文字がよく見えない、スポンサーが煩いから何とかしろ」という意図があることに出演者はなかなか気が付かないものなのでしょうか。

さて、もう一度身近な経験を元に自問してみるとよいでしょう、

『スパムフィルタリングを施したからと言って、
 自分のところに送られるスパムメールが本当に減ったのか?
 減ってないとしたら誰が儲かったのか?』

おまけですが、Movable TypeのNofollow pluginを作ろうとしていたのですが、先越されてしまいましたー。しかし、ダイナミック・パブリッシング用のプラグインが私のところでは正常に動きません。

Movable Type Publishing Platform: Movable Type 'nofollow' plugin

コメント欄にも書いてありますが、MTPingsコンテナタグ内部に対する処理が怪しいです。これはちょっと考えたら理由が分かりました。

なぜなら、Nofollow pluginの処理ではまずサニタイズを行い、その結果生成物に対してrel属性を追加しているからです。この前処理のサニタイズでは、Sanitize Specで示されたルールに従ったタグおよび属性しか通過させません。

サニタイス: 入力された文字を安全に

ですから、MTPingsコンテナの内部にこのルールにマッチしない要素が含まれれば、そのタグ部分は除去されます。デフォルトでは、A要素に対してはhref属性だけを通過させることにしていますから、そのままではname属性やrel属性、title属性を通過させることができません。また、やはりデフォルトでは<br />は通過しますが、<hr />は通過させません。そういうわけでユーザーに自分の要求にミートするようなSanitize Specを定義しなくてはならないわけです。

基本的にはMTPingsコンテナ内に何を書くかはユーザーの自由ですし、それにミートするようなSanitize Specを指定したとすれば、それは結局「サニタイズ」として意味があるのかしら、と思います。もう少し説明を加えると、下の赤い部分の方が青い部分よりハードな制約が必要なはずですが、実際には同じSanitize Specが適用されるということです。つまり、赤の部分に合わせれば青の部分の記述力が制約されますし、青に合わせれば赤への制約としては意味がないでしょう。

追記1: よく考えたら、MTPingTitle、MTPingURL、MTPingBlogName、MTPingExcerptには予めサニタイズがかかっているじゃないか。だから上の図で赤の部分に危険なコードは含まれない。ということは、危険があるとしたら青い部分であってMTPingsをまるごとサニタイズするのはまったく意味がない。

したがって、nofollow.plの27行目あたりにあるtags_to_filterのPingsの行をコメントアウトした上で、テンプレートのMTPingsの部分に以下のどちらかの修正を加えればよい。

<MTPings nofollowfy="1">
<p id="p<$MTPingID$>">
&raquo; <a href="<$MTPingURL$>"><$MTPingTitle$></a> from <$MTPingBlogName$><br />
<$MTPingExcerpt$> <a href="<$MTPingURL$>">[Read More]</a>
</p>
<p class="posted">Tracked on <$MTPingDate$></p>
</MTPings>
<MTPings>
<p id="p<$MTPingID$>">
&raquo; <a href="<$MTPingURL$>" rel="nofollow"><$MTPingTitle$></a> from <$MTPingBlogName$><br />
<$MTPingExcerpt$> <a href="<$MTPingURL$>" rel="nofollow">[Read More]</a>
</p>
<p class="posted">Tracked on <$MTPingDate$></p>
</MTPings>

追記2: 一応、こんなBookmarkletも作っておきました。"nofollow"なA要素を見つけてcolorをlimeにします。

Show "nofollow" (Drag this and drop your brower's menu bar)

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com