CYBER@GARDEN

home > Web::Blogoscope > (X)HTMLとアフォーダンス

Web::Blogoscope

(X)HTMLとアフォーダンス

アフォーダンス(affordance)は「物体が備える性質(形、色、材質など)が、物体自体をどう取り扱ったらよいかというメッセージをユーザーに対して発している(アフォードしている)」とする考え。

江島健太郎さんがXMLとアフォーダンスという記事を書かれているが、少し話の幅が広いので、ここでは(X)HTMLによるマークアップに絞って考えてみたい。

マークアップのアフォーダンス

たとえばb要素とstrong要素のどちらがよりアフォーダンスな存在か。b要素は「太字で扱ってくれ」と、strong要素は「強調として扱ってくれ」とアフォードするので同じだろう、というのは間違い。

strong要素には「他のテキストとの比較の上で」という文脈的なアフォーダンスが含まれるが、b要素にはない。したがって、strong要素のほうがアフォーダンスな存在である。さらにいえば、strong要素はem要素との比較というアフォーダンスも含まれる。

次にdiv要素について考えてみよう。個人的にはdiv要素の直下にテキストやインライン要素を含めるのは正しくない(書式上は認められていても)と思っているが、それはdiv要素が特定の役割をもたない透明な存在だからだ。これをアフォーダンスというキーワードを通して考えるとわかりやすい。

div要素は範囲をアフォードするが、ただそれだけであり、役割はアフォードしない。一方、h1h6要素、p要素、ul要素、ol要素、dl要素、table要素、address要素などは範囲だけでなく役割もアフォードする。body要素内に存在するものはすべて(意味的なブロックレベル要素によって)役割が与えられているべきである。div要素の直下にテキストやインライン要素を含めてしまうと、それらは役割のない「宙ぶらりん」な存在になってしまう。

ボキャブラリの問題

もちろん、現在の(X)HTMLのボキャブラリは数が少なく、アフォードさせたい役割を与えるのが困難なケースが多々ある。そこで、消去法としてのp要素、つまりパラグラフという積極的な役割を与えるというよりは、意味的なブロックレベル要素のなかで最も汎用的なp要素でマークアップする方法が使われる。XHTMLでは名前空間やスキーマ、プロファイルを利用してボキャブラリを拡張できるが、ちょっと敷居が高いかもしれない。

XHTML 2.0(現在、草案)ではかなりボキャブラリが拡張される予定だ。しかし、HTML 5とも呼ばれるWeb Applications 1.0では、これまでの(X)HTMLも、またXHTML 2.0も、結局は文書コンテンツしか想定しておらず、非文書コンテンツ(non-document types of content)に関するボキャブラが著しく欠けているとして、さらなる拡張が提案されている。

このようなボキャブラリの拡張によって混乱が生まれるという意見もあるだろう。往年のブラウザベンダーの独自拡張を思い出す人もいるかもしれない。しかし、消去法としてのp要素や、div/span要素とid/classをレバレッジにしたボキャブラリの擬似拡張を、果たしてこのまま放っておいてよいのかという問題もある。

再び、アフォーダンス

アフォーダンスは行為を引き起こす刺激ではなく、行為によって探した結果わかるものである。ul要素があるからリストを作るのではなく、リストを作りたいと思ってボキャブラリのなかを探したらul要素があった、これがアフォーダンスだ。

ボキャブラリは人々のアフォーダンスを支える。現在の(X)HTMLがユーザー、制作者、開発者のアフォーダンスを支えきれていないとすれば、ボキャブラリを拡張したほうがよい。

視覚表現についてはCSSというボキャブラリがあり、CSS3ではモジュール化と相まって大幅な拡張がなされている。また、動的処理・操作の面ではDOMAJAXもある。

構造面はどうか。私はXHTML 2.0を好意的に見てはいるが、人々のアフォーダンスを支えるにはボキャブラリが足りないと思う。上述したWeb Applications 1.0のXHTML 2.0に対する批判は、少なからぬ人々のニーズを反映したものだ。

これまでマークアップ言語は拡張と収斂を繰り返して発展してきた。制作者と開発者はその混乱に付き合わされてきたし、再度混乱が起こることを危惧する人もいるだろう。しかし、モジュール化という仕様設計が可能になり、そもそもWebのメディアとしての役割がここまで拡大しているのだから、旧来の枠組みでマークアップ言語のあり方を考えるのはやや時代錯誤な気がする。

アフォーダンスとリーダビリティ

ここで冒頭の例に戻ろう。ある人はstrong要素よりもb要素のほうがアフォーダンスな存在だと言うかもしれない。b要素は「太字」をアフォードするだけでなく、それこそ強調その他の意味をアフォードするという考えだ。

しかし、それは人間ゆえの類推であって、マシンはそのように類推できない。あるいは、目が見えない人は手触りで確認できない限り、太いか細いかはわからない。つまり、b要素は極めて限定的なリーダビリティしか備えていないわけだ。

マシンによる類推の仕組みはRDFSOWLによって与えられているが、まだ汎用の段階にはない。また、視覚的に太いか細いか確認できない人はどうするのかという問題は解決できない。つまり、マークアップは「意味」をアフォードしなければならない。

なお、リーダブルあるいはリテラルという観点から見ると、あまりに短すぎる要素名は問題である。「p」よりも「paragraph」のほうが、「em」よりも「emphasis」のほうがリテラルだ。ただし、「em」は2バイトですむのに「emphasis」は8バイトというデータ効率の問題もあるから、何でもかんでもフルスペルで示せばよいというものではない。

また、多くの日本人にとっては、「p」よりも「段落」、「em」よりも「強調」のほうがリテラルだろう。実際に、XMLの初歩的な説明では、要素名に日本語を使っているケースをよく見かける。ただこれも、マシン処理の負荷や、日本語が理解できない人にはリテラルではないという問題がある。

このようにアフォーダンスは多分に状況依存的であり、状況を限定すればより強く、多様な状況を想定すれば弱くならざるをえない。Webはユニバーサルにアクセスできるものだから、自然と英語の使用が前提となり、場合によっては個々のボキャブラリがすべての人にアフォードするわけではないというのは、仕方がないのかもしれない。

Posted on 2005-12-05T15:19+09:00 | Category: Web標準

トラックバックPings

トラックバックのURI:
http://www.cybergarden.net/mt/mt-tb.cgi/272

» Viagra. from Viagra.
Viagra. [Read More]

Tracked on 2011-02-03T20:30+09:00

コメント

« 講義風景 | ブログトップ | 個人もRSS配信の時代 »