メインコンテンツまでスキップ

JavaScriptはモダンな言語とは呼べないのか

Yamagishi Kazutoshi
Software Engineer

モダンな言語でHTML5を開発しよう! 俯瞰して理解するaltJSの比較 (前編 - TypeScript, CoffeeScript, Hexe) と題する記事があった。この記事は見出し中にある「HTML5を開発しよう」という言葉からして意味が通っていない。だが記事の内容から「HTML 5を始めとし、CSSやJavaScriptといったウェブ関連の技術を用いたアプリケーション作りをしよう」という意図であろうと類推することができる。しかしこの記事で問題なのはそのような重箱の隅を突くが如き枝葉末節な部分ではない。この記事の中で薦められているいわゆるaltJSと称される複数の言語たちではない、JavaScriptという言語はモダンな言語ではない、つまり近代的な言語ではないと断言してしまっていることである。

ここ数年のHTML5やCSS3の劇的な進化に比べて、JavaScriptの言語としての進化は緩やかだったのではないでしょうか。HTML5の登場により、リッチなウェブサイト・コンテンツ・アプリケーションが求められる時代になったのに、それを制御する言語が未だレガシーなものであり、ニーズに追いついていないのが現状です。

先に引用した一文は前述した記事の第一段落に記された内容である。この短い一文の中に、事実誤認から来ているのであろう誤りが複数含まれてしまっている。このような記事は非常に度し難く、そして許すことができない。

現在Selectors Level 3という呼称で勧告されている仕様は、CSS3 module: W3C selectorsという呼称で1999年に最初のワーキングドラフトが公開された。CSS 3は1999年以前よりも策定作業が続けられている仕様となっており、そして各ウェブブラウザーベンダーが長年の時をかけて着実に実装を続けているものである。こうした点から考えて、CSS 3は「ここ数年」と表現されるような短期間で「劇的に進化」を遂げたものであるとは到底言い難い。しかしながら先の記事の本質はCSS 3とは関係ないところに置いてあり、CSSに関しては知識も興味もない人物によって書かれている記事なのであろう。なのでその点は差し引いて考える必要がある。

だかしかし、そうした点を差し引いたとしても、この記事の本質であろうJavaScriptに関する記載においても明確な誤りが存在している。先に引用した一文ではJavaScriptは緩やかな進化しかしておらず、レガシーな言語であると断言されている。「レガシーな言語」と「モダンな言語」という言葉には明確な定義は用意されていない。だが文脈から「レガシーな言語」は否定的な表現、「モダンな言語」は肯定的な表現と対なる形となっていることは明白であろう。JavaScriptを進化が緩やかな言語であると表現するのは明らかな事実誤認であり、そして必要以上の悪意に満ちている。自身が書きたいと考える内容に説得力を持たせるだけがために過剰な言葉をもって書かれたものであると邪推してしまうのもいたしかたないことであろう。

筆者は十数年もの間、ずっとJavaScriptという言語を見続けている。言語仕様から各ウェブブラウザーベンダーの実装、そしてどのように使われているまで見ている。とはいえわたしが見られる範囲でしかなく、全てを見通せているとは到底言えない。だが、その決して広いとは言えない範囲を見ていても、JavaScriptの進化は目覚しいものであると強く断言することができる。JavaScriptの規格名であるECMAScriptの仕様は今も更新がなされている。そして策定されているそれらの仕様は段階的にではあるが着実に各ウェブブラウザーに実装されており、ECMAScript 5であれば安心して使えるようになっている。また現在策定中のECMAScript 6も各ウェブブラウザーに搭載されるJavaScript処理系にもよる上に、あくまで限定的ではあるが実験的に一部実装がなされている。各ウェブブラウザーベンダーによる妥協の産物であり現実的なHTML 5や、十数年の時をかけて着実な進化を遂げているCSS 3と比べると、JavaScriptは格段に劇的な進化が短期間の内になされている。こうした現状を鑑みた上でもJavaScriptはレガシーな言語であると断言するのであれば、JavaScriptという言語を愛していると言っても過言ではない筆者は残念という言葉以外を口に出すことはできない。

筆者自身もHTML 5の仕様についてはW3Cのウェブページにて公開されている範囲内に限られてしまっているが追っている。また各ウェブブラウザーにどのように実装されているかを簡易的にではあるが確認している。なのでHTML 5に関する知識もある程度はそなえられているという自負はある。だがHTML 5はこの記事の執筆時点では策定中の仕様であり、また各ウェブブラウザーベンダーによる実装もまだ中途の段階となっている。あくまでHTML 5という仕様は過渡期であり、未だ黎明期であるとすら言うのには難しい時期である。明日にはその中身が全くの別物へと変化している可能性が十二分にある。そのような状況である現時点でHTML 5エキスパートという呼称を負うことのできる精神性には感服せざるを得ない。

だからこそ、このようにHTML 5とは関係のない事柄であろうとも、JavaScriptのようにHTMLと密接に関係するような技術に関する記事において事実誤認にまみれている内容を書かれてしまっていると、全ての信頼性が失せ果ててしまう。信頼性の薄い人間が推すものが良いものであると思える人間は、そう多くはいないだろう。HTML 5の未来を暗くしてしまうことがないように事実確認を確かにした上で記事を適切に書くように心がけてもらいたいと切に願っている。