2007-07-19

HTMLに書いてはいけないもの

めも。

HTMLに見た目を指定することを書いてはいけないとよく言われるが、それだけでなく、user agentの動作を指示することにも慎重でなければならない。動作を指示する記述とは、例えばtarget属性や、HTML 5のlink typeのprefetch、sidebarnofollowなどのことである。

これらがあまり有用でないのはuser agentに柔軟な対応をとる余地を与えないということが一番の理由である(当然ながらuser agentにはIEFirefoxなどの「ウェブブラウザ」だけでなく、検索エンジンロボットダウンロードツールなども含まれる)。target属性について考えよう。あなたは何故そのリソースを新しいウィンドウで表示して欲しいと思うのだろう。自分とは違う人や組織によって作成されたリソースだからだろうか。ならば「自分とは違う人や組織によって作成されたリソースだ」と書くだけで良い。user agentは新しいウィンドウで表示するかもしれないし、「別の人によって作成されたリソースです」とアラートを出すかもしれない。あるいは本文と平行して見るべき図だからだろうか。ならば「本文と平行して見るべき図だ」と書くだけで良い。user agentはユーザの設定によって新しいウィンドウで表示したり、サイドバーに表示したりするだろう。「sidebar」についても同じようなことが言える。サイドバーに表示して欲しいのは何故だろう。もしそのリソースが目次ならば、目次と書くだけで良い。(「nofollow」がおかしいというのはHTML 5を策定している人たちもわかっていて、ただ互換性を考慮したようだ。しかし、厳密に言えば、"nofollow"はlink typeとして実装するべきものかどうか疑わしい。一例ではあるが、私のようなiTunesユーザなら、<a rating="0">などと書くことも容易に思いつくだろう)

このように、著者は自分が望む動作ではなくその動作を望む理由だけを書くのが理想的なのである。

付け加えれば、<a href="javascript:...">という記述も不適切だ。これはしばしばJavaScriptが無効な環境にあるユーザに混乱をもたらすとして批判されるが、一番の問題はスクリプトスイッチ論理的にはリンクではなくボタンだということだ。これはtarget属性や不適切なlink typeでリンクの動作を規定しようとすることと同じ誤解が原因だと思われる。リンクは原理的に動作のスイッチではなく、あくまでリンクなのだ。従って、見た目でそれがa要素かbutton要素かを決めるべきではない。見た目はスタイルシートで指定しよう。

理想的には、クライアントサイドスクリプトも今ほど必要ではないのかもしれない。HTMLのフォームの仕様user agentのUIがここまで貧弱でなければ、今日我々がスクリプトでやっている、合理的で、ただの飾りではないことの90%以上はHTMLだけで記述できるのではないだろうか。ウェブバージョンがいくつになればそれが可能になるのかはわからないが……。

話変わるけど

画像とか動画とか音声とかにHTMLを埋め込むことができたら楽しそうじゃね? HTML画像動画を埋め込むんじゃなくて。逆に。写真イラストを展示するサイトありがちなのが「リンクHTMLにお願いします」ってやつで、画像著作権表示とかコメントとかを添えるには現状そうするしかない。でもやっぱり画像そのものに書き込みたいだろうし、リンクするほうもリンクしたいリソース画像そのものであって、「おまけ」のほうではないんだよね。俺も友達のバンドサイト作ったことがあるんだけど、MP3タグじゃ貧弱だし、ハイパーリンクも使えないし。そういうのもうある?

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん