T1
JavaScript 発表 ── 10日間の試作から生まれた言語

メタデータ
- 日付
- 年代
- 1990s
- Tier
- T1
- 参照年表
- プログラミング言語の歴史 · インターネットとWebの歴史
- 出典数
- 05
- 関連項目
- 05
JavaScript は、Netscape Communications の Brendan Eich が 1995年5月 に設計・実装した、Web ページに埋め込んで動かすスクリプト言語である。最初の処理系は5月の連続した 10日間 で試作された。一般への初出は同年9月の Netscape Navigator 2.0 ベータで、そのときの名は LiveScript。1995年12月4日、Netscape と Sun Microsystems の共同発表で JavaScript の名が公表された。JavaScript 1.0 を載せた製品版 Navigator 2.0 は1996年3月に出ている。
「JavaScript はいつ作られたのか」への答えは、何を数えるかで変わる。この記事では、Eich と Allen Wirfs-Brock が2020年に ACM の言語史会議(HOPL)に書いた論文『JavaScript: The First 20 Years』を主な拠り所に、名前が3度変わった1年を追う。
| 日付 | 出来事 | 名前 |
|---|---|---|
| 1995年4月3日 | Eich が Netscape に入社 | ── |
| 1995年5月 | 10日間で最初の処理系を試作 | Mocha |
| 1995年8月 | Navigator 2.0 の機能凍結 | Mocha |
| 1995年9月 | Navigator 2.0 最初のベータで一般公開 | LiveScript |
| 1995年12月4日 | Netscape・Sun の共同発表 | JavaScript |
| 1996年3月 | 製品版 Navigator 2.0 が JavaScript 1.0 を搭載 | JavaScript |
| 1997年6月 | Ecma 総会が ECMA-262 第1版を承認 | ECMAScript |
Scheme を書くつもりで入社した
論文によれば、Eich はブラウザで Scheme を実装できるという誘いで Netscape に招かれ、1995年4月3日に入社した。しかし着任してみると、話は単純ではなかった。Netscape は Microsoft の攻勢を予期しており、Sun の Java を Navigator 2 に組み込む交渉が進んでいた。5月23日、Sun が Java を正式発表した場で、Netscape は Java のライセンスを受ける意向を表明している。
ページ用のスクリプト言語の候補には Scheme、Perl・Python・Tcl、Visual Basic が挙がったが、事業上の利害や出荷時期を理由にどれも退けられた。Netscape の Marc Andreessen と Sun の Bill Joy ら上層部が唯一現実的と見たのは、Java を補う小さな言語を新たに設計することだった。
反対論もあった。Java だけで足りないのか、2つの言語が要る理由を説明できるのか、Netscape に言語を作る力があるのか。最初の2つには、Visual C++ と Visual Basic を使い分ける Microsoft の製品構成が答えになった。プロ向けの言語と、デザイナーや片手間のプログラマーが部品をつなぐための言語は別でよい。Andreessen はこの言語に Mocha というコード名を付けた。最後の問い ── 本当に作れるのか ── に答えるのが Eich の仕事になった。
10日間の試作
Java の発表が迫るなか、Eich は1995年5月の連続した10日間で Mocha の最初の処理系を書き上げた。具体的な日付の記録は無く、本人は5月6日から15日ごろだったと考えている。動かしたのは SGI の Indy ワークステーションで、手書きの字句解析と再帰下降の構文解析器がバイトコードを出力し、単純で遅いインタプリタがそれを実行した。
設計の制約ははっきりしていた。経営陣は、見た目を Java に似せること、BASIC のようなものにはしないことを求めた。クラスは作らない ── 時間がかかるうえ、Java と競合しかねないからである。そのうえで Eich は、Self に倣ってプロトタイプへの委譲による動的なオブジェクトモデルを選び、Scheme 由来の第一級の関数を残した。メソッドとイベントハンドラは、Java から借りた this キーワードで一つにまとめられた。
| 由来 | JavaScript に残ったもの |
|---|---|
| Java(さらに C++) | 構文の見た目、this キーワード |
| Self | クラスを使わず、プロトタイプへの委譲でオブジェクトを組み立てる考え方 |
| Scheme | 値として受け渡せる第一級の関数 |
10日の終わりに試作は Netscape の技術者全員の前で実演され、成功を収めた。ただしこの成功は、9月のベータまでに完成品を出せるという楽観も生んだ。夏の間、Eich は Mocha をブラウザに統合し、Web ページを操作するための API を設計し、社内の利用者からの不具合報告に応えた。Navigator 2.0 は8月に機能を凍結し、その時点で動いていたものがそのまま JavaScript 1.0 の機能になった。論文は、1.0 には想定した設計に届かない部分や問題のある挙動が残ったと書いている。
LiveScript、そして JavaScript
言語が一般の目に触れたのは1995年9月、Navigator 2.0 最初のベータで、名は LiveScript だった。12月4日、Netscape と Sun は共同でプレスリリースを出し、JavaScript を、オープンでクロスプラットフォームのオブジェクトスクリプト言語として発表した。America Online・Apple・Borland・Hewlett-Packard・Oracle・東芝などを含む28社が支持を表明し、Java を補ってオンラインのアプリケーション開発を容易にする言語と位置付けられた。
論文は、両社が技術的には表面上しか似ていない2つの言語に強いブランドのつながりを作ろうとしたこと、そして名前の近さが以後ずっと混乱の元になってきたことを指摘している。名前は Netscape と Sun の戦略的提携の一部で、商標 JavaScript は Sun が登録して Netscape にライセンスした。論文執筆時点で、その登録は Oracle が保有している。
標準化と ECMAScript
1996年、Microsoft は互換の処理系 JScript を Internet Explorer 3 に載せた。互換を保つには正式な仕様が要る。Netscape は Ecma International に標準化を持ち込み、1996年11月に技術委員会 TC39 の初会合が開かれた。
名前はここでも問題になった。Sun は商標 JavaScript を Ecma に使わせないと答え、Netscape も LiveScript を正式には譲らなかった。仮の名だった ECMAScript がそのまま規格の名前になる。1997年6月の Ecma 総会は ECMA-262 第1版の発行を承認し、編集上の修正を経て同年9月に公開された。
その後
1996年8月の Netscape 3.0 に載った JavaScript 1.1 でさえ、中身の大半はまだ10日間の試作のコードだった。その後 Eich は2週間自宅にこもってエンジンの中核を設計し直し、参照カウントをマーク・アンド・スイープの ガベージコレクション に替えた。新しいエンジンは Mocha を置き換え、同僚の Chris Houck が SpiderMonkey と名付けた。2008年9月に Google が公開した Chrome は、Lars Bak が率いた JavaScript エンジン V8 を載せていた。論文によれば、Bak は Smalltalk・Self・Java の仮想マシンを作った経験を V8 に生かしており、Chrome は JavaScript の性能の新しい基準になった。
関数を値として扱う書き方は 関数型プログラミング に、クラスを使わない独特のオブジェクトモデルは オブジェクト指向 の系譜につながる。同時代の言語の中での位置は プログラミング言語の年表 に、ブラウザ戦争の文脈は インターネットと Web の年表 と Netscape にある。
よくある質問
- JavaScript はいつ、誰が作ったのですか。
- Netscape の Brendan Eich が1995年5月に設計・実装しました。最初の処理系は5月の連続した10日間で試作され、9月に Netscape Navigator 2.0 のベータで LiveScript として公開、12月4日に JavaScript の名で発表されました。JavaScript 1.0 を載せた製品版 Navigator 2.0 は1996年3月です。
- JavaScript は本当に10日で作られたのですか。
- 10日で作られたのは1995年5月の試作です。日付の記録は残っておらず、Eich は5月6〜15日ごろと考えています。その後、夏の間に Netscape への統合と製品化が続き、8月の機能凍結の時点で動いていたものが JavaScript 1.0 の機能になりました。
- JavaScript と Java はどういう関係ですか。
- 技術的な派生関係はありません。Netscape と Sun の経営陣は見た目を Java に似せることを求めましたが、中身は別の言語です。名前は両社の提携によるもので、商標 JavaScript は Sun が登録して Netscape にライセンスしました。現在の登録は Oracle が保有しています。
- ECMAScript とは何ですか。
- Ecma International の規格 ECMA-262 が定める、JavaScript の標準仕様の名前です。Sun が商標 JavaScript を規格団体に譲らなかったため、仮の名だった ECMAScript がそのまま残りました。第1版は1997年6月の Ecma 総会で承認されました。
出典
Eich の入社日、10日間の試作と日付、Mocha の命名、LiveScript での公開、12月4日の共同発表(付録 F に全文)、商標、TC39 と ECMA-262 の承認、V8
最終更新: