最近、「webエンジニアは閉じた世界しか見ていないのだろうか?」と感じるようなことがいくつもあった。RilasとRubyを混同するJavaScriptとJQueryを混同する言語処理系と言語を混同する著名なフレームワークを使うのが当然であり、それ以外は存在しないものと考える全く異なる分野や利用法で使われている技術だということを頑なに認めない自分が勤めている会社の構造や手法や評価尺度が社会的絶対基準であると信じるなどだ。今回は「HTMLとwebを同一視し、HTMLをwebだけのものであると考える傲慢さ」についてである。HTMLの歴史と経緯HTMLとwebは根本的には同一である、というのは正しい。して登場し、HTMLもまたこのために登場している。Text」とはなにかといえば、ハイパーメディアの一部たるテキストである。ハイパーメディアとはなにかといえば、multimediaに関連性をもたせたものである。この場合、ハイパーメディアといいつつも現実的に考えられるのは画像くらいのものであった。潜在的には画像や動画を含めることができることを意識していた。それらを文書でつなぐ、それがHTMLの役割である。実際、HTMLのアンカーは「ハイパーリンク」と呼ばれている。ここでは「マルチメディア」というのがテキスト、文書を含むものであることを忘れてはいけない。これもまた当然に立派なメディウムである。HTML2の時点では構造化文書であることが非常に強く意識されていた。同時に、これが視覚的メディアであることもまた強く意識されていた。この時点では論理性というよりも、視覚的意味合いによって構造化されるという感覚が強く、この過程は同じく論文のためのフォーマットとして誕生したTeXへの意識(あるいはroffへの意識)が感じられるものであった。ここまで構造化文書というのは、「章立て」といった概念はあるにせよ、文書自体が論理的構造を持っている、というのとは少々異なった。論理的構造と視覚は一体だったのだ。これが当たり前のことであった。HTML3によってこれは混迷を極めた。「webをリッチにしたい」という欲求はとどまることを知らず、JavaScriptが誕生し、より装飾的な機能が多く追加された。一方で、HTML3時代には2つの、異なる意味が生まれていた。ひとつは、web技術の応用だ。webをあくまでWWWの世界に留めるのではなく、より広く使いたいという考え方があった。WWWはインターネットの主要コンテンツであり、コンピュータはインターネットのためのものになりつつあった。競争に勝ち抜くにはweb界の覇者となる必要があり、そのために力を注いだ技術を他のところでも使いたいと考えた、という流れだ。desktopなどがそれである。ひとつは、文書フォーマットとしてのHTMLの普及だ。従来ドキュメントフォーマットというのはあまり良いものがなく、恐らく最善なのはPDFであり、そこにいたるまでのTeXであった。Windowsは(docドキュメントを含め)いくつものドキュメントフォーマットを持っていたが、それらは標準化されておらず、Microsoftに閉じた存在であった。roffであっても「イケてない」と考えられていた。なにより最大の問題は表示向きでなく、HTMLは圧倒的に表示に適しているということだ。HTMLはヘルプドキュメントをはじめ、幅広く使われるようになった。ドキュメントファイルとして使われるだけではなく、様々なところで組み込まれて使われるようになった。HTML4は決断のフォーマットであった。HTMLはドキュメントフォーマットである、という立場を明らかにしたのである。動的要素を必要とする場合はクライアントサイドスクリプトを視覚的要素を必要とする場合はstylesheetを使用するように求めた。ちなみに、stylesheetとはイコールでCSSのことではなく、それがわからない人はJSSやXSLTについて調べておくとスムーズに理解が進むだろう。HTML4は至ってstableであった。諸々の問題はあれど、それらは取り込まれることなく進んでいた。XHTMLにおける変更は、微々たるものであると言って差し支えあるまい。WWWの世界ではその間に様々なことがあった。HTML4以降の歴史を動かしたのはGoogleであったと言って差し支えないだろう。Ajaxが注目されるに至るまでの流れもGoogleのものであったし、HTML5策定時のGoogleに影響力は果てしなかった。Googleは明確な「オンライン派」である。そもそもユーザーが直接にドキュメントを扱うことを良しとしない。「HTMLをオンラインのものにしたい」と考えた。これに対して反対する声、つまりレガシーなTeXのようなHTMLを尊重すべきだと言う声も強く、初期ではどちらかといえば「ドキュメントフォーマットである」という既定路線を維持する状況にあった。WWWがさらに成長し、webアプリケーションが基幹を握るに至り、すなわちGoogleが世界を支配するようになると否とは言えなくなってくる。最初から「オンラインHTML」寄りだったAppleの存在の存在も多少あるが、この過程においての存在感は小さい。結局のところGoogleに対して否を唱えられる存在は既におらず、競争力という点も鑑みてMozillaがこれに同調したことにより、HTML5は「ウェブアプリケーションを提供する基盤」として位置づけられるようになった。実際、CSSには大手ウェブサイトが導入しているトレンドデザインをより簡単に書く方向となり、ウェブレンダリングの挙動はこれらを優先する(これらとことなるレイアウトデザインを許容しない)方向に振れた。それをよしとしない考え方もあって、HTML5というのは様々な思惑が混ざりあった言葉になった。Scriptの仕様はECMAが標準を策定している。重要なのはこれらが「独立したもの」であるということである。HTMLがCSSとJavaScriptと共に使わなければならないわけではないし、CSSがHTMLと共に使わなければならないわけではない。それぞれが独立したものであり、これらは「ハンバーガーとポテトとコーラ」のような関係であるといっていいだろう。独立した存在であるというのは、それ以外が存在しなくても成り立ち、なおかつそれ以外のものとも組み合わせられる、ということを意味している。Scriptに関していえば、JavaScriptの標準というわけでもない。ScriptにないDOMに関する機能があり、こちらはW3Cが策定している。結果として、JavaScriptに明確な言語仕様というものがなく、複数の(ある程度の互換性を持つ)実装が存在するに過ぎない。ちなみに、「JavaScriptの実装」というと、「ChromeとFirefoxでしょ」と言う人がいるのだが、これは間違っている。JavaScriptエンジンがあるが、MozillaはC/C++で書かれたSpiderMonkey(Firefoxで使われているもの)のほかに、JavaでかかれたRihnoを持っている。Safariが使っているJavaScriptエンジンはKJSソフトウェアがベースでv8とも別物。Explorerの最終的なエンジンはChakraで、Edgeも独自の実装(EdgeHTML)だった。OperaはPresto(JavaScriptエンジンのコードネームはCarakan)を採用していた。SoftwareベースのJavaScriptエンジンを使うブラウザは(プロジェクトが生きているかどうかは置いておいて)存在するし、w3m-jsなんてものもあったりする。webから独立したJavaScriptといえばRhinoを搭載するソフトウェアが実は結構多い。Javaで書かれているアプリケーションから利用するのが割と簡単なので、SpiderMonkeyが圧倒的にウェブで使われているのに対し、Firefoxでは使われていないRhinoはアプリケーションでプラグイン機能を実現するために使われるようなことが多い。Node.jsもv8ベースで有名な非ウェブのJavaScript利用例と言えるだろう。ElectronになるとHTMLやCSSも含めてChromiumの機能を利用する形なので、非ウェブと言い切っていいのかどうか疑わしいが、それでも非WWWであるのは間違いない。CSSに関してはほぼHTMLに依存している。XMLで使うこともできるのだが、この場合「XMLをHTML扱いする」という意図になってしまう。CSSは基本的にウェブブラウザでXMLを表示するためのテクニックだ。HTMLの外観を定義するのはCSSだけというわけではない。Stylesheet)というのもあるし、これ以外に関しても仕様上制約されているわけではない。JSSが使われることはごく稀だが、実際に限定的なHTML(あるいはそのサブセット)に対しCSSでもJSSでもないスタイルシートを定義している場合が見られる。近年はレンダリング部分を既存のものに委ねる傾向が強くあまり見られなくなってきてはいるが。HTMLの用途と位置づけウェブにしか関心のない人は知らないかもしれないが、HTMLは広くドキュメントフォーマットなのである。基本的なものであるにもかかわらず、ドキュメントフォーマットというのは今に至るまで以外なほど発展していない。Wordの強さというのもあるだろうが、ドキュメントフォーマットが「印刷向け」であるのも大きい。DocuemntRichTextroffePubDocBookHTMLあたり。textTeXLaTeXPODRDocPlain2Asciidocなどなどかりなたくさんある。これらは「印刷か表示か」という点で性格の違いがある。LaTeXはプリプロセッサが処理するための正しい情報になる論理性があるが、出力自体は「太字」など視覚的な定義になっている。これは、印刷してしまう場合、内部的にどのような情報を持っていたとしても失われてしまうことになるので、視覚的な表現が重要になるからだ。manroffなどは端末上で表示するためのものだから、端末で表現可能な内容に偏っている。Windowsヘルプフォーマット(.HLPや.CHM)やDocBookなどは対応する環境が少ない。結果的にオンラインドキュメント1で汎用性・交換性が高い形式というのはHTMLに限られてしまう。ePubということになるだろうが、ePubは書籍を前提としており、オンラインドキュメントに最適化されているとは言い難い。2この状況で、人に配布する整形済みドキュメントフォーマットとしては「HTMLが望ましく、HTMLしかない」という状況が存在している。ここではHTMLのサブセットはHTMLに内包するものとする。webの世界というのはドキュメントを基本とするものであり、「みんなアプリケーションなんだからHTMLもアプリケーション化すべき」などというのは乱暴を通り越して愚かである。HTMLの世界はwebに限らず広がっている、というのは、基礎教養と言えるだろうし、それ以上に自分の了見でのみ物事を定めようとすることを愚かと呼ばずしてなんと呼ぼうかという思いだ。オンラインドキュメントとは、コンピュータ上で読むドキュメントという意味であり、ウェブという意味ではない。↩ちなみに、ePubはそもそもXML/XHTMLベースであり、CSSを使用するものだから独立したフォーマットと呼べるかどうかはあやしい。