JavaScript の生い立ちを探る

河本孝之(KAWAMOTO Takayuki)

Contact: takayuki.kawamoto@markupdancing.net

ORCID iD iconORCID, Google Scholar, PhilPapers.

First appeared: 2008-11-11 08:33:00,
Modified: 2013-08-20 11:52,2017-08-02 13:16:19,2018-04-18 11:10:16,2019-10-29 11:42:46,2020-04-30 19:32:58,2020-08-07 10:34:34,
Last modified: 2023-12-28 09:11:51.

JavaScript” is a trademark of Oracle Corporation in the United States.

2013年に本稿を更新したときは追加の資料を反映していなかったので、今回 (2017年) の更新では、本稿を初めて公開した2008年以降のリソースを幾つか参照して、本稿を増補・修正しています。但し、最近のブログ記事や技術系メディアの記事の多くは伝聞あるいは本を読んで勉強した知識の繰り返しにすぎないので、妥当な典拠や証拠を伴っていない記述は、どれほど興味深く、著名な人物が言及していたり具体的に書かれていようとも無視しています。

[追記:2023-12-28] このほど ChatGPT で「JavaScript の歴史について書かれた、日本語のページはありますか?」と質問してみたところ、このページは紹介されていなかったのですが、他に幾つか紹介されたので一読してみました・・・というか、五つのページを紹介されたのですが、ウィキペディアを除く四つのページは、はっきり言ってどれもコタツ記事の類であり、当ページを超えるようなリソースとは思えません。Google や Bing などと同じく、生成 AI も一定の評価基準に基づいて回答を生成しているため、新しく公開されたとか、その手の SEO 的な尺度で未熟な内容のページや、それどころか間違った内容のページが紹介されてしまうことがあります。

これらの、はっきり言って何の下調べもせずに他人の書いたものを引き写しているだけの連中が書いている記事に共通しているのは、もちろん歴史的な経緯を正確に知らないことです。そのため、自分たちが業界に入ってから後に起きたというだけの出来事に引きずられてしまっているようです。いわゆる「アンカリング」と呼ばれる認知バイアスですね。たとえば、これらの記事には、JavaScript は Ajax の登場で普及したという記述があります。「更に普及した」という意味なら間違いではありませんが、歴史を正確に理解していれば、こういう書き方はできないはずです。実際には、その前に DynamicHTML や JScript で普及したものを、Ajax の登場によってプロがマッシュ・アップの案件などで再び使うようになっただけだからです。未熟な人々はその時点から仕事を始めたのでしょうから、それ以前の状況が分かっていないのでしょう。これらの記事に比べたら、以下に紹介するページなどは、改めて丁寧に読んで本稿に反映させるだけの価値があります。

言っておきますが、「ガイジン」が英語で書いてるから素晴らしいなどと言っているわけではありませんし、日本の(年齢とは関係なく)未熟な人々に個人的あるいは民族的な欠陥があると言いたいわけでもありません。単に、他人へものごとを発表するとはどういうことかということについて、周りに言葉が正確に通じない移民とか、殆ど小学校も出ていないような人々がいない(或る意味では幸運な)環境で、大学院も出ていないような学校教員に教えられた人々なら、コタツ記事を書くていどの素養しか身につかないのは仕方のないことです。もしアメリカ人が同じ状況に置かれたとしても、同じことになるでしょう。凡人の仕事とはそういうものです。

JavaScript を学ぶにあたって殆どの人が入門書や解説サイトで目にするのは、「JavaScript は Java とは無関係です」という、苦言とも弁解ともつかない表現でしょう。もちろん、JavaScript という名称がこのまま存続している限り、「JavaScript」という綴りを眺める初心者(しかも「Java というプログラム言語がある」という程度の知識を持ってしまっている初心者)が、JavaScript と Java について、綴りの一部が一致しているという事実よりも多くのことを想像してしまうのは致し方がありません。したがって、JavaScript や Java の入門書には、いつまでも同じ注釈を書き続けなくてはならないのです。しかし、JavaScript と Java が正確に言ってどのような関係にあるかを、両者の動作仕様(クライアントサイドとサーバサイド)という違いから言い立てるだけでは、「じゃあ、なんでこんな紛らわしい名前がついているのか」という質問に答えることはできません。

JavaScript についてよくある紹介

JavaScript の入門書や解説サイトには、よく下記の内容と大同小異の注釈が書かれています。

JavaScript をめぐる神話のなかで一番多いのは、Sun Microsystems 社が開発した Java の「簡略版」だという話です。確かに、Java と JavaScript は、構文が似ており、Web ブラウザで「実行可能なコンテンツ」を提供できます。しかし、この2つの点を除くと、両者はまったく関係ありません。名前が似ているのは商売上の対策なのです。もともとは LiveScript と呼ばれていたのですが、最終段階で JavaScript に名称変更されたのです。

『JavaScript 第3版』(David Flanagan/著, 村上列/監訳, 安藤進・垰井正雄/訳, オライリー・ジャパン, 2000), p.2.

上記は、JavaScript の入門書として定評がある『JavaScript 第3版』(2007年に、最新の第5版が出ています)の一節です。日本の著者が書いた入門書にも、同じような文言がどこかに見つかるでしょう。また、解説サイトの文章であっても事情は同じであって、『ウィキペディア』にも上記とよく似た表現が見られます。

ネットスケープコミュニケーションズのBrendan Eichによって開発され、Netscape Navigator 2.0 で実装された。開発当初は「LiveScript」と呼ばれていたが、1995年にSun Microsystems社の開発したプログラミング言語「Java」が当時大きな注目を浴びており、これに便乗したネットスケープ社のマーケティング的な思惑が働き「JavaScript」という名前に変更されたといわれている。

JavaScript」, 『ウィキペディア 日本語版』(2007年11月4日時点での内容を参照したので、クリックしても同じ表現が残っているとは限りません)

いまご紹介したような注釈は JavaScript の生い立ちに関するスタンダードな説明だと思うのですが、JavaScript が初めて世の中に登場した当時の経緯を知っている人が書いているにしても、第一次資料とも言うべき出典となると数は限られています。なぜなら、JavaScript を世に送り出した当時のネットスケープ社は紛れもなく「第一次ブラウザ戦争(browser war)」の渦中にあった一つの営利企業だったので、新しい機能の企画資料やプレゼンテーション対策の議事録など、表に出せるわけもなかったからです。JavaScript の生い立ちを探るために、わたしたちがつかめる材料としては、せいぜい当時の IR 資料とかプレスリリースのページ、それから当時のニューズサイトの記事くらいのものでしょう。あとは、当時の技術者にインタビューでもするしかありません。そこで、まずは当時の技術者、しかも JavaScript を世に送り出した人であるブレンダン・アイクという人物を調べてみましょう。

久しぶりに本稿を修正・増補しようと思ってウェブページを検索してみたら、次のようなクイズが掲載されていました。試しにどうぞ。

1. JavaScript を開発したのは誰か。
a) マイクロソフト
b) サン・マイクロシステムズ
c) オラクル
d) ネットスケープ
2. ブレンダン・アイクが JavaScript の処理系を開発するのに要した期間は、どれくらいか。
a) 10日間
b) 2週間
c) 2ヶ月
d) 10ヶ月
3. JavaScript という名称は最初からついていたのではない。他にどう呼ばれていたか。
a) Latte
b) Mocha
c) LiveScript
d) BScript
e) Spidermonkey
4. JavaScript と Java は基本的に同じ言語である。
a) そうである。
b) そうではない。

正解は、1. - d), 2. - a), 3. - b) and c), 4. - b) です。2. は少し設問の文章が単純すぎて不適切だと思いますが、趣旨としては「初めて書いたときに要した期間」であることが分かると思います。

JavaScript の産みの親

Brendan Eich, Mozilla Foundation (2014)

ブレンダン・アイク(Brendan Eich)は1961年にカリフォルニア州のサニーベールで生まれました。そうして『Wikipedia』(英語版の『ウィキペディア』)によると、ブレンダンはイリノイ大学に進み、イリノイ大学で幾つかある分校の中でもアーバナ-シャンペーン校に通いました。この分校にはネットスケープ・コミュニケーションズ社を設立したマーク・アンドリーセンも在籍していたことがあるそうです。ここでブレンダンは1986年に修士号を取得しています(本人がプライベートなジョークサイトで書いていた説明によると、彼は牛転かし(cow tipping)で学位をもらったとのことです)。卒業してからは、まずシリコン・グラフィックス社に入って「退屈な日々を過ごし」、それからマイクロ・ユナイティ社を経て、1995年の4月にネットスケープ・コミュニケーションズ社へ入社しました*

*それ以降の経歴については、Wikipedia の “Brendan Eich” にあるとおり、2005年から Mozilla Foundation の役員を務めた後で2014年に CEO となりましたが、同姓婚を禁じるカリフォルニア州の「提案8号 (propositon 8)」を支持する活動に資金を提供していたことがわかり、わずか一ヶ月ほどで辞任することとなりました。その後、Brave という新しいブラウザを開発する会社を興しています。なお、ここでは本稿の議論と直に関係があるかどうか不明な経緯を詳しく詮索することは差し控えます。また、個人の志向やイデオロギーと開発言語の設計思想に何らかの強い関連性があるはずだと説明できる方でなければ、このような措置に安っぽい正義感だけで異議を唱える資格はないと考えます。ちなみに、僕は提案8号にかかわるブレンダンの行動は間違っていたと思います。さらに、彼の元上司であったマーク・アンドリーセンも、オルタナ右翼として知られる Milo Yiannopoulos を支持していたと非難されており、いかにテクノロジーやプログラミングについての成果がイデオロギーと直に関係がないとは言え、関係がなければ他の場所で何を言っていてもいいのかという問題は残ります。

なお、ブレンダン・アイクは JavaScript の開発により、CNET Builder.com において “Web Innovator of the Year in 1998” を受賞しています。

当時のネットスケープ社はブラウザやサーバを販売する営利企業であり、さきに述べたとおり社内の開発プロジェクトや営業戦略にかかわる当時の資料は、意図して部外者向けに書かれた IR 情報を除けば殆どネット上に公開されていません。したがって当時の様子は、関係者の回想などから推し量るしかアプローチのしようがないとも言えます。そこで、ブレンダンが当時を回想している資料を見てみましょう(もちろん、特に公の場で述べる回想は、全てを包み隠さずに述べているとは限りませんし、包み隠さず述べていても記憶の曖昧さや勘違いのせいで、かならずしも正確な説明ではないかもしれません。どこを差し引いたり無視すべきなのかは、一つの資料や発言だけで判断できることではないので、まずは当事者の発言だからといって鵜呑みにしないという点だけ気を付けましょう)。

JavaScript は、HTML を記述する人たちがドキュメントへ直にスクリプトを書けるようにしたいとの要望から生まれました。これはいまではごく当たり前のことかもしれませんが、1995 年の春、その当時は新しいアイディアだったのです。そして、(HTML はドキュメントの静的な構造だけを記述すべきだという)型にはまった能書きや、(ウェブページの役割を押し広げて活き活きとさせる唯一の方法は Java アプレットだという)でたらめに対して、少なからず抵抗したいと思っていました。

Brendan Eich, “Forward” in Danny Goodman, JavaScript Bible. 4th edn., Hungry Minds (2001).

また、最近も開発当時の様子に言及していて、次のようにも語っています。

当時は「HTMLソースに書けるスクリプト言語」が要求されていました。同時に、サン・マイクロシステムズ社とのあいだで交わされようとしていた「Java ライセンス」を驚異に感じていたのです。そして、入社したての私は、そのようなスクリプト言語の実装が可能だとデモンストレーションする必要に迫られました。 5 月になって、私は JavaScript の原型を1週間もかけずになんとか作り上げて、社内で公開できたのです! そして最初のうちは設計上のミスなど放置しておき、年内の残り時間は、この新しい言語をブラウザへ実装することだけに費やしたのです。

Brendan Eich, “JavaScript at Ten Years” (2005).

いま紹介した二つの文章でブレンダンが語っている内容を理解するには、まず当時のネットスケープ社がサン社から受けた「Java ライセンス」(1995年5月23日発表)を知る必要があるでしょう。このライセンスによって、Netscape Navigator に Java アプレットの実行環境を実装できるようになったのでした。そもそも、Java というプラットフォームそのものが Java ライセンスの発表と同じ月に初めて発表されており、しかも HotJava というブラウザを実行するための環境として紹介され、アプレットがブラウザ内で動作するようになっていたのですから、言ってみればブラウザのベンダーとして両社は競合していたことになります。当然、ブレンダン(あるいは当時のネットスケープ社)は Java アプレットに対抗意識をもっていたのでしょう。この状況を、hujikojp さんは「社内で Javaとのコンペ状態だった」と説明されており、まさに Java アプレットの実行環境だけでなく、自社オリジナルのスクリプト言語が求められていたという、当時の状況を理解することが JavaScript の生い立ちを探るための鍵になると言えるでしょう。

ここで少し余談をはさむと、この当時、ブラウザにスクリプト言語の実行環境を組み合わせた例は、Java アプレットと JavaScript (開発当初は Mocha と呼ばれていた)だけではありませんでした。もう一つ、ノンバス(Nombas)という会社が 1995 年の 11 月にスクリプト言語を使ったデモページを Espresso Pages という名称で公開し(コーヒーの話ばかりで胃がもたれそうです)、その実行環境では Nombas 社が開発した Cmm という言語で動的なコンテンツを記述できました。やがてこの実装は ScriptEase という ECMAScript 互換の実行環境へと発展してゆきました。ニコラス・ザカス(Nicholas C. Zakas)によると、Nombas が Cmm をスクリプト言語として実装したのは 1992 年頃のことなので、クライアント側でスクリプト言語を実行する環境としては最も早い時期に入ると言ってよいでしょう。ブレンダンが Nombas の製品を参考にしていたかどうかはまったく分かりません。彼自身が語っているところでは、HyperCard に感化されたという発言があるだけです。したがって、Cmm の実行環境を「ブラウザ用のスクリプト言語としては早い時期のものだった」と言うことはできても、JavaScript の前身だったと説明したり、Cmm や ScriptEase が「ブラウザに実装された実行環境」であったかのような誤解を招く説明は不適当です。しかも、ノンバス社の社長だったブレント・ヌーダ(Brent Nooda)は、ブラウザそのものに実行環境を埋め込む手法には反対しており、HTML に追加するスクリプト言語は、あくまでも CGI を通したヘルパー的な実行環境で動作させる方がよいと主張していたのですから、なおさらでしょう。

次に、ブレンダンが JavaScript のもとになる言語を作ろうとした経緯について述べている、ダグラス・クロックフォードの記事をご紹介します。そして、これはブレンダンによると間違っており、「ネットスケープ社にいなかった人物が、どうしてこんな脚色のストーリーを書こうとするのだろうか」(Brendan Eich, “Popularity”)と困惑した様子を見せています。

ブレンダン・アイクは、Netscape 社のバズワードにまみれた無知な上司を説得して、Navigator ブラウザはスクリプト言語を搭載するべきであり、新しい言語こそが望ましいと思わせるために、新しい言語を設計して大急ぎで実装し、既存の言語で同じ役割を担えるものはないと示そうとしたのである。

Douglas Crockford, “The World's Most Misunderstood Programming Language Has Become the World's Most Popular Programming Language”, 2008-03-03.

ブレンダンによると、その当時の Netscape 社にはトム・パキン(Tom Paquin)、マイケル・トイ(Michael Toy)、リック・シェル(Rick Schell)、それからマーク・アンドレッセン(Marc Andreessen)と呼ばれる人物がいて(これは、とりわけアンドレッセンがブラウザの実装技術を理解していない筈がないという趣旨の皮肉でしょう)、彼らはブラウザのソースコードに書けるようなスクリプト言語を実装する必要性を十分に理解していたので、「バズワードにまみれた無知な上司(pointy-haired boss)」ではなく、寧ろその逆だったといいます。

次に、ブレンダンが Mocha を 10 日で書いたという話については、「正確にはいつからいつまでだったのか」という質問に対して本人が回答しており、もうブレンダン本人は Mocha のソースをもっていないようですが、彼は SGI 時代からソースの先頭に(キップ・ヒックマンのやり方に倣って)名前と日付を残す習慣があったそうなので、改変のないオリジナルなソースコードが見つかれば正確な開発の日付も分かるようです(Quora, Updated Apr 28, 2015.)。その後で本人が推定しているところでは、1995年の5月6日から15日だということらしいのですが、昔のリポジトリをバックアップしている人がいない限り、正確なコミットの日付は思い出せないとのことです。

JavaScript は誰のために

話は 1995 年の4月に戻ります。ブレンダンは Netscape Navigator に Java とは別の実行環境を組み込もうと、オリジナルの言語を設計し始めました。「結局、アイクはページの要素として埋め込めるような、ラフなスクリプト言語を開発しようと決めたのであった」(Steve Champeon, “JavaScript: How Did We Get Here?“)。当時はそのような言語を、プログラミングだけに専念できるとは限らないネットワーク管理者やデザイナーたちが望んでいたらしいのです。しかし端から見れば、ウェブページのコンテンツを動的に表示するための実行環境を Java アプレットとは異なる仕方で新たに開発し追加するというのは、いたずらにものごとをややこしくしているだけに見えたのかもしれません。そこで・・・

