Out of Memory

ごめん、忘れてた。

目次

Blog 利用状況

ニュース

2008年7月1日
Microsoft MVP for Developer Tools - Visual C++ を再受賞しました。
2008年2月某日
MVPアワードがVisual C++に変更になりました。
2007年10月23日
blogタイトルを変更しました。
2007年7月1日
Microsoft MVP for Windows - SDKを受賞しました!
2007年6月20日
スキル「ニュース欄ハック」を覚えた!
2006年12月14日
記念すべき初エントリ
2006年12月3日
わんくま同盟に加盟しました。

カレンダー

中の人

シャノン@わんくま同盟北埼玉支部

顔写真

埼玉を馬鹿にする奴は俺が許さん。

基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。

Microsoft MVP for Windows SDK July 2007 - February 2008, Microsoft MVP for Visual C++ February 2008 - June 2009
Microsoft MVP for Windows SDK
July 2007 - February 2008
Microsoft MVP for Visual C++
February 2008 - June 2009

アクセサリ

あわせて読みたい

e-Words

アフィリエイト

記事カテゴリ

書庫

日記カテゴリ

(X)HTMLはもう…死んでいる

#mixiでは何度か書いたことだが、わんくまに引っ越したことだし、書き直してみよう。

HTMLとはどんな言語だろう?

「HTMLは文書構造を記述する言語であって、見た目を記述する言語ではない。
だから、bとかiとかfontといった要素は使わず、見た目はCSSで記述すべきである」

模範解答をありがとう。でもね、それは違う。
そう思っている人は多いようだけど、俺にはどうしてもそうは思えない。

じゃあHTMLってのは何なのか?
その問いに対する俺なりの答えは、「ユーザインターフェイスを記述する言語」だ。

「それって、『見た目を記述する言語』とどう違うのさ?」

そう思うだろう。

そこで、いわゆる「スキン」対応のアプリケーションを想像して欲しい。
ああいうアプリケーションは、スキンで表面的な見た目は変えられる。けれど、ユーザインターフェイスの構造は変えることができない。
例えば、ボタンの位置や形は変えられるけれど、ボタンを削除したり、新しく追加したりといったことはできない。それは、ベースとなるアプリが決めていることだ。

HTMLとCSSの関係ってのはこれだ。
HTMLはベースとなるユーザインターフェイスを定義し、CSSはその見た目を変える。
HTMLはそのための言語だ。

「そんな無茶苦茶な…」

まぁ聞け。
もしHTMLがユーザインターフェイスを記述する言語で無いというなら、何故、inputなどという要素がある? 何故、onClickなどという属性がある? そもそも、何故、CSSで装飾する必要がある?
すべては、HTMLがブラウザを通じて、ユーザの目に直接触れる文章だからだ。そこにはユーザインターフェイスがなければならん。

もうひとつ例を挙げよう。a要素とは何のための物だ?

「何って…他のページに飛ぶためのリンクを張るものだろ?」

素晴らしい!まさにその通りさ。

HTML 4.01の仕様書には、こうある。

The default behavior associated with a link is the retrieval of another Web resource. This behavior is commonly and implicitly obtained by selecting the link (e.g., by clicking, through keyboard input, etc.).

日本語で言えば、「リンクに対応するデフォルトの動作は、他のリソースを取得することである。 この動作は一般的に、リンクを選択すること(マウスでクリックする、キーボードで入力する、など)によって引き起こされると期待される」となろう。

さて、これでHTMLがユーザインターフェイスを記述する言語であることは疑いが無くなった。
文書構造を記述することに徹する言語であるならば、ユーザインターフェイスを記述する言語ではないと言うならば、何故「マウスでクリックする、…」などという言葉が出てこようか。

実際、同仕様書にはこうもある。

By far the most common use of a link is to retrieve another Web resource, as illustrated in the previous examples. However, authors may insert links in their documents that express other relationships between resources than simply "activate this link to visit that related resource".

訳は「前述の例で示したように、リンクの最も一般的な用法は、他のWebリソースを取得することである。しかし、著者は、単に『関連リソースを訪問するにはこのリンクをアクティブにしよう』というだけでない形のリソース間の関係性を表現するリンクを、文書に挿入し得る」だそうだ。

文書構造に見た目は要らないと言うのであれば、リンクとはこの定義だけで事足りるはずだ。しかし、こちらはおまけ程度にしか語られていない。

もちろん、関連するリソースをユーザが取得できることは非常に重要だから、ブラウザがa要素を「クリックしたらリンク先の文書を開く」というように実装することには全く問題は無い。しかし、仕様書が「そういう挙動を期待する」と書く必要は無い。

