⸻  Miscellaneous  ⸻

JavaScript に問題はない。問題は大半の設計と実装にある。

2019-01-08 11:45:57

[...] the JavaScript ecosystem closely reflects human culture. It is inventive, incremental, messy, assimilating everything on its way, and ubiquitous.

The melting pot of JavaScript

他のサイトでは何度か書いているが、僕は企業の情報セキュリティ・マネージャーとして、それからプロのウェブ・デザイナーとして、加えてオンライン・コンテンツを利用する一人の個人として、現在のオンライン・コンテンツやウェブ・アプリケーションの JavaScript に強く依存する実装には強い懸念を持っている。既に論じた話だが、JavaScript に依存するアプリケーションの多くは Ajax などというイカサマ仕様を持ち出して、クライアントのマシン・パワーを使ってサーバの負荷を軽減し、オンライン・サービスを快適に利用できると嘘をついてきた。しかし実際には、クライアントに依存する負荷が舌の根も乾かぬうちにどんどん大きくなり、パソコンを買い替えさせるためのハードウェア業界と結託したマッチポンプではないかと皮肉られる始末である。しかし実際には、殆どのオンラインサービスは10年前のパソコンでアクセスすることに何の問題もないサービスしか提供しておらず、コンテンツやサービスがマシンのスペックに依存することが当然と見做されているようなもの(たとえばブラウザ・ゲーム)を除けば、JavaScript で実装したオンライン・コンテンツやウェブ・アプリケーションの大半は、JavaScript なしで実装しても全く事業の価値を毀損するものではない。

もちろん、僕は MarkupDancing というサイトで JavaScript の記事も書いているし、広告代理店案件に従事するウェブ制作会社のエンジニアとして JavaScript を使っているし、Perl を学ぶよりも先に JavaScript をオライリーの本で習得して、「コア JavaScript でプログラムを書けない奴はモグリ」(ライブラリやフレームワークありきでしかコードが書けなかったり、DynamicHTML のサンプルをコピペしかできないデザイナーやコーダも多い)とまで豪語していたくらいの人間だ。少なくとも10年くらい前までは、プロの JavaScript エンジニアを自称してもよかったくらいである。しかし、情報セキュリティの実務家としても従事するようになって多くを学んだ結果、もちろん言語としての JavaScript に根本的な欠陥などないとは思うが、アプリケーション設計やフロントエンド設計、そして実装とコーディングの大多数は「クソ」であるとしか言いようがない状況だと思う。それは、何も脆弱性を作り込んでいるという意味だけではなく、サービス提供企業としてサーバ側で処理すべきことがらを闇雲にクライアント側の処理へ引き渡し、メッセージングを無意味に不安定なものとしていたり、クライアント側へ過剰な負荷をかけているという意味でもある。shibuya.js などというイベントで何をお喋りしていたのかは知らないし、いまでもそんな些末なイベントを続けているのか調べる気もないが、恐らくそういうところで役にも立たない無駄話を繰り広げ、15年以上も他人の書いた仕様とブラウザエンジンの上で裸踊りしてきた連中は、開発にあたって JavaScript を動かしているときは50万円くらいかけたスペックのマシンを使っていたのではないかと思える。限られたメモリ領域とスペックで所定のパフォーマンスを出すシビアな実装を8ビットのマイコン時代から見てきた僕らにすれば、こういう連中が「エンジニア」を名乗るのは殆ど違法とか不道徳と言えるような話だ。

したがって、上記の記事の著者が "the JavaScript ecosystem closely reflects human culture. It is inventive, incremental, messy, assimilating everything on its way, and ubiquitous" と言いたいのも分かるが、敢えて僕は "ubiquitous" には反対したい。JavaScript は(他の大半のプログラミング言語にも言えるが)存在しなくてもよかったし、これがあって初めて達成できたことなど、この宇宙にも人類の歴史にも存在しない。いま僕らが JavaScript 依存で利用しているウェブ・アプリケーションの大多数は、JavaScript 無しでも実装可能なサービスであり、僕が思うところでは JavaScript 無しの方が「良いサービス」になる可能性があると思う。もちろん、ここで言う「良いサービス」とは、マウスオーバーするとボタンの形が変わってミッキーマウスになるといった、実はフロントエンド・デザインや UX やビジネス目標の観点から言ってもカスみたいな基準とは違う。

冒頭に戻る