計算機が「見た目から意図を読み取る」未来はくるのか。実用水準では、私が生きている間は無理だと思う。
人がHTMLに「見た目ではなく意図を書く」というアイデアは、たしかにうまくいっていない。例えばW3Cがfont要素を非推奨にしても、結局はspan要素とstyle属性に置き換わっただけだった。(一般ユーザーには隠蔽されているが、多くのブログのWYSIWYGエディタがやっているテキストの装飾とは、span要素とstyle属性の付加である)
それでも、人がHTMLに「見た目ではなく意図を書く」のを幻想というなら、計算機が「見た目から意図を読み取る」のも幻想だろう。
HTMLで見た目ではなく意図を書くべき理由は、つきつめれば、マルチユースと再利用にある。マルチユースとは要するにGoogleでうまくインデックスしてもらうことであり、再利用とは要するに将来ブラウザのレンダリングが変わってデザインが多少崩れても意味的には同じものとして読めること(私の空行作成法はこのテストに失敗した)、と言ってもいい。
『Coders at Work』で誰だかが、「コードの再利用はうまく機能していない」と論じている。現在一般的なプログラミング環境が参照透明性を無視しているのが悪い、とその論者は言うのだが、まったく違うレベルで、私はその議論にうなずいた。そう、環境が悪い。必要なのは、「マルチユースや再利用を考慮して書け」というスローガンではなく、「見た目だけを書いたら半自動的にマルチユースや再利用に対応している」という環境だ。
つまり、人に意図を書かせるのではなく、計算機が見た目から意図を読み取るべきだ。
「いまできること」を考えたい。中里さんの理想は、当面、実現し得ない。ある程度のレベルでは実現可能だろうが、意図をマークアップした文書なら容易な「CSSを書き換えるだけで一括で見た目を変える」ようなことは、とうてい実現できまい。
(私はそうは考えないが仮に)意図をマークアップする仕組みが、いずれ不要になるものだとしても、いま、その仕組みの恩恵を受けている人は、確かに存在する。「いずれ意図のマークアップは全員に普及する」というのは幻想だったが、私を含め、みなそれは「わかっていた」と思う。
マルチユースと再利用について、もう少し。
Googleは、SEOテクニックとの戦いの末に、マークアップをあまり重視しなくなった(らしい)。中里さん定義の「マルチユース」分野では、既に意図のマークアップと分離されているわけだ。「意図のマークアップ」をして、損をすることはないが、とくに得をするわけでもない(title要素だけは例外、かな……)。
HTMLで正しく空行を作るのは少々面倒(というか設計の想定外?)なので、長らく全角空白+br要素ですませてきた。するとIE8からこれは空行を作らなくなり、IE9でも直る様子はなかったので、私はこの日記をIE7互換モードに設定した。
これが、中里さんが将来ブラウザのレンダリングが変わってデザインが多少崩れても意味的には同じものとして読めること
について私の空行作成法は(中略)失敗した
という根拠。
そんなバカなと思って試してみたが、うちのIE9では、連続brでいくつでも空行を作ることができた。中里さんが書かれている現象は、特殊な条件下で発生するバグか何かではないかと思う。
(以下、br要素を並べて2行の空行を置く)
↑ちゃんと空行ができていますか?
連続brで連続空行ができるのはHTML4.01の仕様書の解釈として最も自然な表現だ。HTML4.01の仕様書を参照するXHTML1.0についても、同じことがいえるだろう。中里さんはXHTML 1.0 Transitionalを採用されている。XHTML1.0対応ブラウザなら、デフォルトスタイルは連続brが連続空行になるのが自然だ。IE8やIE9が不自然な挙動をするとしたら、それは問題だ。(あらためて考えてみると「h5やh6がpより文字が小さい」なんてのも不自然なデフォルトスタイルだと思うが……)
HTML4.01対応を謳うブラウザは、HTML4.01にある通りの挙動をするはず。しかしウェブブラウザが古い仕様をいつまでもサポートし続けるとは限らない。HTML4.01でも、HTML5でも、永遠に中里さん定義の「再利用」が可能なわけがない。「意図のマークアップ」も所詮、ブラウザのサポートが続く間の「再利用」しか期待できないし、それは仕方のないことだと思う。
PCと携帯電話に同じHTML文書を読ませ、CSSだけ切り替えて各々の環境に最適な見た目を提供しよう……という構想が、かつては存在した。いや、今も完全に滅びたアイデアではないが、「最適化とは、それほど簡単なことではない」と思い知らされる10年間だったように思う。趣味レベルならワンソースでもいいが、本気で取り組むならHTML文書自体も最適化する必要がある、というのがコンセンサスだろう。
HTML文書を取り込んで、加工して再送信するといった仕組みも、いろいろ現れては消えていった。しかしそこで障害になったのは、文法違反の文書があまりに多いことや、「本文」とそれ以外を区別する仕組みがなかったことであって、本文に「意図のマークアップ」がされていなかったことではなかった。
ブログやmixiなどでテンプレートを変更する仕組みは普及したが、CSSだけ交換するような仕組みでは、多くの人々が「テンプレート変更システム」に求める機能を全く満たせなかった。
テンプレートの変更はHTML文書全体の書き換えを意味していたが、そこでは本文のマークアップは重要ではなかった。すなわち、「テンプレートを変えたい」という要望はあっても、「テンプレートに合わせて本文の装飾にも手を入れたい」という人はほとんどいなかった。
多くの人々は、強調表現が2種類では満足できない。改行だって1種類では足りず、空行なし、1行空き、2行空き、多行空きにそれぞれ別の意味を持たせて、フレキシブルに改行を挿入できる環境を望んだ。だから大多数のブログの本文には、span要素、style属性、br要素が乱舞する。
私は「それでよい」と思う。音声読上げブラウザの利用者の方には同情するが、実際のところ、span要素などによる装飾が音声に反映されない状況に、困ってはいる人は少ないと思う。多少の不便はあっても、99%の人々に「配慮しなきゃ」という気を起こさせるに十分な困難さでも、人数でもないだろう。
うん、私は8年前と同じことを書いているわけなんだけどね。全員に意図のマークアップを強いるだけのメリットは、存在しないんだ。自分にはメリットがあると思う一部の人だけ、きちんとマークアップすればいい。そういうもの。私が「テーブルレイアウト? ご自由にどうぞ」といってきたのも、同じ理屈だ。
「計算機が見た目から意図を読み取る」というやりかたは現在まだ主流ではない。もしかするとユートピア的に見えるかもしれない。しかし私の目には、「人間が見た目ではなく意図を書く」という幻想のほうがよほど砂上の楼閣であるように見える。
長々と書いてきたけど、じつのところ中里さんが何をどうしたいのか私にはわからない。わからないので、私の反論(なのか?)も趣旨不明になりつつある。
冒頭にも書いた通り、全員が意図をマークアップする未来はこないだろうが、それで何か問題ある? ないでしょ。意図をマークアップしたい人はすればいいし、する気のない人はしなくていい。私は別に、テーブルレイアウトだって、font要素だって、divとspanばっかりの文書だって、「作りたい人は作ればいいんじゃないの」という立場。ただし私自身は、意図のマークアップによって、幻想ではない現実の利益を得ているので、意図をマークアップする仕組みの存続を願っている。
私も含めて、「意図のマークアップ」の啓蒙も下火になって久しいし、いずれ全員が意図をマークアップする未来がくると思っている人なんて、1%もいないと思う。中里さんの記事の意図がわからない。
……あれ? 私は何に反論しようとしているんだ……? 中里さんの記事より、この記事の方が意図不明だよな。
……そもそも、いま私が感じているイラつきって、被害妄想なのかなあ。
中里さんの記事は、「全員が」は幻想だという内容であって、それなら、とくに異論はない。私がカッカしているのは、意図のマークアップが「少数の活用者」に現実の利益をもたらしていることへのフォローがないからでしかない。「全員が」の幻想でもって意図のマークアップの仕組み自体の価値を無と判断されては困る、と思ったのだけれども、中里さんの文章にそうした記述はない。
はい、私の被害妄想でしたー。