「何だか難しくなってきたなぁ…」

ならば身近な例を挙げよう。お題はやはりa要素だ。HTMLがただのテキストではなく「ハイパーテキスト」という名を冠する最たる理由なのだから、議論するには十分な相手だ。

槍玉に挙げるのは検索エンジンだ。
こんなページは何度も見たことがあるだろう。

「そりゃああるけど、これが何か?」

ソースの汚さには目をつぶるとしてもだ。このページの下のほうにあるリンクがよろしくない。

「『1 2 3 4 5 6 7 8 9 10 次へ』っていうコレ?」

そうだ。これはまさに、ユーザインターフェイスとしてしか機能していないリンクだ。

W3Cが定めるウェブコンテンツ・アクセシビリティ・ガイドライン(WAI) 1.0には、こうある。

Good link text should not be overly general; don't use "click here." Not only is this phrase device-dependent (it implies a pointing device) it says nothing about what is to be found if the link if followed.

例によって日本語訳を添えよう。
リンク部分の言葉には、極端に漠然としたものを使うべきではありません。『click here』という言葉は使わないでください。この言葉は特定の装置に依存した(この場合はポインティング・デバイスのみを対象とした)言葉であるだけでなく、そのリンクの先に何があるのかもまるで表していません

同じW3Cが定めたものでありながらこの違いだ。WAIは「ポインティングデバイスを前提にするな」と言いながら、HTMLは「リンクはマウスでクリックするものだ」と言う。この内部分裂っぷりからも、HTMLがどの程度「終わっている」かは明らかだろう。

前述の検索エンジンの下部にあるリンクは、明らかにWAIのガイドラインに従っていない。
だが、この形態のリンクの存在を否定できるだろうか?
もう少しフレンドリーな文字列にしたところで、「2ページ目」とか「次の10件」といったところが関の山だろう。ページの内容が動的に変わる検索エンジンに対して、「ページの内容を要約して書け」というのは酷な要求である。
だからといって、このリンクを撤廃してしまえば、検索エンジンは、時には数百万件にも及ぶ検索結果を分割せずに一度に返さなければならなくなる。それではまともに機能すまい。

導かれる帰結は一つだ。HTMLではどうやってもうまくいかないのであれば、検索エンジンはHTMLで記述されるべきではない。

「じゃあ何で書けって言うんだよ…」

そう。それこそが問題なのだ。これを記述するのに適した言語は存在しない。
ならば次善策として、HTMLで書く以外にあるまい。その理念は無視せざるを得ない。
HTMLはこうして、一度死んだのだ。潔く「ユーザインターフェイスを記述する言語」として第2の生を歩み始めるがいい。いつまでも亡骸にすがっているのは愚か者のすることだ。

「だったら、『文書構造を記述する言語』は存在しないのか?」

そうではない。それこそがXMLだ。
XMLには見た目がない。ユーザインターフェイスもない。ただデータだけしかない。

「でも、そこには文書構造もないぞ?」

ならばRDFでも使えばいい。あれこそまさに「要素に意味づけをするために生まれてきた言語」だ。

「そして、見た目はHTMLとCSSで書く、のか」

本音を言えば、その組み合わせにもそろそろご退場願いたいのだ。
あんな半端な言語ではなく、見た目を記述するために生まれてきた言語があるのだから。

「…何だよそれ」

XSL-FOだ。こいつはHTMLとCSSのように、データと見た目を分離しない。渾然一体となって記述される言語だ。
XHTMLが生まれた理由の一つに、「XMLアプリケーションとなることで、データの再利用が容易になる」というのがあった。
皮肉にも、HTMLを殺すXSL-FOは、そんなことなんか微塵も考えちゃいないんだ。見た目しか考えてないのさ。

役者は揃った。純粋にデータだけを記述するXML、要素に意味を与えるRDF、見た目を一手に引き受けるXSL-FO。
もはやHTMLが必要とされる余地はない。ただひとつ、「過去との互換性」という点を除いてはな。
HTMLから「ユーザインターフェイス記述言語」としての側面をいくらか奪うXFormsという規格もある。こうした専門的な言語が独立するのは喜ばしいことだが…HTMLがブラウザで表示され続ける限り、HTMLがかつて目指した目的は達せられまいよ…。

投稿日時 : 2006年12月18日 12:31

Feedback

# re: (X)HTMLはもう…死んでいる 2006/12/18 14:01 シャノン

ちなみにVistaへの期待は大きい。
XSL-FO以外にも、XSLTを用いてOfficeドキュメントやXPSへの変換が可能かもしれないからだ。
#試せてないorz

タイトル  
名前  
Url
コメント