ネットスケープの経営陣はやきもきしてこう言いました。「なんで二つも言語を実装するんだ?」そこで私はこう答えたのです。「使う人の違いですよ。Java は高価なコンポーネントを特別に開発するための言語ですが、“Mocha” は一般大衆の市場に向けたものでして、ウェブデザイナーが使う言語なのです。」

Brendan Eich, “JavaScript at Ten Years” (2005).

そうして、この新しい言語は Java に似てはいるがスクリプティング言語でなければならないという点で、我々は一致したのでした。

Marc Andreessen, “INNOVATORS OF THE NET: BRENDAN EICH AND JAVASCRIPT” (1998).

したがって、Netscape Navigator に実装されたスクリプト言語の実行環境として比較すると、JavaScript が Java のライト・バージョンであるという俗説には、開発がスタートした頃の状況説明として、それなりに妥当な理由があると言えなくもありません。実際、Java と Mocha は、Netscape Navigator がサポートする二つの実行環境としてプレゼンテーションされ、あたかも違いはターゲットだけであるかのように思われたのですから。こうして Mocha の実装は続けられ、同年の12月4日にネットスケープ社とサン社の共同発表で「JavaScript」の名称が公式に使われることとなりました。その公式発表を見ると、

Java は新しいオブジェクトやアプレットを開発するためにプログラマが使う言語だが、JavaScript は HTML 制作者やエンタープライズ・アプリケーションの開発者が、サーバやクライアント上で動作するオブジェクトの挙動を、ダイナミックに記述できるように設計されている。JavaScript を使えば、Visual Basic のように、プログラミングの経験が殆どないユーザでも複雑なアプリケーションを構築できるようになるだろう。

Netscape Communications Corporation, “NETSCAPE AND SUN ANNOUNCE JAVASCRIPT, THE OPEN, CROSS-PLATFORM OBJECT SCRIPTING LANGUAGE FOR ENTERPRISE NETWORKS AND THE INTERNET: 28 INDUSTRY-LEADING COMPANIES TO ENDORSE JAVASCRIPT AS A COMPLEMENT TO JAVA FOR EASY ONLINE APPLICATION DEVELOPMENT”, December 4, 1995.

Netscape Navigator 2.02

と述べられており、ネットスケープ社もサン社も JavaScript を Java の簡易版であるかのように紹介しています。しかも、「Java-」という言葉がわざわざ付けられているのですから、現在でも初心者が JavaScript を「Java スクリプト」と書いたり「ジャバ」と呼んでしまうのは、仕方のないことです。実際、スティーブ・チャンピオン(Steve Champeon)によると、マーケティング上の「誤り」であったこの命名によって、メーリングリストや Usenet 上で多くのウェブデザイナーたちが Java と JavaScript を取り違えるという混乱が後を絶たなかったと言います。また現在でも、カテゴリーごとの専門スタッフがいる大型書店ですら、Java のコーナーに JavaScript の本が混じっているのはありふれた光景です。

Mocha から LiveScript そして JavaScript へ

では、上記の公式発表に至る経緯をもう少し詳しく辿りなおしてみましょう。“Mocha” と呼ばれていたスクリプト言語は、いつから “JavaScript” になったのでしょうか。たいていの職業プログラマなら知っているように、それは上記発表の直前になってマーケティング上の理由から改名されたということになっています。ところが、これまで見てきたように、プロジェクトの立ち上げ当初から Mocha は Java とは別のターゲット層に向けて開発されてきた「ライトな」言語です。すると、社内プレゼンにおいても「何に対してライトなのか」という点で、Java との比較に最初から晒されていたことが分かります。ひとくちに「ライト(ウェイト)な言語」と言っても、それがスクリプト言語だという実装についての分類という意味で理解されるだけではなく、当時のネットスケープ社では Java と比較して「ライトユーザのための言語」という意味合いもあったのではないでしょうか。ネットスケープ社の中で JavaScript と呼ばれる運命にあった言語がどのように扱われていたかを振り返ってみると、一方では Java に似た言語として紹介し注目を浴びたいという思惑と、他方では Java アプレットだけではない他のスタイルを提案したいという思惑が衝突していたのではないかと想像できます。すると、お披露目の直前になって Java から “Java” という言葉だけ借用して箔を付けたと言わんばかりの非難は、上記のような状況を理解していなければ、「Java と JavaScript は違う!」と叫ぶだけの言葉狩りに終わってしまうでしょう。そこで、ブレンダンのプロジェクトが “JavaScript” と改名される直前に注目してみましょう。ブレンダンがプロトタイプの言語を “Mocha”(“Mocha” という名称はブレンダンではなくマーク・アンドリーセンが付けたようです。[Antani: 2016, 2])と呼んでいたのは既に説明しましたが、“Mocha” からいきなり “JavaScript” へと改名されたわけではありません。JavaScript を紹介している本にしばしば書かれているように、まず “Mocha” は “LiveScript” と改名され、そして “JavaScript” へと改名されました。では、いつ “Mocha” から “LiveScript” になったのでしょうか。まず、ブレンダン自身が語っているところへ、再び戻ってみましょう。

私たちが開発していたスクリプト言語は、1995年の9月に公開された Netscape Navigator 2.0 のベータ版に実装されたとき、LiveScript という名前が与えられました。しかし、サン社と共同で1995年12月4日に公式発表されるにあたり、この言語は JavaScript と再び改名されたのです。

Marc Andressen, “INNOVATORS OF THE NET: BRENDAN EICH AND JAVASCRIPT“, June 24, 1998.

そしてスティーブ・チャンピオンによれば、Netscape Navigator 2.0 のベータ版を開発していた終盤になって “LiveScript” という呼称は “JavaScript” へと変更されたのでした。“Mocha” からの流れを追ってみると、

となり、“LiveScript” の名称は約3ヶ月しか使われなかったことが分かります。すると、この3ヶ月間に何があったのかが問題となります。プログラム言語としての JavaScript の設計思想は、プロトタイプの Mocha からリリース版 JavaScript に至るまで殆ど変更されていませんでした(LiveScript と Netscape Navigator 2.0 のリリース版とではっきり違っているのは、JavaScript とは異なり LiveScript が大文字と小文字を区別しない(case-insensitive)という点くらいだったようです)。そして、さきほども述べたようにブレンダンたち Netscape Navigator 開発スタッフは、設計上の小さな問題点をそのままにしておいて、スクリプトの実行エンジンをブラウザへ実装する方に専念していたのでした。したがって、“LiveScript” という呼称が1995年の9月に与えられたとき、そのままの呼称で正式リリースするつもりだったのか、それとも正式リリースするにあたって “JavaScript” という呼称を与えるつもりだったのかを突き止めておく必要があるでしょう。つまり、“Live-” という接頭語がダミー(もしかすると “Java-” を付けられないかもしれなかった)やフェイク(“Java-” を付けられたが、9月の時点では公表するつもりがなかった)だったのではないかと思われるからです。この点について分かっている事実から述べると、まず “javascript” という商標を登録しているのはネットスケープ社ではなく、サン社です。申請日(filing date)は1995年12月1日となっており、正式に登録されたのは2000年の12月1日です。そして “livescript” という名称についてネットスケープ社は商標登録の申請をしておらず、マイクロソフト社が1997年4月23日に申請して、翌年には申請を取り消しています。通常、一般名詞でもない限り、プロダクトの名称を公表しておいて商標を登録申請しないのは企業として不自然と思えるので、本当に “LiveScript” をそのまま使う気であれば、ベータ版を公開した1995年の9月に申請していてもよかったのではないでしょうか。また、ネットスケープ社には LiveConnect や LiveWire など、“Live-” を付けたプロダクトがありますから、その一環で “LiveScript” とつけたのではないかと考えるのが自然です。

この名称は Netscape のプロダクトライン(Live Wire, Payment Live, Live Audio etc.)に沿うものでした。LiveScript は文法や制御構文という点で Java の表面的なところを真似たのです。ブレンダン・アイクによると、「ネットスケープとサンは、スクリプト言語にも Java ブームを起こそうとしていたのです」

Die Geschichte von Java und JavaScript“, (2005).

ちなみに、サーバサイドの JavaScript エンジンである LiveWire は翌年に公開されているので、ネットスケープ社が Mocha を LiveScript へと改名した当時は LiveWire はありません(クライアントサイドの実装すら十分に完了していなかったのですから)。次に、1995 年の顛末をブレンダン自身が他のインタビュー記事で語っているところを見ると、次のようになります。

インタビュアー:あなたはしばしば 1995 年に Netscape (Navigator) へ LiveScript を実装した発明者として言及されますが、そのプロジェクトを一人で進めていたのですか?
ブレンダン:わたしだけでした。95年5月までのあいだに、私は Mocha という言語の原型を一週間でつくりあげました。Mocha は、親しみやすい Java だったのです。その基本コンセプトは、HTML に埋め込むスクリプト言語をつくるということであって、従来のように開発者がサーバを通して出力するのではなく、ページの中へ直にプログラムを統合できるようにし、イベントで発火する動きやフォームの検査などを可能にすることでした。この言語の原型には10日だけかけて、その年の残りはすべて Navigator へ実装することに費やしたのです。名称は後からサン社との合意に鑑みて影響を受けました。その当時、ネットスケープ社はウェブでの Java の成功に便乗したがっていたのです。
Interview de Brendan Eich (Mozilla Corp.)”, JDN developpeurs, (2007).

また一説によれば、“Mocha” という名称は競合相手の “Java” を意識しすぎているので、もう少しコーヒーとは無関係の名称にした方がよいとの判断があったにもかかわらず、逆に “LiveScript” ではあまりにも “Java” との結びつきが薄いので、結局は “JavaScript” になったのだという解釈もあるようです(James Payne, “Javascript: the Beginning”)。1995年9月18日にネットスケープ社が公開したニューズリリースを読むと、Netscape Navigator 2.0 のアップグレード内容について “LiveScript” という呼称は全く出てきません。TidBITS日本語版 TidBITS)など、LiveScript が初めてリリースされた9月前後のドキュメントには見受けられませんが、Netscape Navigator 2.0 が正式にリリースされた12月以降になると、“JavaScript” 発表の直前に出た Sun World の記事から、直後に出た Sun World の記事に見られるとおり “LiveScript” という呼称はそのまま文章に使われています。但しネットスケープ社が提供していた Navigator 2.0 の技術ドキュメントは全て “JavaScript” という呼称を使っているので、ネットスケープ社が公式に “LiveScript” という名称を使った文書はそう多くないのです。

そして12月4日に、ネットスケープ社とサン社は技術提携を発表しました。両社はウェブページを記述する HTML に埋め込めるように設計された、新しいスクリプト言語を開発するために共同で作業するというのです。幸運なことに、ネットスケープ社は既にそうしたスクリプト言語を手にしていました。そこでネットスケープ社は、その言語を今後は JavaScript と呼ぶことにしたのです。すると一夜にして JavaScript への注目度は急上昇しました。この言語を JavaScript と呼ぶことにマーケティング的な利点があったことははっきりしていました。JavaScript は、業界の中でよく知られていただけではありましたが、Java という勝ち馬に乗れたからです。しかし、その名前は何か人を惑わすものでもありました。なぜなら、その名前は JavaScript が「初心者向けの」Java であるかのように見えるからです。そして、それは事実に反しています。ネットスケープ社とサン社は、意図してユーザを混乱させようとはしていませんでしたし、Java と JavaScript の名前の違いがそれぞれの言語の役割をはっきり区別してしまうとも思っていませんでした。ですから今にして思えば、ネットスケープ社とサン社は、Java と JavaScript の特徴や利点をユーザに教育する — そして、どうして両方とも必要なのかを説明する — という骨を折ればよかったのに、と思います。

Gordon Mccomb, “Is JavaScript here to stay?: The challenges facing this leading user-scripting language“, JavaWorld (1996).

このようなわけで、Mocha から LiveScript への改名はネットスケープ社のプロダクトラインとして位置づけられたという経緯を予想でき、LiveScript から JavaScript への改名は、従来どおりマーケティング上の戦術の結果だったと言えるでしょう。そして、1995年5月に発表された Java ライセンスの認可と、同年12月に発表された Java との技術提供は、ネットスケープ社やブレンダンたち開発スタッフに与えた影響がそれぞれ異なります。前者はネットスケープ社とブレンダンたちにとって、或る種の脅威であったのでしょう。対して、後者は少なくともネットスケープ社にとって絶好の機会と映ったのかもしれません。そこで、サン社が登録商標をもち、ネットスケープ社は “JavaScript” と名のついたプロダクトを世に送り出すこととなったのでしょう。

JavaScript の生い立ちという教訓

もちろん、これまで紹介してきた引用の著者は殆ど全員が “JavaScript” という名称を一つの災難だと捉えています。しかし、渦中にいたブレンダンは当時のネットスケープ社の決定に反対したのかどうかも語ってはいませんし、反対できたのかどうかも不明です。このあたりは、当時の役員や本人に語る機会と意志がなければはっきりしませんが、いまとなってはそうする必要はないでしょう。これまで JavaScript と呼ばれることになった言語の開発と命名の経緯を追ってきて、私たちが学ぶべきことは、「WEB 2.0 とか CGM などと言っているマーケティング屋を信用するな」という枝葉末節ではないはずです。

冒頭で述べた、「じゃあ、なんでこんな紛らわしい名前がついているのか」という質問に答えようとすると、最も簡単な返事は当時のネットスケープ社にいたマーケティング担当者や役員たちを引き合いに出すことなのでしょう。いま開発に携わっている私たちも、この名前には困惑しているのですと言うしかないのでしょうか。もちろん一つのプロジェクト・マネジメントとして、このスクリプト言語を世に送り出す経緯を見れば、そこには様々な思惑や力関係が働いており、軽々には語れません。たとえ言語の仕様や書式が Java と似ても似つかなかったにせよ、ネットスケープ社の一部の役員らには、“Java” というブランドを冠した手軽に扱える言語を提供して、プロパティやメソッドにドット記法でアクセスするという、ちょっとした Java 気分でも味わってもらえたらよいという程度の理解しかなかったのかもしれないからです。

Ok, back to JavaScript popularity. We know certain Ajax libraries are popular. Is JavaScript popular? It’s hard to say. Some Ajax developers profess (and demonstrate) love for it. Yet many curse it, including me. I still think of it as a quickie love-child of C and Self. Dr. Johnson‘s words come to mind: “the part that is good is not original, and the part that is original is not good.”

Brendan Eich, “Popularity”, 2008-04-03.

冒頭に戻る

Appendix A (2019-10-29)

“Should We Rebrand JavaScript?” [Potts, 2019] というエントリーが話題となっていたので、久しぶりに JavaScript という名称について取り上げてみたい。このエントリーを書いたポッツ氏によると、“JavaScript” にはブランディングの問題が幾つかあるという。(1) 現在の正式な規格は ECMAScript である、(2) ECMAScript のサブセットが JavaScript であるにも関わらず現行の ECMAScript を含めた言語として JavaScript と呼ばれてしまう場合がある、(3) JavaScript は Oracle の商標であること、(4) 公式のロゴが存在しない、(5) JavaScript は Java とは関係がないのに誤解を与えてきた、(6) クライアント・サイドやサーバ・サイドなどのコンテクストが分かり難い。よって、彼としては “JS” などと改名した方がよいと言う。他に、この記事を取り上げた Slashdot のスレッドもあるが、コメントは正直なところ参考になるようなものではない。

まずポッツ氏が最後に挙げた (6) は、僕にはどうでもよいことだと思える。実装なりインターフェイスが違うからといって、それをわざわざ違う名称にする必要などないからだ。ブラウザで動作するコードとサーバで動作させるコードが単に違う書き方をするのであれ、それだけではそれらを別の言語だと言うには統語論上の根拠が不十分だろう。そして、(5) は本稿でも扱ってきた論点ではあるが、今どき Java と JavaScript が違うとか関係がないという実務上の常識も知らずに IT やウェブ制作の業界で “non-technical managers and recruiters” をやっているような無能が仕事をしていること自体、由々しき事であろう。そういう人間は、適切なプロセスで淘汰されなくてはならず、事は JavaScript だけの問題ではない可能性がある。そういう馬鹿は他にもリスクがあるのだ。そして、(4) など僕にはどうだっていいことだ。実際、僕は PHP のロゴなんてデザイナーとして何の評価もしていないし、自分で使ったことすらなく、そもそも PHP に関連するサイトの identification として通用する意匠かどうかすら疑わしいと思っている。PHP に関連するサイトで、あの紫色をカラー・スキームにしている事例が何割くらいあるのだろうか。それから (1), (2) は分からなくもないが、これはどちらかと言えば ECMAScript についての啓発が不足しているせいで、そもそも JavaScript のコーダですら ECMAScript なんて規格を意識して仕事はしておらず、実際のところ知りもしない人が多いからではないか。よって、superset だ subset だと言っても、ECMAScript そのものを正しく理解していない人が多いと思われる現状では、JavaScript の名称を変えたところで大した効果はないと思う。

というわけで、残るのは (3) つまり、オラクルが商標を持っているという最もベタな事情であろう。実際、ソフトウェアのリード文に “JavaScript” という名称を使ったことでオラクルから名称を外すように要求されたという事例があるため、書籍名やカンファレンスのタイトルでも似たような事案が生じる可能性はある。たとえば、オラクルの競合が主催するカンファレンスでは “JavaScript” という名称をタイトルに使うことが禁止されるといった可能性である。もし、こういう不自由さが極端に多くなってくれば、もちろん名称が変わる可能性はある。しかし、実のところ名称なんてどうでもいいという気もする。よくある冗談だが、神聖でもローマ的でも帝国でもなかった「神聖ローマ帝国」のように、名称など、しょせんは事の本質でもなんでもないからだ。

冒頭に戻る

参考

Antani, Ved

2016

Mastering JavaScript. Packt Publishing Ltd., 2016.

Champeon, Steve

2001

JavaScript: How Did We Get Here?”, April 6th, 2001.

Rewind to early 1995. Netscape had just hired Brendan Eich away from MicroUnity Systems Engineering, to take charge of the design and implementation of a new language. Tasked with making Navigator”s newly added Java support more accessible to non-Java programmers, Eich eventually decided that a loosely-typed scripting language suited the environment and audience, namely the few thousand web designers and developers who needed to be able to tie into page elements (such as forms, or frames, or images) without a bytecode compiler or knowledge of object-oriented software design.

The language he created was christened “LiveScript,” to reflect its dynamic nature, but was quickly (before the end of the Navigator 2.0 beta cycle) renamed JavaScript, a mistake driven by marketing that would plague web designers for years to come, as they confused the two incessantly on mailing lists and on Usenet. Netscape and Sun jointly announced the new language on December 4, 1995, calling it a “complement” to both HTML and Java.

Ehara, Akio(江原顕雄)

2007

いまさら聞けないJavaScript入門」, @IT, July 17th, 2007.

Andreessen, Marc

1998

INNOVATORS OF THE NET: BRENDAN EICH AND JAVASCRIPT”, June 24th, 1998.(日本語訳

I came to Netscape in April 1995, after seven years at Silicon Graphics and three years at MicroUnity Systems Engineering. Netscape was about a year old then and was looking for someone to work on a scripting language or some kind of language inside the browser that could be used to automate parts of a web page or make a web page more dynamic. Java had been around for five years at First Person and Sun, and had been retooled for the web in late 1994. Netscape was the first Java licensee, so the issue became: Can we do just Java, or do we need another language?

There were people who argued strongly that Java”s fine for programmers who build components, but there”s a much larger audience of people who write scripts or maybe copy a script from somebody else and tweak it. These people are less specialized and may be paid to do something other than programming, like administer a network, and they write scripts part-time or on the side. If they”re writing small pieces of code, they just want to get their code done with the minimal amount of fuss. Finally, we agreed that this new language should look like Java, but be a scripting language.

Like all languages, it borrowed from others. LiveScript was the official name it was given when it first shipped in beta releases of Netscape Navigator 2.0 in September 1995, but we rechristened it JavaScript in a joint announcement with Sun on December 4, 1995.

Eich, Brendan

2001

Foreword (PDF)”, in Danny Goodman, JavaScript Bible, 4th edn., Hungry Minds, 2001.

JavaScript was born out of a desire to let HTML authors write scripts directly in their documents. This may seem obvious now, but in the spring of 1995 it was novel and more than a little at odds with both the conventional wisdom (that HTML should describe static document structure only) and the Next Big Thing (Java applets, which were hyped as the one true way to enliven and extend Web pages). Once I got past these contentions, JavaScript quickly shaped up along the following lines:

“Java-lite” syntax. Although the “natural language” syntax of HyperTalk was fresh in my mind after a friend lent me The Complete HyperCard Handbook by some fellow named Goodman, the Next Big Thing weighed heavier, especially in light of another goal: scripting Java applets. If the scripting language resembled Java, then those programmers who made the jump from JavaScript to Java would welcome similarities in syntax. But insisting on Java”s class and type declarations, or on a semicolon after each statement when a line ending would do, were out of the question — scripting for most people is about writing short snippets of code, quickly and without fuss.

2005

JavaScript at Ten Years (MS PowerPoint)”, 2005.

2008

Popularity”, April 3rd, 2008.

Holzner, Steve

2002

JavaScript Through the Ages”, in Inside JavaScript, New Riders, November 8th, 2002.

Brendan Eich called his creation LiveScript, but it was renamed JavaScript. (In fact, many people consider the name change a big mistake.) Although developed by Netscape, Sun had the trademarks on Java, and the name JavaScript is actually a trademark of Sun Microsystems, Inc. The new language was announced in a Netscape and Sun joint press conference on December 4, 1995. They originally positioned it as a “complement” to Java and HTML, rather than a simple support language for Java.

However, JavaScript rapidly slipped out of Java”s shadow. Programmers took to it at once, and although there were problems with bugs and later with security, JavaScript was a success. It became clear that, as Eich had realized, programming a web page in the browser made all kinds of things possible that couldn”t be done if you needed to reload the page from the server. (In fact, the most popular, original use for JavaScript was to swap images when the mouse rolled over them, and that continues to be a very popular thing to do.)

hujikojp

2006

JavaScriptと Java”, October 19th, 2006.

Jasiński, Michał

????

“QBase Technology” - Java Script.

In result of the agreement between Netscape Communications Corporation and Sun Microsystems the idea of LiveScript had been combined with Java technology into one environment (code name “Mocha”) enabling creation of web applications and dynamic WWW pages. It was an open project and was designed as platform independent solution. After this project had finished in 1995 JavaScript was born. Great interest in JavaScript from different companies moved Microsoft to implement JavaScript in its Internet Explorer web browser. Since this even JavaScript career began.

Keith, Jeremy

2005

A Brief History of JavaScript”, October 3rd, 2005.

JavaScript was introduced to add extra “oomph!” to web pages. Instructions written in JavaScript were interpreted and executed by the web browser. Most of these instructions involved the manipulation of the browser window: changing its size, moving it around and spawning new windows. These dubious actions were possible because JavaScript could communicate directly with the browser using a sort of Browser Object Model.

Krill, Paul

2008

JavaScript creator ponders past, future”, InfoWorld, June 23th, 2008.

So it’s 1995, the Web is very early. HTML was 3.2, I think, or something like that. People did not have much programmability. Java was coming along at the same time but it required you to use a high-powered programming language and then run a compiler and put your code into a package that became an applet that was part of the page but it was in a little silo. It was kind of walled off.

And it was hard to do -- it was for professional programmers. It was for the high-powered real estate virtual tour or something like that. Whereas JavaScript was just a little snippet you could write, you could copy somebody else’s, you could learn as you went. You didn’t have to learn the whole language to use it and you could buy it by the yard.

That idea was very strongly held by Marc Andreessen and myself. Bill Joy at Sun was the champion of it, which was very helpful because that’s how we got the name. And we were pushing it as a little brother to Java, as a complementary language like Visual Basic was to C++ in Microsoft’s language families at the time. And it took off. We got it out in time.

McComb, Gordon

1996

What JavaScript Is All About”, 1996.

When Netscape announced their intention of supporting Java in the Netscape 2.0 product, they also announced a collaboration with Sun on re-developing LiveScript, now renamed JavaScript. Suddenly, interest in the little “scripting language that could” blossomed. Whereas Java requires in-depth programming knowledge and a software development kit, JavaScript programs can be written by most any HTML page designer. No software development kit is needed.

Netscape Communications Corporation

1995

NETSCAPE AND SUN ANNOUNCE JAVASCRIPT, THE OPEN, CROSS-PLATFORM OBJECT SCRIPTING LANGUAGE FOR ENTERPRISE NETWORKS AND THE INTERNET: 28 INDUSTRY-LEADING COMPANIES TO ENDORSE JAVASCRIPT AS A COMPLEMENT TO JAVA FOR EASY ONLINE APPLICATION DEVELOPMENT”, December 4th, 1995.

MOUNTAIN VIEW, Calif. (December 4, 1995) — Netscape Communications Corporation (NASDAQ: NSCP) and Sun Microsystems, Inc. (NASDAQ:SUNW), today announced JavaScript, an open, cross-platform object scripting language for the creation and customization of applications on enterprise networks and the Internet. The JavaScript language complements Java, Sun”s industry-leading object-oriented, cross-platform programming language. The initial version of JavaScript is available now as part of the beta version of Netscape Navigator 2.0, which is currently available for downloading from Netscape”s web site.

JavaScript is an easy-to-use object scripting language designed for creating live online applications that link together objects and resources on both clients and servers. While Java is used by programmers to create new objects and applets, JavaScript is designed for use by HTML page authors and enterprise application developers to dynamically script the behavior of objects running on either the client or the server. JavaScript is analogous to Visual Basic in that it can be used by people with little or no programming experience to quickly construct complex applications.

Payne, James

2007

Javascript: the Beginning”, October 29th, 2007.

Potts, Kieran

2019

“Should We Rebrand JavaScript?” published on October 14th, 2019; https://kieranpotts.com/rebranding-javascript/, accessed on October 29th, 2019.

yomoyomo 氏のエントリーで概略が紹介されている。
Severance, Charles

2012

Java Script: Designing a Language in 10 Days”, Computer, Vol.45, No.2 (Feburary 2012), pp.7-8.

大したこと書いてないので読まなくてもいいです。
Sliwa, Carol

1996

Scripting standard coming”, December 2nd, 1996.

“Since there wasn”t really anything written down rock-solid, they”ve had to guess at what the script rules were, and every time a new browser comes out, you can”t be sure your script is going to work in all the browsers,” [Brent] Noorda said.

Steenson, Molly Wright

1998

JavaScript: Past, Present, and Future - Where It”s Been, Where It”s Going”, November 11th, 1998.

When Brendan Eich arrived at Netscape, in April 1995, talk abounded about making web pages more dynamic. The development team wondered if it would be best to just incorporate Sun”s Java, since Netscape was the first company to license it. The team decided Java was a better option for building components and not simple, easy-to-tweak scripts. Thus, LiveScript was born, shipping with Netscape Navigator 2.0 beta releases. In December 1995, the scripting language was renamed JavaScript.

“Because JavaScript took off so well on the web after the beta of Navigator 2.0, Microsoft had to implement compatible language support, to keep up,” says Eich, in “Innovators of the Net: Brendan Eich and JavaScript.” That created demand for a standards body to say, ”Here”s how it should work,” so that software companies could meet the standard and authors could be sure that their pages would work with the widest possible number of browsers.”

Stephanie (Tina Spain McDuffie)

2002

Introduction to JavaScript (PDF)” in Javascript: Concepts & Techniques; Programing Interactive Web Sites, Franklin Beedle & Association, 2003, accessed on 2002-11-12 17:01:29.

JavaScript was created by Brendan Eich of Netscape Communications and was first made available in 1995 as part of Netscape Navigator 2.0, the first JavaScript-enabled Web browser. Originally called LiveScript, JavaScript owes the Java part of its name to the popularity of Java, the cross-platform, object-oriented programming language created by Sun Microsystems. JavaScript wad designed for the specific purpose (remember I said scripting languages are developed for a specific purpose) of extending the capabilities of Web browsers and providing Web developers with and easy means of adding interactivity to their Web sites.

Techotopia

2007

The History of JavaScript”, June 19th, 2007.

The scripting language developed at Netscape was originally called LiveScript. Perhaps in an effort to bask in the reflected glory of Sun Microsystem”s Java programming language, LiveScript was later renamed JavaScript, though in reality it bears no resemblance to Sun”s Java.

Willison, Simon

2006

A re-introduction to JavaScript”, March 7th, 2006.(日本語訳

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook