JavaScriptの誕生と死:Gary Bernhardtの2014年の予測を分析する
技術的基盤としてのJavaScriptの進化
JavaScriptは、主要なプログラミング言語から、他の高レベル言語や実行環境を支える基礎的な基盤(substrate)へと移行しました。この変化は、開発者が生のJavaScriptを直接書く頻度は減るかもしれませんが、この言語のランタイム環境が、現代のウェブおよびデスクトップアプリケーションが構築される上で極めて重要なレイヤーであり続けることを意味しています。
コンパイル対象としてのJavaScript
JavaScriptの主な役割は、手動コーディングのためのソース言語から、コンパイルのターゲットへとシフトしました。この傾向は、TypeScriptの広範な採用やWebAssembly (Wasm) の登場によって裏付けられています。
コミュニティメンバーが指摘するように、業界は、開発者がJavaScriptの「より良い」バージョンを作成し、それをブラウザ互換性のためにJavaScriptへとトランスパイルする、というサイクルに入っています。このパターンは、JavaScriptがウェブの普遍的な「接着剤コード(glue code)」として機能しているという理論を裏付けています。
WebAssembly (Wasm) の役割
WebAssemblyは、JavaScriptが最終的に、より高性能なバイナリ形式によって取って代わられるという予測が実現したことを示しています。初期の予測ではasm.jsが注目されていましたが、Wasmはブラウザでネイティブに近いコードを実行するための実際の標準となりました。
しかし、この移行は絶対的なものではありません。DOM操作に関する現在の技術的な制限が依然として存在しています。Wasmは直接DOMを操作できないため、Wasmのロジックをブラウザのユーザーインターフェースに接続するための不可欠な「接着剤コード」として、JavaScriptが必要であり続けています。Flutterのような一部のフレームワークは、すべてをcanvas上に描画することでこれを回避していますが、このアプローチは標準的なウェブ機能のセットを犠牲にしています。
ブラウザを超えた拡大
ウェブ技術は、ブラウザからネイティブのオペレーティングシステム(OS)の領域へと移行することに成功しており、汎用コンピューティングにおけるウェブ構文の遍在性に関する予測を実現しています。
Electronによるデスクトップ統合
Electronは、ウェブ技術をデスクトップアプリケーションにラップして、単一のコードベースを使用してmacOS、Windows、およびLinuxを同時にサポートすることを可能にしました。批判的な意見としてElectronはリソース消費が激しいというものがありますが、クロスプラットフォーム展開において最も迅速な方法となっており、JavaScriptのランタイムをデスクトップOSの体験に効果的に組み込んでいます。
ブラウザベースのOSという概念
ブラウザ技術またはWebAssemblyに完全に依存したオペレーティングシステムが最終的に登場するという議論が続いています。webOSやFirefox OSのような初期の試みは、時代を先取りしすぎていたと見る向きもあり、ウェブブラウザとオペレーティングシステムの境界が完全に消失する未来を予兆しています。
JavaScriptの「死」に関するコミュニティの視点
JavaScriptの「死」とは、言語の消失を意味するのではなく、その「不可視化」を意味しています。
"JavaScriptの「死」として議論されているのは、それが基盤(substrate)になることを意味します。直接的には使いませんが、あらゆるところに存在する状態です。"
一部の開発者は、JavaScriptまたはWasmが標準的なApplication Binary Interface (ABI) になるという見通しを否定的な結果と捉えていますが、他の開発者は現在の軌覚を自然な進化と見ています。共通の認識としては、JavaScriptが本来持つ欠陥にもかかわらず、より新しく、より堅牢な言語の迅速な反復を可能にする普遍的な実行環境を提供することで、業界にポジティブな影響を与えてきたということが示唆されています。