JavaScript for impatient programmers (ES2022版)
本書をサポートしてください:購入する または 寄付する
(広告、ブロックしないでください。)

3章 JavaScriptの歴史と進化



3.1 JavaScriptの誕生

JavaScriptは1995年5月、Brendan Eichによって10日間で作成されました。EichはNetscapeで働き、同社のウェブブラウザ *Netscape Navigator* 用にJavaScriptを実装しました。

クライアントサイドウェブの主要なインタラクティブ部分はJavaで実装されるという考えでした。JavaScriptはそれらの部分のための接着剤言語であり、HTMLをわずかにインタラクティブにするためのものでした。Javaを支援するという役割から、JavaScriptはJavaのように見える必要がありました。そのため、Perl、Python、TCLなどの既存のソリューションは除外されました。

当初、JavaScriptの名前は何度か変更されました。

3.2 JavaScriptの標準化

JavaScriptには2つの標準があります。

これらの標準で記述されている言語は *ECMAScript* であり、 *JavaScript* ではありません。Sun(現Oracle)が後者の名前の商標を持っていたため、異なる名前が選ばれました。「ECMAScript」の「ECMA」は、主要な標準を管理する組織に由来します。

その組織の元の名前は *ECMA* であり、 *European Computer Manufacturers Association* の頭字語でした。その後、組織の活動がヨーロッパの範囲を超えたため、 *Ecma International* (「Ecma」は固有名詞であり、頭字語ではない)に変更されました。最初のすべて大文字の頭字語が、ECMAScriptのスペルの説明になっています。

原則として、JavaScriptとECMAScriptは同じ意味です。場合によっては、次の区別がなされます。

したがって、 *ECMAScript 6* は言語のバージョン(第6版)です。

3.3 ECMAScript各バージョンのタイムライン

これはECMAScript各バージョンの簡単なタイムラインです。

3.4 Ecmaテクニカルコミッティ39 (TC39)

TC39はJavaScriptを進化させる委員会です。そのメンバーは、厳密に言えば企業です:Adobe、Apple、Facebook、Google、Microsoft、Mozilla、Opera、Twitterなど。つまり、通常は激しい競争相手である企業が、言語の善のために協力しています。

TC39は2ヶ月ごとに会議を開き、メンバーが任命した代表者と招待された専門家が参加します。それらの会議の議事録は、GitHubリポジトリで公開されています。

3.5 TC39のプロセス

ECMAScript 6では、当時使用されていたリリースプロセスに2つの問題が明らかになりました。

これらの問題に対応して、TC39は新しい *TC39プロセス* を導入しました。

その結果、より小さく、段階的なリリースとなり、その機能は既に現場テストされています。図1はTC39のプロセスを示しています。

Figure 1: Each ECMAScript feature proposal goes through stages that are numbered from 0 to 4. Champions are TC39 members that support the authors of a feature. Test 262 is a suite of tests that checks JavaScript engines for compliance with the language specification.

ES2016は、TC39プロセスに従って設計された最初のECMAScriptバージョンでした。

3.5.1 ヒント:ECMAScriptのバージョンではなく、個々の機能とステージで考える

ES6まで、JavaScriptについてECMAScriptのバージョンで考えるのが一般的でした – 例えば、「このブラウザはES6をまだサポートしていますか?」

ES2016以降は、個々の機能で考える方が良いでしょう。機能がステージ4に達したら、安全に使用できます(ターゲットとするJavaScriptエンジンでサポートされている場合)。次のECMAScriptリリースまで待つ必要はありません。

3.6 よくある質問:TC39プロセス

3.6.1 [私の好きな提案機能]の状況は?

さまざまな提案機能がどのステージにあるのか疑問に思っている場合は、GitHubリポジトリproposalsを参照してください。

3.6.2 ECMAScript機能の公式リストはありますか?

はい、TC39リポジトリには承認済みの提案がリストされており、どのECMAScriptバージョンで導入されたかが記載されています。

3.7 JavaScriptの進化:ウェブを壊さない

時折出てくるアイデアの1つは、古い機能や癖を取り除くことでJavaScriptをクリーンアップすることです。そのアイデアの魅力は明らかですが、重大な欠点もあります。

後方互換性のない新しいバージョンのJavaScriptを作成し、すべての欠陥を修正すると仮定しましょう。その結果、次の問題が発生します。

では、解決策は何でしょうか?両方を得ることはできますか?ES6で選択されたアプローチは「One JavaScript」と呼ばれます。

  クイズ

クイズアプリを参照してください。