だから、2015年までの歴史を語ってる。
なるほど。
で、その後5年経ってから書かれたっていう記事ですね。
なるほどですね。
それって、若い方なんですか? 言語。
それは良い質問で、
えっと、これが開発された時点では、
例えばC言語とか、パイソンとか、
えっと、パールとかあったけど、
まあ、例えばさっき話に出た、ルビーとかはないみたいな。
あと、Javaは同じ年に開発されたのかな、ぐらいの感じです。
あの、これはあれなんですけど、JavaとJavascriptは。
それはね、非常に良い質問で、まずショートアンサーは違います。
違うのは分かってます。
別物です。
で、その関係については、このお話の中で出てきますので。
分かりました。じゃあ、楽しみに待ってます。
ご安心ください。
はい。
はい、じゃあ始めていきましょうかね。
はい。
ね、割とね、古典ラジオをリスペクトというかね、
あの、今回ちょっと僕が語りながら、あやかさんにツッコミを入れてもらうっていう、
古典ラジオって割と歴史の有名なポッドキャスト番組があるので、
はい。
まあ、それと似た感じのスタイルで、はい、いこうかなと思います。
あれですよね、あの、
なんか、中国何千年の歴史、誰とか彼とかみたいな感じで始まるじゃないですか。
そうそう、タイトルコールがあるんですね。
タイトルコールを、その、歴史について詳しくない人がやる、
樋口さんっていう方がやるんですよ。
で、深井さんっていう、
今回、歴史マニアの人が、こう語ってくれるという。
横川深井さん役ということで。
はい。私、樋口さん役なので、ちょっとタイトルコールしたいんですけど、
あの、最初に何て言ったらいいですか、なんとかかんとか、ジャバスクリプトの歴史。
ジャバスクリプト、波乱の20年、ジャバスクリプトはどこから来て、どこへ行くのかって、お願いします。
長い。
長い、長い。
え、じゃあ、波乱の20年、ジャバスクリプトの歴史でいいですか。
いえいえいえ。
はい。
これやりたかったんで、すごい嬉しいです。
はい。タイトルコールしていただきました。
はい。
で、ジャバスクリプトとはっていうことなんですけど、
えっとですね、実は、ジャバスクリプトっていうプログラミング言語は、
スタックオーバーフローってサイトによると、プロのエンジニアの71%が使っている。
世界で最も普及しているプログラミング言語です。
で、GitHubってまた別のウェブサイトが統計をしてるんですけど、
そこでも一番よく使われているプログラミング言語のランキング第一位と。
私が前回、シーサイマップでデータベースの話をちょっとしたじゃないですか、
あれもジャバスクリプトで書かれてます。
ジャバスクリプト非常にいろんなところで使われていると。
で、一番わかりやすいのは、ウェブブラウザの中で動く言語がジャバスクリプトなんですね。
だからこそ、ウェブサイトをみんな使っていると。
なので、それを書く人も多いし、読める人も多いし、
逆にジャバスクリプトがないとウェブサイト動かないですから、
シリコングラフィックスでは、やはりブレンダンさんの才能を生かすことはできなかったわけですよ。
で、そうするうちに、ネットスケープでスキームっていう言語が使える人を探してるらしいっていう噂が立つんですね。
で、じゃあ一旗あげてやろうじゃんかって言って、ブレンダンさんはネットスケープに入社します。
なるほど。
最初はスキームの仕事はできるって言ったから来たわけね。
これが4月の話です。覚えてください、4月。
で、そこで入社しますね。
で、パソコンとかのセットアップが終わって、で、スキームの仕事って何なんですかって聞いたら、
いやいや、ちょっと来てくれよと。で、会議室に呼ばれます。
で、ネットスケープってブラウザに、ウェブサイトを動的にする言語を入れたいんだと。
で、スキームは実はその候補の一つなんだと。
で、ブレンダンは当然スキーム世界一かっこいい言語だから絶対これ使ったほうがいいって言うんですよね。
っていうところまでが、まずブレンダンとネットスケープの出会い。
もうだからスキームじゃなかったとしても、俺がかっこいいと思う言語を使ってやろうじゃないかって思ってるわけですね。
で、そういう個人のプログラムがいるんですけど、
同時にネットスケープって結構イケてる会社なので、いろんなオファーが来るんですね。
俺と一緒にやろうぜみたいな。マイクロソフトもやっぱ買収してきたぐらいだし。
で、そのうちのコンタクトしてきた会社のうちの一つが、サンマイクロシステムズっていう、
これはJavaをこれから作ることになる。実はまだできてないんですけど、
これから作ることになる会社があるんですね。
で、サンマイクロシステムズは今どういう状況かっていうと、
当時なんかちょっとよくわかんないんですけど、Javaっていうのをまだ発表しただけで出してないんですよ。
なるほど。
でも基本ものすごいでかくて強い会社なので、Javaっていうのはものすごくかっこよくて、ものすごく高性能らしいって噂だけが広まってるっていう状況。
みんなJava知ってるって気になるみたいな感じ。
それは新しい言語で。
新しい言語として発表したんです。
これからJavaで一旗あげて、もう世界を接近してやろうぜっていうサンって会社がやってきて、
で、ちょっと提携しようぜと。
ウェブブラウザー、ウェブの未来は明るいと思うので、Javaをもう一旗かみたいってことで、
じゃあJavaを乗せようぜっていうことを言い出すんですよ。
なるほど。それはサン側が言い出す。
サン側が言い出す。
で、ネットスケープはIEとかに攻められてるから、仲間が欲しいんで、いいよいいよって言っちゃうんですよね。
なるほど。
スキームが使いたいのに、Javaやろうぜっていうのに、OKってCEO同士が言っちゃうんです。
はいはいはいはい。
で、ブレンダン的には何言ってるんだと。
で、なんかいろいろ俺もうすでに検討したんだけどって言ったんだけど、
もうJavaをブラウザーに乗せてくれっていう人が乗り込んできたんで、
ブレンダインは金融の仕事って言ったのに何言ってんだみたいな感じだったんじゃないかなと思います。
でも、Javaを実装するっていうのは無理だから、確かにそういうちっちゃい言語を作る必要があるのかもしれない。
でも、できるかわかんないし、10日くれみたいな。
10日でできるところまでやってみるわって言うんですね。
で、10日でJavaのアッシュとしてMokaっていうのを作る。
かわいいですね。
で、Mokaっていうのはコーヒーの原産地のJawa地方。
Jawaが英語読みでJavaっていう語源があるんですね。
コーヒー関連のロゴの形もコーヒーカップとかもするし。
なので、そのちっちゃい版をMokaって名前にしようって言って、プロトタイプを作り始めるんですね。
で、ブレンダーエッグのまず聞いてた要望としては、ちょっと見た目Javaっぽくしてくれたらいいみたいな。
Javaっぽい要素を残してほしいっていう要求が。
それは聞いてたんですよ。
で、他には例えば、こういう仕様とか、ああいう仕様とかあるのって言ったら、
いや、Javaっぽかったら、結構何でもいいかもしれないって感じだったらしいんですよね。
で、なので、わかったって言って、じゃあちょっとスキームを使うのは諦めたけど、
ちょっと俺の好きな要素とか、いろいろ入れちゃえるんじゃないかなっていうのがあったわけです。
ブレンダー偉い。
ブレンダーはね、非常に結構ね、尖ってるやつだけど、そういう柔軟性もあると。
偉いですね。
だから、はいはいって言って、わかったよ、Javaっぽいの作るよって言いながら、逆に中身はスキームっぽいやつにしちゃおう。
そういうのもあったんですよね。スキームっぽい要素を入れていこうっていう。
はい、なので、例えば特徴としては、動的静的っていう、ちょっとさっきHTMLの話もあったんですけど、
今度は言語のその仕様として、動的静的っていうのがあって、
で、それもJavaは静的だけど、実はJavaScriptは動的にしよう。
動的片付けみたいなのにしようみたいなことを、いろいろ別の言語の要素をどんどん取り入れていきます。
なので、Javaっぽいものを作ってるよとは言うんですけど、結構中身は違ったりする。
で、例えばコンストラクターでオブジェクトを作るとか、オブジェクトはプロパティを持つっていう、これはJavaの特徴の話なんですけど、
っていうのは一緒なんです。
ただ、その後に作った後でもいろいろ中身を入れ替えられたりとか、型っていうのの制限がなかったりっていう、
そういうJavaと違う要素もたくさん入れて、で、作ったのがJavaScriptの原型、Mochaです。
型の制限がないっていうのは?
これは、例えば、お金、お財布みたいなものを作るとして、JavaScriptで。
まあ、そうですね。
まあ、結局サムも、Javaできてないのに、Javaいいよって。
いいよって。
要すって、こう、マーケティングを先に。
ね、なんかハッタリばっかの業界みたいな話だったんじゃないですかね。
でも、1年でこんな変化が起こる年っていうのは、基本そんなに、たぶん現代ではないっていうか、なんかね、こういう感じではない、その変化の速さで。
なんかその、1995年当時の大恥な、みんな、やるぜやるぜって言って、まだできてないみたいなとかは、独特の熱い空気があるなと思ってしまいますね。
うん、うん、確かに。あの、なんだっけ、シリコンバレーのスタートアップっていう、ネットフリーのドラマかなんかありますよね。
あれがそんな感じですよね。
確かに、確かに。
口で言って、後から技術を追いつかせるみたいな感じって結構あるから。
それはね、結構多かったみたいですね。
うん、うん、面白い。
まあ、Javaスクリプトはまさにその産物って感じ。
うん、ほんと。
だからその、グランドデザインがあってできた言語じゃないんですよ。
その、10日間でとりあえず仕様を見出して、かつ自分の趣味もできる限り盛り込んだプロトタイプが、そのまま基本は言語の元になっちゃったって感じ。
それが今、世界中で一番使われてるっていうのはすごいですね。
すごいことですよね。
でですね、ただ、ここでですね、こう、みなさんもう忘れかけてると思うんですけど、マイクロソフトって会社いるんです。
はい、はい。
で、サンとネットスキップは組むって言ってるんですけど、それはやっぱマイクロソフトに対抗しなきゃいけないからなんですね。
で、そのくらい脅威に思うほどマイクロソフトっていうのは結構強いし、かつ独自路線で、俺が作った仕様を使ってほしいみたいな、そういう人がいた会社なんですね。
で、その当時、Visual Basicっていう、Windows上で動くアプリを作る言語を持ってたんですね。
で、マイクロソフトは何を考えるかっていうと、これからウェブの時代だ。
で、Visual Basicはめっちゃ書ける人いると。
だから、Visual Basicこそがウェブ上の標準言語にふさわしいんじゃないかってことを言い出す。
言いそうだな。
で、ただ、それは思ってたんだろうけど、ネットフリックスに先行されちゃうんですよ。
ネットフリックス?
ネットスキップ。
ネットスキップにJavaScriptの発表先行されちゃうんですよ。
じゃあ、急いでよかったんですね。
そう、よかったんですよ。
そういう意味では、CEOがやったことは正しかったんですね。
そう。で、もう結構焦ってたんだろうね。
JavaScript発表された同じ週に、Visual Basicをウェブ上の標準言語にする気あるからね、今作ってるからねって。
まだできてないだけで、今作ってるからねってことを発表するんですね。
まだできてないですね、きっとね。
で、実際出すんですけど、やっぱりJavaScriptの方が早かったんで、
JavaScript結局インターネットエクスプローラーで採用しませんっていう決断はできない。
すごい。
そう、JavaScriptを採用せざるを得なくなります。
で、ここで何が起こったかっていうと、まず今はネットスケープナビゲーターっていうブラウザーがありますね。
そのブラウザーの上でJavaScriptを実行することができる。
JavaScriptで例えば朝だったらおはようございますみたいなことを出すみたいなお指示を書くと、
ウェブブラウザーの中で1メールが更新されて動的なウェブサイトを作ることができるっていうのが実現したわけですね。
で、JavaScriptを読んでそれを解釈して実行するっていう小さなプログラムがネットスケープナビゲーターの上に乗っかってるわけです。
で、インターネットエクスプローラー、マイクロソフトが作ってるブラウザーもJavaScriptに対応しますっていうふうに発表しました。
これ何が起こるかっていうと、同じJavaScriptを読んで違うプログラムなんだけど、同じように動くものを作んなきゃいけない。
で、そのJavaScriptの言語で書かれたプログラムを読んでそれを実行するようなプログラム、プログラムを実行するためのプログラムをざっくりと処理系、言語処理系って言うんですけど、
その処理系、普通は一つの言語につき代表的なものは一つっていうのが基本なんですけど、JavaScriptはいきなり二つ出てきます。
ネットスケープが作ったオリジナルのやつと、マイクロソフトがちょっとしょうがねえなっつって追従して作ったインターネット、マイクロソフト版のJavaScript実行エンジンみたいなのが。
IAEの中にJavaScriptの処理系を実装しなきゃいけなくなっちゃいます。
で、これはですね、JavaScriptって呼びたくなかったんだろうけど、JScriptって呼ばれます。
ただ、JavaScriptってその当時まだ使用ないんです。
これがJavaScriptの書き方だっていうのは、あるようでないみたいな、ちゃんと決まってるわけじゃなくて、
かつ、ネットスケープナビゲーターはオープンソースじゃないので、インターネットエクスプローラー側からは対応するとは言ったけど、どうやってみたいな。
使用もないし、オープンソースじゃないから、とりあえず真似するしかないよなって言って、頑張ってJavaScriptをいろいろ実行してみて、
こういう仕様になってるっぽいな、ここがこうなってるっぽいなっていうのを実行してどんどん確かめて、
リバースエンジニアリングっていう仕組みを解析していって、で、JScriptを作ります。
これがJavaScriptの2つ目の処理系、言語処理系って言われるJavaScriptを動かすためのプログラム。
で、2つできると。
で、結局これって持続できないよね、その使用がないとちょっと困るよねっていうのは出てくるわけですね。
ウェブサイトを作る側からしたら、このネットスケープのために書いて、ネットスケープでは動くけど、IEでは動かないって言ったら困るわけですよ。
IE側の人も困るし、で、マイクロソフト、ネットスケープからしたらこれを放置しておくと、
マイクロソフトが、JavaScriptって仕様とかないってやばくないですか。
こんな言語を使うより皆さん、ビジュアルベーシックっていう風に言い出すんですよ。
まさに言い出しそうになってたんで、ちょっと待てと。
これから仕様書こうと思ったとこなんだよねみたいなと、1995年の10月、11月だったかな。
この年にいろいろありすぎなんですけど、言い出すんですね。
このJavaScriptっていうのの標準的な仕様を作る、標準化ですよね。
標準化ってのをし始めたのが、これも1995年の多分12月とかだったかな。
JavaScript発表した頃ですよね、でも。
そうですね、JavaScriptっていう名前になった。
この年、いろいろごちゃごちゃというか、いろいろありすぎて、前後関係があれなんですけど。
あれ、仕様を書く人に雇ったんじゃなかったのかなって思ったんですけど。
仕様書く人は多分、車内で雇って、車内用のまずは仕様みたいな感じだったんじゃないかな。
てか、それすらない状態で、どうぞどうぞ次のバージョン載せるかって感じだった。
行けどんどんだな。
やばいですよね。
でも、本当にそれがちょっと遅れてたら、もしかしたら全然。
全然違う世界だったかもしれない。
世界一の言語はビジュアルベーシックだったかもしれないっていうことですよね。
で、ネットスケープトさんは、このままだとマイクロソフトが侵略してくるから、標準化しようと。
で、これがJavaScriptの書き方だよっていう文法を作るってことですね。
で、標準化でもどうしようみたいな。
で、標準化のための機関っていうのがあるんですね。国際機関っていうのがあるんですね。
で、そこに頼もうかって話になるわけです。
で、標準化機構として、機関として、その当時、今でもですけど、一番よく知られてるのがISOですね。
紙とかも。
そう、紙のA4のサイズは世界共通ですけど、あれが誰が決めたかって、ISOが世界に広めて、これがA4のサイズ。
A4として認められるのはこのサイズ。誤差はこのぐらいみたいな。
とか、クレジットカードのサイズ。
とか、標識のマークはこれみたいなのを決めている機構がありますと。
で、IOSの方に最初話を持っていくんですけど、なんかちょっと2,3年ぐらいかかるかもしれないですねみたいな。
基本時間かかるんですね。
紙のサイズとかだったら全然、そのぐらいかかっても当然いいんですけど、
今話しているように、本当に1ヶ月単位で新しい機能を増えたりしていくので、ちょっとそれは無理だなみたいな。
で、ヨーロッパに似たような機構があると、ECMAって言うんですけど、これ学会の付属の機関だったりするのかな。
そこに持っていって、そこで仕様を決まったら、だんだん広まってくるだろうから、それを改めてISOに持っていこうということで、
このECMAっていうところに持ってきます。
ECMAに持っていくと、それぞれのジャンルの仕様に関して1個ずつ委員会が作られるみたいな。
そこで標準化に関わりたい企業は来てくださいって言って集めるわけです。
そこにネットスケープももちろん参加するし、どんどんこの潮流に乗っかりたいっていう会社がやってくるんですね。
来たのは、例えばAppleも来ました。
それからBlenderのもともといた会社、Silicon Graphicsも来ます。
マイクロソフトも来ます。
当時の強々な会社で、かつJavaScriptとかWebで発見を取りたいって会社が標準化に関わりたいってことで、どんどんやってくるのがECMAで起こったこと。
標準化って結構面白くて、MSとしては標準化してほしいのは当然なんですけど、
ただ、このJavaScriptっていうのが1個に固まっちゃって、これがJavaScript、これ以外は認めませんってなっちゃうと、
自分たちとしては、これからIEに新機能をたくさん付けたいと。
なので、拡張性がないと困るんですね。
だから、言語としては、この機能を持っていたらJavaScript、だけど勝手に付け加えてもいいみたいな方向に持っていきたいっていうモチベーションがあるんですよ。
ネットスケープ側もネットスケープ側でいろいろな思惑があると。
それぞれ、これを標準にしたい、これを標準にしたいっていう違う考えを持った人たちが集まってるので、当然そこで見解になるわけですね。
どれを標準として認めてもらうかっていうのを、ECMAの審査員みたいな人がいる。
一応中立。
中立的な審査員の人に審査してもらおうっていう会議なわけです。
ネットスケープとボーランドってまた別の会社が、自分たちの仕様を持ってきたんですね。
マイクロソフトも当然持ってきたと。
で、プレゼン大会をしようって感じになるわけです。
で、その3社の激突が始まるんですけど、1日目にプレゼンして、2日目に議論しようってなってたんですよ。
で、ただマイクロソフトの担当者はですね、結構小賢しくてですね、ちょっとこう嘘をつくんですね。
嘘をついたって実際に証言したらしくて。
そうなんですか。
論文にも書かれてるんですね、実際にそういう風に言ったらしい。
実はマイクロソフトはまだできてなかったんですよ、このことを聞いて。
持ってくってたの。
使用書が。
てか多分出方を伺ってから改良して、いいものを出したいって思ったんでしょうね。
で、ちょっとコピー機壊れちゃって、持ってこれなかったんですよね。
あるんだけど、あるんだけど持ってこれなかったんです。
えー、それはなんかこう。
小学生の言い訳みたいな。
パソコンを売ってる企業としてはだいぶ致命的な言い訳だけど大丈夫かな。
まあしょうがないなって。
ネットスケープとボーランドで先にやってもらって、2日目の最初にマイクロソフトを出しましょう。
わーずるいーずるいー。
ネットスケープとボーランドが先に発表して、M-MASTERはふむふむっつって。
で翌日、しかもエクマの会場から使用を作る人の家が近かったらしくて。
一回帰ってここでわーっつって徹夜で改良して、で持ってくるんですね。
で、するとそれが通っちゃうんですよ。
わーずるー。
ということで、マイクロソフトが提案したJScriptの仕様が素案として使われることになったと。
あとは理由としてもう1個分析してるのは、エクマの審査員は別に結構わずかな差だなと思ってたんだけど、
エクマの審査員はたまたまWordを使ってたんですね。
マイクロソフトオフィスのWordを使ってて、他の会社は別のアプリで作ってたんですよ。
で、Wordが一番便利だし、じゃあこれを叩き台にしましょうよって言って、
それになった点はあったんじゃないかって。
なるほどねー、それは。
まあ難しいですね。
こういう仕様をフェアに決めるっての結構大変なんだなっていうのもありますし、
そこで差を分けたのがそういう小賢しい説明だったり、
たまたまWordを使っていたみたいなことだったりするのは結構面白いなっていうのはあります。
なんかでもこういうのって、そもそもネットスケープとさんが一緒に作った言語なわけじゃないですか。
実質的にはほぼ一人で作った言語なわけじゃないですか。
なんかその権利が守られたりとか、使用を開発者が決めたりすることはできないんですかね。
でもやっぱJavaScriptの言語のすべてに言えることだけど難しいのは、
JavaScriptを書ける人は増やしたいんですよ。
だからJavaScriptに関する権利を主張して特許とかを取ると、
分かりました、じゃあVisual BasicはVisual Basicでやりますんでって言って、
開発者にアピールし始めるんですね。
こっちは無用だし特許とかもないよみたいな。
するとそっちが広まっちゃうから、ある種オープンでないと結局競争の舞台に立てないですよ。
だからそういう難しさありますね。
JavaScriptに一番詳しくて、JavaScriptの使用をこれから決めていく影響力を持っているけれども、
JavaScriptに対する権利は主張しないですよっていう立ち位置じゃないと、
結局派遣を握れない、主導権を握れないっていうのが結構難しいところではあります。
もちろん権利を持ちつつ成功している言語ってのもたくさんあります。
その後、非営利団体に変わるのかな。
会社的にどういうスキームで変わったのかは分からない。
なんかもう倒産して人が移ったのか、
それとも会社が非営利団体になったのかは分からないけど、
基本的にはFirefoxに引き継がれていくっていうことになります。
なるほど。
仕様はそういう風に決まっていくと。
この仕様決定っていうのは結構、
JavaScriptの中では面白いというか、
そういう経過をたどった言語っていうのはあまりないんですよね。
他の言語って、まず処理系が最初からたくさんあって、
かつ、みんなこれを広めていきたいっていう、
野心とお金もついてくるような議論が起こったりは基本しないんです。
車運かかってましたからね。
そうそう。
だから、それは割と特徴的で、
だからこそ急速に広まったっていうのはあるかもしれない。
なるほど。
で、このエクマの初版ができるのは結局2年ぐらい結局かかって、
1997年にできます。
1998年に第2版。
1999年に第3版っていうのが出る。
ってことで、結構順調に仕様が決まっていったように思えたんですけど、
で、Webってのも誕生から、
Webブラザーの誕生から5、6年経って、かなり広まっていくと。
で、JavaScriptのそれに従ってだんだん人気が出てくるんですけど、
そこでまた別の会社がやってくるんですね。
マクロメディア。
マクロメディアっていう名前を知ってる人は少ないと思うんですけど、
Flashは知ってる人が多い。
Flashは聞いたことあります。
Flashっていうのが出てくるんです。
Flashっていうのはまたウェブサイトの中に動的な要素を入れるっていう技術の新しい版みたいなやつ。
それ、言語とはまた別じゃん。
Flashはね、言語ではないかな。
Flashの上で動く言語を作りたかったのね、マクロメディアも。
で、ActionScriptってのを作ったんだけど、
ActionScriptっていうのは、もともとは全然JavaScriptと関係ない独自言語だったんだけど、
ちょっとだから、あんまActionScriptをわざわざ勉強してくれる人って少ねえなってなって、
そうだ、JavaScriptバクっちゃおう、なるんです。
なるほど。
で、ActionScriptっていうのは色々拡張の可能性があるようにマイクロソフトがしたって言いましたね。
だから、JavaScriptのような言語を今、エッグマーの仕様に基づいた、
エッグマーっていう標準化のところで作った仕様に基づいた、
エッグマースクリプトの拡張版としてActionScriptを作ろう。
つまり、JavaScriptとActionScriptに共通の祖先がいる、
エッグマースクリプトっていう仕様書に書かれている仕様を満たした言語。
で、どちらもJavaScriptもActionScriptも同じ仕様を満たせるんだけど、