« 2014年11月 | メイン | 2015年12月 »

2015年04月 アーカイブ

2015年04月01日

HTML 4.1が勧告されました (エイプリルフールの嘘情報です)(追記あり)

HTMLの新しいバージョンであるHTML 4.1が勧告されました。
HTML 4.1で追加されたのはエイプリルフール用の仕様のみとなります。
たったこれだけの仕様追加でバージョンが上がってしまうのは奇妙に思われるかもしれませんが、理由を含めて解説してみたいと思います。
導入までの経緯
毎年、4月1日のエイプリルフールには各サイトが創意工夫を凝らしたエイプリルフールの特設ページを作成することが慣例となっています。
多くの特設ページはエイプリルフールが終わると削除されるのですが、一部のコンテンツはインターネット上に残り続けています。
この傾向は、特に個人のブログに公開されたエイプリルフールのエントリーに顕著です。
4月1日中はインターネット利用者は警戒しつつネットを利用していますが、普段のネット利用時には多くの利用者は警戒を解いてしまいます。
このような時に偶然エイプリルフールのコンテンツに訪れると、書かれている情報を鵜呑みにしてしまう危険性があります。
また、見た目ではエイプリルフールの特設ページと判断がつくようになっていても、スクリーンリーダー利用者には判断がつかないことが多く、アクセシビリティー的にも問題です。
このようなページは検索結果に表示されないよう各検索エンジンは改良され続けましたが、異常とも言える程の手の込んだ特設ページとのイタチごっこに検索エンジンが根を上げ、エイプリルフールのコンテンツ判断のための仕様の提案に至りました。
嘘の情報に驚いてブランコから転げ落ちることがないようにするためにも、賢明な判断だったと思います。
以下、「嘘情報」「嘘ページ」等の用語を使っていますが、『エイプリルフールの嘘情報』という意味です。全て書いてしまうと、冗長になっていまい読みづらいので省略していますのでご注意ください。
変更点ですが、以下の要素とmeta要素用の指定が追加されました。
aprilfool要素
嘘情報を指定する時に使用します。
ブログでエイプリルフールのエントリーを公開する等、ページの一部に嘘情報がある時を想定しています。
aprilfool要素 使用例
<aprilfool>HTML4.1がリリースされました</aprilfool>
meta要素による指定
ページ全体が嘘情報である場合に使用します。
特設ページや特設サイトで使用することを想定しています。
meta要素による指定 使用例
<meta name="aprilfool" content="true">
仕様の策定段階では嘘エントリーや嘘ページへのリンク用に、link要素のrel属性に「aprilfool」を指定する案もありましたが、複雑になりすぎるためにHTML41まで見送られました。
<link rel="aprilfool" href="[嘘情報のURL]">HTML4.1がリリースされました</link>
また、ディレクトリ配下全てを嘘情報として指定できる「aprilfool.txt」というファイルを用いる仕様も提案されていましたが、こちらはrejectされました。
aprilfool.txtについて、少し興味深い話があったので紹介します。
当初は、嘘情報ディレクトリの直下にaprilfool.txtファイルがあるかどうかで判定する仕様だったのですが、嘘情報判定処理を先行して実装した検索エンジンが、偶然とある企業サイトのルート直下にあったaprilfool.txtファイルを認識してしまい、サイト全体が嘘情報と判定されてしまう事故が発生してしまいました。
エイプリルフールのジョークのアイディアをメモしたファイルだったらしいのですが、誤判定によりPVが激減してしまい、担当者にとってはジョークでは済まない事態になったそうです。
そこで、aprilfool.txtには、AprilFool-Keyと呼ばれる文字列を含める仕様が提案されました。AprilFool-Keyは、UUIDをBase64でエンコードしたものです。
最終的にrejectされた理由なのですが、そもそもディレクトリ配下全てを嘘情報として指定するユースケースがどれだけあるのかという議論が発端になりました。
誤判定の事故にもあったように、サイト全体を嘘情報として指定することさえもできる非常に強力な仕様です。
エイプリルフールどころか、日々発信している記事が嘘の記事で、サイト全体が虚構であると謳っているサイトでさえ、後に「噓から出たまこと」で嘘でなくなる事態が発生し、サイト内に誤報や謝罪等の、事実の記事が紛れ込んでいます。
このようなサイトでもaprilfool.txtは使われないだろう(そもそもエイプリルフールの記事ではないので本来は仕様の対象外ですが...)と予測できることから、aprilfool.txtは不要だという意見が多数となりました。
「一部の事実の記事は『<meta name="aprilfool" content="false">』を指定すれば良い」という意見もありましたが、rejectの流れを覆すにはいたりませんでした。
なぜHTML5.1以降ではなくHTML 4.1?
最初は、当然のようにHTML.next、HTML5.1の文脈で仕様策定が進んでいました。
しかし、ある古参のサイトの管理者から次のような意見が出されました。
「古いCMSを使ってサイトを管理しているが、HTML 4.01の出力までしか対応していない。もし、エイプリルフール用の仕様がHTML5.1以降になってしまうと、嘘記事を公開することが難しくなってしまう。」
なるほど、もっともな意見です。
このため、古いCMSでも少しの修正で対応できるようにするために、HTML 4.01にエイプリルフール用の仕様だけを追加したHTML 4.1を策定することになりました。
これにより、サポートが終了したCMSでも例外的にHTML 4.1に対応したバージョンがいくつかリリースされてはじめています。また、開発が完全に止まっているCMSであっても、HTML 4.1対応のパッチやプラグインを有志が公開しており、バージョニングの方針転換が功を奏する結果となりました。
ブラウザの挙動
嘘情報が含まれたページをブラウザで開くと、警告が表示されるようになります。
日本語版のブラウザの場合、『このページはエイプリルフールのページです。』もしくは『このページにはエイプリルフールの情報が含まれています。』と警告されます。
一部のブラウザでは設定変更で嘘情報を非表示にすることもできますし、同様の機能を持つプラグインも出てきていますので、気になる方は導入してみてはいかがでしょうか。
子供等の判断能力が未熟な方が使われるブラウザでは、嘘情報の非表示機能は必須になるかもしれません。
その他の主な事例
検索エンジン側の対応は様々です。
デフォルトの検索結果に嘘情報が表示されないようになったところ、検索オプションで指定できるところ、面白いところでは「嘘情報のみを検索する」オプションを追加した検索サイトもあります。
また、嘘情報が簡単に判断できるようになったことから、エイプリルフールのジョークを収集しまとめてみることができるWebサービスが登場しました。
この仕様を悪用する動きも出てきました。
ある企業が、不祥事に対する謝罪文が検索結果に表示されないことを狙い、謝罪文にaprilfool要素を使用する事例が発生しました。
エイプリルフールコンテンツ判定処理を導入し始めた頃の検索エンジンは、嘘情報を検索結果に表示しないエンジンばかりだったからです。
しかし、ジョーク収集サイトに謝罪文が収集され、aprilfool要素を使用していることが発覚し、炎上してしまいました。
今では各検索サービスはこのような使用方法にはペナルティを課し、企業サイト全体のランクを下げことにしているようです。
まとめ
わかっているとは思いますが、このエントリー自体が嘘情報ですよ。
2015/04/02 追記
このネタは、上に書いた通り、今の状況が問題ではないかと言う問題提起です。

何年か前、エイプリルフールとちょうど反対の10月1日に書いたエントリーが以下。
この時はほとんど反応がなかったのですが、今回はメタ的な手法を使ってエイプリルフールのジョークとして書いたためか、それなりに大きな反応がありました。
各所の反応を見ていると、やはり同じようなことで困っている人や問題だと思っている人がいました。
この仕様は、長い間考えて(妄想とも言う)いたことを書きだしたもので、良いアイディアとして捉えられたようです。
ただ、今は日本語圏内の反応しかわからないため、英語に翻訳したものを書いてみました。
Google翻訳を使っただけなので変な部分もあるかも知れませんが...。
GitHub上に公開していますので、おかしなところがあればpull requestをもらえればと思います。
あと、本当に仕様化するのであれば、aprilfoot要素ではなくjoke要素のほうが汎用的かなと思っています。
Google

タグ クラウド