1. 研エンの仲
  2. #46 波瀾万丈、プログラミング..
2021-06-27 1:15:51

#46 波瀾万丈、プログラミング言語「JavaScript」の20年史

世界で最も普及しているとも言われるプログラミング言語『JavaScript』の作者らが、言語の誕生から普及までの20年を振り返った論文『JavaScript: the first 20 years』を元に、JavaScriptの波瀾万丈の歴史を解説しました。

  • Allen Wirfs-Brock, Brendan Eich "JavaScript: the first 20 years": https://dl.acm.org/doi/10.1145/3386327
  • ブレンダン・アイク - JavaScript の生みの親。
  • シリコングラフィックス - コンピュータグラフィックスに特化した業務用コンピュータ (ワークステーション) の開発・販売で知られ、CG業界を牽引した。後にHP (ヒューレット・パッカード) により買収される。
  • サン・マイクロシステムズ - UNIXをベースとした独自OSを搭載したワークステーションの開発・販売で成功した後、特定のCPUプラットフォームに依存しない言語 Java の開発を1995年に発表。後に Oracle に買収される。
  • Borland - かつて存在した開発プロセス用ツールなどのソフトウェアの開発・販売会社。
  • ECMA インターナショナル - 情報通信システムの分野における国際的な標準化団体。以前は欧州電子計算機工業会という名称だった。


00:02
今回ですね、話すのは、JavaScriptというプログラミング言語の歴史についてです。
歴史について話すのは、初めてではないですか?
そうですね。
あ、でも、Podcastの歴史会が。
Podcastの歴史やってたって話したけど、
JavaScript、そもそも知らない方が多いと思うんですけど、
それの誕生秘話みたいのが、
結構、なんかテクニカルなところ、技術的なところ以外にも、
わりと物語として面白いポイントが、わりといっぱいあったりとか、
あとは、なんかサラリーマンあるあるみたいな、
偉い人の鶴の一声で、全部ひっくり返るみたいな、
結構ね、面白い歴史がいっぱいあったので、
それについて、ちょっと軽く紹介してみようかなと思います。
言語を作る人たちの苦悩と、
なんかどういうことを考えているのかっていう話が、ちょっとできたらなと思います。
いや、全然わかんないですね。
その、なんだろう、ちょっと書いたりしたことは、
JavaScriptは、でも書いたことあるかもしれないかもしれないですね。
Pythonとかの方が多い?
Pythonとかはありますけど、
まあ、言語ってそもそもどう作るのか全然わかんない。
確かに。言語のまず作者っていうのは、
なんかいる言語、いない言語もあるんですけど、
まあ、なんか基本いる言語は、わりと癖が強い人が多い。
癖が強い言語が多いってことですか?
いや、癖が強い人が、こう作った言語は生き残ることが多いのかな。
なるほど。
オピニオネイテッドというか、
こう、なんかね、主張がわりと強い人が多いんですよね。
まあ、なんか日本だと、Rubyっていう言語を作った松本博夫さんかなっていう人もいるし、
Pythonの作者の名前は忘れちゃったけど、
まあ、結構ね、みんなそれぞれ、
まあ、こういう書き方で、俺以外のプログラマーも全員こう、プログラム書くべきだっていう、
主張がないと、やっぱり言語作らないので。
なるほど。
ある程度ね、その文法を規定したい。
これが一番いいやり方だと思う。
で、他にある言語では自分のこだわりを満たせないっていう人が作るんですね、基本は。
っていうので、わりとなんか人癖多めの人が多いんですけど、
JavaScriptもわりと例に漏れずですね。
今回紹介する記事は、JavaScript The First 20 Yearsっていう記事を元にしてるんですけど、
ちょうさんのうちの一人が、その作者なんですね。
それはその人が、
もう語りたくて、
語りたくて仕方ない感じ。
まあ、ちょっとね、やや持ってるところもなくはないんじゃないかと思わなくもないですけど、
わりと強烈なエピソードがたくさんあるので、ちょっと楽しんでいただけるかなと。
なんか、20年、え、今20歳ってことですか?
そうですね、20何歳かな?
1995年に生まれたから、25年、6年ぐらい経ってるのかな。
多分、この記事が公開されたのが、2020年か。
03:05
だから、2015年までの歴史を語ってる。
なるほど。
で、その後5年経ってから書かれたっていう記事ですね。
なるほどですね。
それって、若い方なんですか? 言語。
それは良い質問で、
えっと、これが開発された時点では、
例えばC言語とか、パイソンとか、
えっと、パールとかあったけど、
まあ、例えばさっき話に出た、ルビーとかはないみたいな。
あと、Javaは同じ年に開発されたのかな、ぐらいの感じです。
あの、これはあれなんですけど、JavaとJavascriptは。
それはね、非常に良い質問で、まずショートアンサーは違います。
違うのは分かってます。
別物です。
で、その関係については、このお話の中で出てきますので。
分かりました。じゃあ、楽しみに待ってます。
ご安心ください。
はい。
はい、じゃあ始めていきましょうかね。
はい。
ね、割とね、古典ラジオをリスペクトというかね、
あの、今回ちょっと僕が語りながら、あやかさんにツッコミを入れてもらうっていう、
古典ラジオって割と歴史の有名なポッドキャスト番組があるので、
はい。
まあ、それと似た感じのスタイルで、はい、いこうかなと思います。
あれですよね、あの、
なんか、中国何千年の歴史、誰とか彼とかみたいな感じで始まるじゃないですか。
そうそう、タイトルコールがあるんですね。
タイトルコールを、その、歴史について詳しくない人がやる、
樋口さんっていう方がやるんですよ。
で、深井さんっていう、
今回、歴史マニアの人が、こう語ってくれるという。
横川深井さん役ということで。
はい。私、樋口さん役なので、ちょっとタイトルコールしたいんですけど、
あの、最初に何て言ったらいいですか、なんとかかんとか、ジャバスクリプトの歴史。
ジャバスクリプト、波乱の20年、ジャバスクリプトはどこから来て、どこへ行くのかって、お願いします。
長い。
長い、長い。
え、じゃあ、波乱の20年、ジャバスクリプトの歴史でいいですか。
いえいえいえ。
はい。
これやりたかったんで、すごい嬉しいです。
はい。タイトルコールしていただきました。
はい。
で、ジャバスクリプトとはっていうことなんですけど、
えっとですね、実は、ジャバスクリプトっていうプログラミング言語は、
スタックオーバーフローってサイトによると、プロのエンジニアの71%が使っている。
世界で最も普及しているプログラミング言語です。
で、GitHubってまた別のウェブサイトが統計をしてるんですけど、
そこでも一番よく使われているプログラミング言語のランキング第一位と。
私が前回、シーサイマップでデータベースの話をちょっとしたじゃないですか、
あれもジャバスクリプトで書かれてます。
ジャバスクリプト非常にいろんなところで使われていると。
で、一番わかりやすいのは、ウェブブラウザの中で動く言語がジャバスクリプトなんですね。
だからこそ、ウェブサイトをみんな使っていると。
なので、それを書く人も多いし、読める人も多いし、
逆にジャバスクリプトがないとウェブサイト動かないですから、
06:01
だからある意味、誰でもジャバスクリプトに触れたことあるというか、
ジャバスクリプトできたものをみんな日々触っている、
意識せずに触っているという意味では、
使うという意味でも結構普及しているプログラミング言語なんじゃないかなと思います。
すごい素人質問なんですけど、
最初、ホームページ自作とかっていうと、
HTMLみたいなイメージあるじゃないですか、
ウェブの中で動くみたいな感じで、
ジャバスクリプトのこと説明されてたんですけど、
そっち、ジャバスクリプトの方が早いとかそういうことがある?
HTMLの方が先です。先ですし、
HTMLとのジャバスクリプトの関係は、
かなり最初は少なくとも切っても切り離せなくて、
HTMLって基本的には書いたら、
そのページは静的っていうかスタティックなんですね。
つまり内容を後から変えたりとかってできない。
例えば、今日の日付は何月何日ですって出したいとか、
おみくじみたいにあなたは大吉ですとか、
もっと言うとログインみたいなのもあるし、
その後に計算みたいなことを、
ウェブラウザの中でしたいみたいになると、
HTMLだけでは不可能で、
それを書き換えるためのプログラミング言語が必要なんですね。
なるほど。静的動的っていう違いがあるんですね。
私、スピードの速い遅いの話をさっきしてたんですけど、
出てきた時期じゃなくて。
そういうことか。
HTMLは基本的には動的なものはそれだけでは書けません。
基本的には。
なのでそれを書き換えるためには、
デバスクリプトが基本必要だという関係にあります。
というような感じなので、
すごく短いですし、書き始めるハードルもすごく低いっていうのが特徴。
なぜなら特別な、ある言語を動かすためのソフトとかを入れる必要はなくて、
ウェブラウザでもみんな使ったことあるじゃないですか。
その上で直接動かせるので、
とても簡単に書き始めることができます。
これがどういうふうに生まれたか。
さっきHTMLとの関係が深いって言ったんですけど、
実際その歴史の中にもかなりウェブラウザ、それからHTML登場します。
ではちょっと時を1995年に戻します。
ギリギリ生まれてますね。
今からだと26年前かな。
舞台はシリコンバレー。
ちなみに1995年っていう年は非常に重要で、
今回話す内容はほぼこの1年に起こったと言っても過言ではない。
インターネットが生まれ…。
それはもっと前か。
インターネットはもうちょっと前に生まれていて、
生まれていてというか普及し始めてはいて、
ただ家庭用に普及し始めたのが1994年、5年くらいです。
09:03
インターネットってすごいんじゃねっていう噂が立ち始め、
今でいうアーリーアダプターみたいな人たちが使い始めたっていう頃です。
その時ですね、ウェブブラウザっていうのはそんなに種類がなかったんですね。
ウェブブラウザがそもそも一番最初に普及したウェブブラウザっていうのがモザイクっていう、
これは無料のウェブブラウザだったんですね。
学術系の団体、非営利の団体が実験的に作って、
これ面白いぞってことになって、
ウェブサイトっていう画像も文字も出せるし、
誰でも簡単に書けるページみたいのを自分でホストすることができる、
自分で持つことができる、
それを見ることができるブラウザっていうのがあるらしいっていうのが広まって、
で、だんだんそれを使い始める人が増えてきたんですね。
で、ウェブっていうのはどうやらお金になるかもしれないっていうことで、
ウェブブラウザってのをもっと高機能のものを開発しようと、
早くていろんな機能に対応しててってものを開発しようっていう風な野心を持った企業が出てきたと。
それがネットスケープ。
今、ウェブブラウザっていうと主にChromeとか、
そうですね。
ファイアフォックスとかっていう。
あとはマイクロソフトEdgeかな。
それが今Windowsで動くインターネットエクスプローラーっていうやつを置き換えて、
マイクロソフト新しく出したEdge、そうですね。
だからAppleが出しているSafariっていうのがあって、
その4つかな、一番今メジャーなのは、
Chrome、ファイアフォックス、Safari、それからEdge、マイクロソフトのEdgeっていう4つがあって、
もっと昔はね、
そうですね、はい。
なんかちょっと5年10年ぐらいまではもっと種類がいろいろあってたんですけど、
ちょっと今収束してつつあるっていう感じはします。
ただこの頃はもうほとんど種類がなくて、
モザイクっていうもうめっちゃ機能が少ないけど、
まあ無料だからみんな使ってるみたいなやつと、
ネットスケープっていう会社が作ったネットスケープナビゲーターかな、
っていうブラウザーがやっと2つ出てきて、
しかもネットスケープナビゲーターの方がすごく機能が多いということで、
有料なんだけど、だんだん使う人が増えて入り始めたってことですね。
なのでネットスケープって会社は結構この時、
新進期へのいけいけ企業です。
なるほど。
他に、例えばマイクロソフトとかこの頃あって、
他にはそれこそJavaを今作っているとか、
もう今存在しない会社なんだけど、
Sunとか、あとAppleもあったかな。
12:02
そういう大きな企業に比べると、まだまだ小さいんだけど、
でもちょっと尖ってる人が集まってる。
だってソフトウェアだけ作ってたってことですよね。
そうだね。
だからマイクロソフトはWindowsを作ってたし、
AppleはMacを作ってたんだけど、
ネットスケープっていうのは割とそういう意味では小さくて、
これからっていう会社だったんですね。
これは1994年にネットスケープナビゲーターっていうブラウザが発表されて、
すごく人気が高まりました。
この頃ってブラウザっていうものに色々載せたがってたんですね。
例えばメールが送れるようになったっていう新機能が搭載されたりとか、
このブラウザだけでニュースが読めるようになった。
ニュースウェブサイトっていうんじゃなくて、
その中でニュースが機能として読めるようになったよみたいな、
っていう新機能があったりとか、
今のウェブブラウザに求めるものとはちょっと違った役割が。
だけど結構機能が多いってことで、
人気がだんだん高まっていきます。
そこでマイクロソフトがやってくるんですね。
マイクロソフトっていうのは、
そこまではインターネットとかウェブとかっていうのが、
そこまで強くなかったんですね。
なのでネットスケープっていういいブラウザが、
しかもWindowsで動くんですよ。
マイクロソフトが作ってるOSの上で動くってことで、
デフォルトにしてくださいみたいな感じで、
最初からデフォルトになってたんですか?
いや、搭載とか同梱とかされてなかった。
マイクロソフトはまず買収のアプローチをするんです。
買収してそれにいいよって言ってくれたら、
もうマイクロソフトのWindowsっていうOSの次のバージョンに組み込みたい、
っていう基本的にはそういうオファーですね。
ネットスケープに対してマイクロソフトが買収した。
で、それをネットスケープは結構ゴリゴリ尖ってる会社なので、
何を言ってるんだと断るんですね。
そんな歌詞を評価してもらったら困るって言って断るんですね。
で、すると何をしたかって言うと、
マイクロソフトはわかりましたって言って、
じゃあうちらで作りますんでって言って、
Windows95っていうのが95年に出るんですけど、
それと同時にインターネットエクスプローラーっていうウェブブラウザーを、
わし作るんでって言って発表するんですね。
当初は有料マイクロソフトプラスだったかな、
っていう有料パッケージの中に含まれてるって感じだったんだけど、
後で無料化します。
なので結構ネットスケープから見るとすごく脅威なわけです。
そうですよね。
そのOSの作ってるマイクロソフトが基本同梱したら、
勝てるわけないじゃないですか。
みんなそれ持ってるから、
なのに有料で買うモチベーションもそんな無くなっちゃいますよね。
っていうことで、かなり厳しい競争にこれから晒されようとするっていう時期に生まれたのがJavaScriptでした。
何が起こったかって言うと、
15:00
IE、インターネットエクスプローラーっていう明らかに競合となるプロダクトがこれから開発されるとしていると。
差別化しなきゃいけない。
さっきみたいなメール機能、ニュース機能とかも出したんですけど、
それだけだと足りないだろうってことで、
今までJavaScript以前ってさっき言ったように性的なウェブサイトしか作れなかったんですね。
何かユーザーのクリックに対して反応するだとか、
画像が時間によって切り替わるだとかっていうものは、
あとはボタンをクリックするとメニューが展開されたり。
っていうのは基本的にはできなかったですね。
で、それをウェブサイト動的に書き換えるようなことができたら楽しいんじゃないか。
で、それを使ってみんなウェブサイトを作ってくれるようになったら、
それを搭載しているネットスケープナビゲーターっていうのが差別化できるんじゃないか、有利に立てるんじゃないかってことで開発をしようっていう風になりました。
それは言語、そういう言語、動的な言語を開発。
それまでウェブラウザで動く動的な言語はなかったんですか。
なかったですね。
なるほど。
で、開発しようってなったわけでは実はなくて、
まず一番最初何を言ってたかっていうと、
もう既にある言語を動かせるようにしようと。
例えばCとか、例えばPythonとか、スキームパールとか他に流行ってた言語だったんですけど、
基本的にはそういう既にあるものを使って、それを動くようにしようっていうのが元々のプランだったらしいです。
ただ、これがネットスケープの考えてたことね。
それとは別の音枠を持った、この記事の作者というか筆者でもあるブレンダン・アイクっていう人にちょっとフォーカスを移します。
ブレンダン・アイクさん、どうぞ。
その人はネットスケープの社員なんですか?
これから入社します。
今、1995年7月なんですけど、ブレンダン・アイクさんは、もうね、この人も結構とがってるチャリアーの持ち主で、
もうね、イケイケのプログラマー、油にのった、たぶん30歳ぐらいだったのかな。
で、シリコングラフィックスっていうCGの会社にいて、
そこではちょっとやりたい仕事はできないってことで、
ブレンダン・アイクさんはすごく大好きな言語があって、スキームっていうんですよ。
スキームっていうのは説明は難しいんですけど、車で言うとフェラーリみたいな、スポーツカーみたいな感じの、
もう誰でも使いこなせるわけではないが、使いこなせるやつが使うとめちゃめちゃ速いし、
ものすごく複雑なことができるような言語です。
で、ただスキームってわかる人はいないので、
18:01
シリコングラフィックスでは、やはりブレンダンさんの才能を生かすことはできなかったわけですよ。
で、そうするうちに、ネットスケープでスキームっていう言語が使える人を探してるらしいっていう噂が立つんですね。
で、じゃあ一旗あげてやろうじゃんかって言って、ブレンダンさんはネットスケープに入社します。
なるほど。
最初はスキームの仕事はできるって言ったから来たわけね。
これが4月の話です。覚えてください、4月。
で、そこで入社しますね。
で、パソコンとかのセットアップが終わって、で、スキームの仕事って何なんですかって聞いたら、
いやいや、ちょっと来てくれよと。で、会議室に呼ばれます。
で、ネットスケープってブラウザに、ウェブサイトを動的にする言語を入れたいんだと。
で、スキームは実はその候補の一つなんだと。
で、ブレンダンは当然スキーム世界一かっこいい言語だから絶対これ使ったほうがいいって言うんですよね。
っていうところまでが、まずブレンダンとネットスケープの出会い。
もうだからスキームじゃなかったとしても、俺がかっこいいと思う言語を使ってやろうじゃないかって思ってるわけですね。
で、そういう個人のプログラムがいるんですけど、
同時にネットスケープって結構イケてる会社なので、いろんなオファーが来るんですね。
俺と一緒にやろうぜみたいな。マイクロソフトもやっぱ買収してきたぐらいだし。
で、そのうちのコンタクトしてきた会社のうちの一つが、サンマイクロシステムズっていう、
これはJavaをこれから作ることになる。実はまだできてないんですけど、
これから作ることになる会社があるんですね。
で、サンマイクロシステムズは今どういう状況かっていうと、
当時なんかちょっとよくわかんないんですけど、Javaっていうのをまだ発表しただけで出してないんですよ。
なるほど。
でも基本ものすごいでかくて強い会社なので、Javaっていうのはものすごくかっこよくて、ものすごく高性能らしいって噂だけが広まってるっていう状況。
みんなJava知ってるって気になるみたいな感じ。
それは新しい言語で。
新しい言語として発表したんです。
これからJavaで一旗あげて、もう世界を接近してやろうぜっていうサンって会社がやってきて、
で、ちょっと提携しようぜと。
ウェブブラウザー、ウェブの未来は明るいと思うので、Javaをもう一旗かみたいってことで、
じゃあJavaを乗せようぜっていうことを言い出すんですよ。
なるほど。それはサン側が言い出す。
サン側が言い出す。
で、ネットスケープはIEとかに攻められてるから、仲間が欲しいんで、いいよいいよって言っちゃうんですよね。
なるほど。
スキームが使いたいのに、Javaやろうぜっていうのに、OKってCEO同士が言っちゃうんです。
はいはいはいはい。
で、ブレンダン的には何言ってるんだと。
で、なんかいろいろ俺もうすでに検討したんだけどって言ったんだけど、
もうJavaをブラウザーに乗せてくれっていう人が乗り込んできたんで、
21:03
しかもなんかネットスケープとJavaがつまりウェブブラウザーのシェア1位、
それからプログラミング言語のまだ発表されてないけど、今一番いけてる言語がくっついたらWindowsをぶち殺せるみたいな。
なるほど。
すごいこと言うんですよね。
サンっていうのは結構強い企業だったんですか。
当時、はい。
何やってる企業なんですか、Javaは。
サンはね、多分メインフレーム、今ってパーソナルコンピューターっていうか、それぞれ持ってるじゃないですか。
でもなんかサーバーというか、例えば大学の計算センターみたいなとこに1台あって、
それをみんなで使うっていう世界観も昔はあったんですね。
というか今ももちろんあるんだけど、パーソナルコンピューター、みんながそれぞれ端末を持つっていうのは一般的になっちゃった。
で、メインフレームとかで強かったのがサンっていう会社です。
イメージとしてはサーバーとか作ってて、そのシェアがすごく高いと。
なるほどな。
で、Windowsはパーソナル方面で売り出して、今強いんだけど、もともと強かったのはサンとか、
なるほど。
IBMとかそれこその会社です。
なるほどね。
っていう立ち位置の会社。
面白い、面白い。
だからネットスケープはそこと組んで、マイクロソフトと戦いたいと。
Windowsがなんか調子に乗ってるから、しかもなんか安い価格で買収を持ちかけたりして、
ちょっと舐めてるぞみたいな。
ここで一挙ぶちかましたろかって言って。
なるほど。
で、JavaScriptっていうのをぶち上げる。
すいません、JavaScriptをぶち上げるの、もうちょっと後の話ですね。
で、Javaを載せるって発表したんです。
もう発表しちゃったんだ。
そう、発表したんです。
それブレンダーマイクは。
ヤバいんですよ。
ブレンダーマイクは。
何言ってるんだこいつは。
発表で知っちゃうみたいな、そういうやつ。
そう、ただJavaっていうのはまず、そもそも思い出していただきたいんですけど、まだできてないんですよ。
どれくらいから進んでたんですか、その時。
アルファ版はもう公開される途中だったんだけど、
ブラウザに載せるっていうのがそもそもかなり難しいと。
コンパイラーっていう言語をプログラムにするような、プログラムを載せる必要があるみたいな。
Javaは基本的にやっぱりデカすぎて、それはそのままブラウザに載せるって無理だったんですね。
なので、Javaっぽい言語を作ってくんない?みたいな。
サンのビルジョイっていうすごくエンジニアから無茶ぶりされるんですね。
ブレンダーが。
マーク・アンドリセンっていうネットスケープの社長に無茶ぶりというか、アイデアを出すんですね。
で、マーク・アンドリセンは、いいよって。
そういえば、最近7月に入社した結構生きのいい新人がいるんで、そいつに聞いてみますわって言って、出てこさせるのがブレンダイン。
かわいそうだよ、なんか。
24:00
ブレンダインは金融の仕事って言ったのに何言ってんだみたいな感じだったんじゃないかなと思います。
でも、Javaを実装するっていうのは無理だから、確かにそういうちっちゃい言語を作る必要があるのかもしれない。
でも、できるかわかんないし、10日くれみたいな。
10日でできるところまでやってみるわって言うんですね。
で、10日でJavaのアッシュとしてMokaっていうのを作る。
かわいいですね。
で、Mokaっていうのはコーヒーの原産地のJawa地方。
Jawaが英語読みでJavaっていう語源があるんですね。
コーヒー関連のロゴの形もコーヒーカップとかもするし。
なので、そのちっちゃい版をMokaって名前にしようって言って、プロトタイプを作り始めるんですね。
で、ブレンダーエッグのまず聞いてた要望としては、ちょっと見た目Javaっぽくしてくれたらいいみたいな。
Javaっぽい要素を残してほしいっていう要求が。
それは聞いてたんですよ。
で、他には例えば、こういう仕様とか、ああいう仕様とかあるのって言ったら、
いや、Javaっぽかったら、結構何でもいいかもしれないって感じだったらしいんですよね。
で、なので、わかったって言って、じゃあちょっとスキームを使うのは諦めたけど、
ちょっと俺の好きな要素とか、いろいろ入れちゃえるんじゃないかなっていうのがあったわけです。
ブレンダー偉い。
ブレンダーはね、非常に結構ね、尖ってるやつだけど、そういう柔軟性もあると。
偉いですね。
だから、はいはいって言って、わかったよ、Javaっぽいの作るよって言いながら、逆に中身はスキームっぽいやつにしちゃおう。
そういうのもあったんですよね。スキームっぽい要素を入れていこうっていう。
はい、なので、例えば特徴としては、動的静的っていう、ちょっとさっきHTMLの話もあったんですけど、
今度は言語のその仕様として、動的静的っていうのがあって、
で、それもJavaは静的だけど、実はJavaScriptは動的にしよう。
動的片付けみたいなのにしようみたいなことを、いろいろ別の言語の要素をどんどん取り入れていきます。
なので、Javaっぽいものを作ってるよとは言うんですけど、結構中身は違ったりする。
で、例えばコンストラクターでオブジェクトを作るとか、オブジェクトはプロパティを持つっていう、これはJavaの特徴の話なんですけど、
っていうのは一緒なんです。
ただ、その後に作った後でもいろいろ中身を入れ替えられたりとか、型っていうのの制限がなかったりっていう、
そういうJavaと違う要素もたくさん入れて、で、作ったのがJavaScriptの原型、Mochaです。
型の制限がないっていうのは?
これは、例えば、お金、お財布みたいなものを作るとして、JavaScriptで。
27:00
で、お金のどのくらい持ってるかっていう変数を作りますね、残高みたいな。
残高っていう変数に100って入れたら100円ってこと。
で、そこに500っていうのを代入したら500円になるみたいな。
で、普通はその残高っていう変数は数字しか入らないみたいな。
それが型ってことです。
数字の型を持ってる変数を作ります。
で、そこに500を入れますっていうのがよくある言語。
だけど、JavaScriptはそれに何でも入れることができる。
残高っていう変数に文字列を入れることもできるし、
全く別のオブジェクトを入れることもできる。
型変換しなくても、異なる型を入れられるみたいな。
ただ、数字であることを前提に書かれているプログラムに文字列を入れちゃうと壊れちゃうんですけど、
逆に言うと、すごく自由度が高くて、あまり制約がないっていうのが動的な片付けの特徴。
ざっくり言うとそうですね。
なるほど。
っていう感じです。
そのスキーマっぽさは残ってるんですか?
スキーマっぽさは、そうだな。
あとは関数がオブジェクトとして扱われるっていうのは結構当時としては面白い仕様でした。
関数っていうのはYイコールXみたいな?
というよりはファンクションの方の関数です。
プログラミング言語の中で、パイソンだったらDEFなんとかって言って、手続きをひとつのまとまりにまとめるのが関数ですね。
数学の関数と同じように入力があって、出力があってっていうのはあるんですけど、それが関数です。
で、関数っていうのは言語によってはオブジェクトとして扱えません。
オブジェクトとして扱えませんっていうか、代入したりする対象ではない。
買ったりもする。
けど、JavaScriptでは関数は例えば数字、例えば文字とかと同じように扱えます。
変数に100とかって入れてたところに関数を作ることもできる。
その関数を他の関数に渡したりとかもできる。
この関数を2回実行してっていう関数を作るってこともできるみたいなイメージです。
そういうことはやったことあります。
それがJavaScriptのスキームから取られた一つの特徴っていう感じかな。
なるほど。
10日間でボロボロになりながらプロットタイプを完成させるわけですね、このブレンダーが。
Mochaですね。
で、いいじゃんってことで、もともとはJavaScriptって名前ではなく、LiveScriptって名前で9月に発表されます。
4月入社でもう9月には。
ちなみに10日で作ったのは5月の話。
30:01
すごい。
それまではスキームが使えるよって入社したけど、ちょっとないかもしれないですみたいな仕事みたいになって。
どういうこと?ってなって、ちょっと暇してたブレンダーが呼ばれたのがこのプロジェクトなんで。
入社一発目でちょっと言語を作るか。
すごいですね。
で、発表されたのはLiveScript。
これは当初はNetscape Navigatorってさっき言ったWebブラウザの機能の一つとして発表されます。
その年の12月にさんとNetscapeは合同でJavaScriptって名前にしますということを後で発表することになります。
さすがにこの辺りになってくるといろんな人が手伝ってくれてるんですね、ブレンダーのこと。
それはですね、フルタイムのエンジニアは結局たぶん9月の時点ではまだ一人だった。
そうなんだ。結構大変ですね。
なんかMOCAっていうのを頑張って作って、でもなんか後で書き直す前提だったんですね、プロトタイプだから。
でも社長とかはそれ見て、いいやんって、お前やるなって言って、じゃあこれ発表するからって言って、ちょっとちょっとちょっとってなるわけですよ、ブレンダーは。
すごいベンチャーっぽいな、その流れ。
ブレンダーは後からよくしていくつもりで書いた一発書きのやつだから、もうちょっと直したいとかいっぱいあるんだけどなって言うんだけど、もう聞いてないんで、社長は。
もう発表するからって言って。
で、ちょっと他の人にもこのJavaScriptってお前が書いたかっこいい言語で、プログラム書いてもらわなきゃいけないから、使用書とかいるんだよねみたいな。
使用書書いてくんないって言うんですね。
ブレンダーは何を言ってるんだと、なんかもうそもそもお前が発表するっていうのも早すぎだし、なんかどんどんこれから改善していくためにまずは書き直させてくれみたいなこと主張するんですけど、
いや、ちょっとまず使用書みたいな、聞いてるようで聞いてないベンチャー企業の社長の特有の感じですよね。
特有の感じだね。
でね、ブレンダーはね、もうきりきりあるんですよ。もうね、だから会社行かなくなるんですよね。
すごいですね、それもね。使用書とか俺は書かないからって言って、なんか家から仕事するわって2週間勝手に仕事、会社を休んで書き直すんですよ。
いや、えらいですよ。
そこで書き直すんだよ。
そこで書き直すっていう。で、そのうち、あ、じゃあしょうがねえなって言って、なんか使用書とかを書いてくれる専門のテクニカルライターを宿って、その人に書かせることになると。
なんかいろいろ多い多い。
いろいろ多い。
結構なんかあるあるが詰まってる感じが。
でも、すごいイケイケベンチャー感がすごいする。
イケイケ感がある。
ブレンダーもイケてる感じだし、ネットスケープもなかなかのこう、具合ですね。
プレスリリース先行型みたいな。
そうそうそうそう。
やっぱなんか当時って、もう先行者の有利を取りたい、みんな取りたい。
で、デファクトスタンダードになりたいっていうのが、みんな思ってることなんで。
33:02
まあ、そうですね。
まあ、結局サムも、Javaできてないのに、Javaいいよって。
いいよって。
要すって、こう、マーケティングを先に。
ね、なんかハッタリばっかの業界みたいな話だったんじゃないですかね。
でも、1年でこんな変化が起こる年っていうのは、基本そんなに、たぶん現代ではないっていうか、なんかね、こういう感じではない、その変化の速さで。
なんかその、1995年当時の大恥な、みんな、やるぜやるぜって言って、まだできてないみたいなとかは、独特の熱い空気があるなと思ってしまいますね。
うん、うん、確かに。あの、なんだっけ、シリコンバレーのスタートアップっていう、ネットフリーのドラマかなんかありますよね。
あれがそんな感じですよね。
確かに、確かに。
口で言って、後から技術を追いつかせるみたいな感じって結構あるから。
それはね、結構多かったみたいですね。
うん、うん、面白い。
まあ、Javaスクリプトはまさにその産物って感じ。
うん、ほんと。
だからその、グランドデザインがあってできた言語じゃないんですよ。
その、10日間でとりあえず仕様を見出して、かつ自分の趣味もできる限り盛り込んだプロトタイプが、そのまま基本は言語の元になっちゃったって感じ。
それが今、世界中で一番使われてるっていうのはすごいですね。
すごいことですよね。
でですね、ただ、ここでですね、こう、みなさんもう忘れかけてると思うんですけど、マイクロソフトって会社いるんです。
はい、はい。
で、サンとネットスキップは組むって言ってるんですけど、それはやっぱマイクロソフトに対抗しなきゃいけないからなんですね。
で、そのくらい脅威に思うほどマイクロソフトっていうのは結構強いし、かつ独自路線で、俺が作った仕様を使ってほしいみたいな、そういう人がいた会社なんですね。
で、その当時、Visual Basicっていう、Windows上で動くアプリを作る言語を持ってたんですね。
で、マイクロソフトは何を考えるかっていうと、これからウェブの時代だ。
で、Visual Basicはめっちゃ書ける人いると。
だから、Visual Basicこそがウェブ上の標準言語にふさわしいんじゃないかってことを言い出す。
言いそうだな。
で、ただ、それは思ってたんだろうけど、ネットフリックスに先行されちゃうんですよ。
ネットフリックス?
ネットスキップ。
ネットスキップにJavaScriptの発表先行されちゃうんですよ。
じゃあ、急いでよかったんですね。
そう、よかったんですよ。
そういう意味では、CEOがやったことは正しかったんですね。
そう。で、もう結構焦ってたんだろうね。
JavaScript発表された同じ週に、Visual Basicをウェブ上の標準言語にする気あるからね、今作ってるからねって。
まだできてないだけで、今作ってるからねってことを発表するんですね。
まだできてないですね、きっとね。
で、実際出すんですけど、やっぱりJavaScriptの方が早かったんで、
JavaScript結局インターネットエクスプローラーで採用しませんっていう決断はできない。
36:00
すごい。
そう、JavaScriptを採用せざるを得なくなります。
で、ここで何が起こったかっていうと、まず今はネットスケープナビゲーターっていうブラウザーがありますね。
そのブラウザーの上でJavaScriptを実行することができる。
JavaScriptで例えば朝だったらおはようございますみたいなことを出すみたいなお指示を書くと、
ウェブブラウザーの中で1メールが更新されて動的なウェブサイトを作ることができるっていうのが実現したわけですね。
で、JavaScriptを読んでそれを解釈して実行するっていう小さなプログラムがネットスケープナビゲーターの上に乗っかってるわけです。
で、インターネットエクスプローラー、マイクロソフトが作ってるブラウザーもJavaScriptに対応しますっていうふうに発表しました。
これ何が起こるかっていうと、同じJavaScriptを読んで違うプログラムなんだけど、同じように動くものを作んなきゃいけない。
で、そのJavaScriptの言語で書かれたプログラムを読んでそれを実行するようなプログラム、プログラムを実行するためのプログラムをざっくりと処理系、言語処理系って言うんですけど、
その処理系、普通は一つの言語につき代表的なものは一つっていうのが基本なんですけど、JavaScriptはいきなり二つ出てきます。
ネットスケープが作ったオリジナルのやつと、マイクロソフトがちょっとしょうがねえなっつって追従して作ったインターネット、マイクロソフト版のJavaScript実行エンジンみたいなのが。
IAEの中にJavaScriptの処理系を実装しなきゃいけなくなっちゃいます。
で、これはですね、JavaScriptって呼びたくなかったんだろうけど、JScriptって呼ばれます。
ただ、JavaScriptってその当時まだ使用ないんです。
これがJavaScriptの書き方だっていうのは、あるようでないみたいな、ちゃんと決まってるわけじゃなくて、
かつ、ネットスケープナビゲーターはオープンソースじゃないので、インターネットエクスプローラー側からは対応するとは言ったけど、どうやってみたいな。
使用もないし、オープンソースじゃないから、とりあえず真似するしかないよなって言って、頑張ってJavaScriptをいろいろ実行してみて、
こういう仕様になってるっぽいな、ここがこうなってるっぽいなっていうのを実行してどんどん確かめて、
リバースエンジニアリングっていう仕組みを解析していって、で、JScriptを作ります。
これがJavaScriptの2つ目の処理系、言語処理系って言われるJavaScriptを動かすためのプログラム。
で、2つできると。
で、結局これって持続できないよね、その使用がないとちょっと困るよねっていうのは出てくるわけですね。
ウェブサイトを作る側からしたら、このネットスケープのために書いて、ネットスケープでは動くけど、IEでは動かないって言ったら困るわけですよ。
39:06
IE側の人も困るし、で、マイクロソフト、ネットスケープからしたらこれを放置しておくと、
マイクロソフトが、JavaScriptって仕様とかないってやばくないですか。
こんな言語を使うより皆さん、ビジュアルベーシックっていう風に言い出すんですよ。
まさに言い出しそうになってたんで、ちょっと待てと。
これから仕様書こうと思ったとこなんだよねみたいなと、1995年の10月、11月だったかな。
この年にいろいろありすぎなんですけど、言い出すんですね。
このJavaScriptっていうのの標準的な仕様を作る、標準化ですよね。
標準化ってのをし始めたのが、これも1995年の多分12月とかだったかな。
JavaScript発表した頃ですよね、でも。
そうですね、JavaScriptっていう名前になった。
この年、いろいろごちゃごちゃというか、いろいろありすぎて、前後関係があれなんですけど。
あれ、仕様を書く人に雇ったんじゃなかったのかなって思ったんですけど。
仕様書く人は多分、車内で雇って、車内用のまずは仕様みたいな感じだったんじゃないかな。
てか、それすらない状態で、どうぞどうぞ次のバージョン載せるかって感じだった。
行けどんどんだな。
やばいですよね。
でも、本当にそれがちょっと遅れてたら、もしかしたら全然。
全然違う世界だったかもしれない。
世界一の言語はビジュアルベーシックだったかもしれないっていうことですよね。
で、ネットスケープトさんは、このままだとマイクロソフトが侵略してくるから、標準化しようと。
で、これがJavaScriptの書き方だよっていう文法を作るってことですね。
で、標準化でもどうしようみたいな。
で、標準化のための機関っていうのがあるんですね。国際機関っていうのがあるんですね。
で、そこに頼もうかって話になるわけです。
で、標準化機構として、機関として、その当時、今でもですけど、一番よく知られてるのがISOですね。
紙とかも。
そう、紙のA4のサイズは世界共通ですけど、あれが誰が決めたかって、ISOが世界に広めて、これがA4のサイズ。
A4として認められるのはこのサイズ。誤差はこのぐらいみたいな。
とか、クレジットカードのサイズ。
とか、標識のマークはこれみたいなのを決めている機構がありますと。
で、IOSの方に最初話を持っていくんですけど、なんかちょっと2,3年ぐらいかかるかもしれないですねみたいな。
基本時間かかるんですね。
紙のサイズとかだったら全然、そのぐらいかかっても当然いいんですけど、
今話しているように、本当に1ヶ月単位で新しい機能を増えたりしていくので、ちょっとそれは無理だなみたいな。
で、ヨーロッパに似たような機構があると、ECMAって言うんですけど、これ学会の付属の機関だったりするのかな。
42:03
そこに持っていって、そこで仕様を決まったら、だんだん広まってくるだろうから、それを改めてISOに持っていこうということで、
このECMAっていうところに持ってきます。
ECMAに持っていくと、それぞれのジャンルの仕様に関して1個ずつ委員会が作られるみたいな。
そこで標準化に関わりたい企業は来てくださいって言って集めるわけです。
そこにネットスケープももちろん参加するし、どんどんこの潮流に乗っかりたいっていう会社がやってくるんですね。
来たのは、例えばAppleも来ました。
それからBlenderのもともといた会社、Silicon Graphicsも来ます。
マイクロソフトも来ます。
当時の強々な会社で、かつJavaScriptとかWebで発見を取りたいって会社が標準化に関わりたいってことで、どんどんやってくるのがECMAで起こったこと。
標準化って結構面白くて、MSとしては標準化してほしいのは当然なんですけど、
ただ、このJavaScriptっていうのが1個に固まっちゃって、これがJavaScript、これ以外は認めませんってなっちゃうと、
自分たちとしては、これからIEに新機能をたくさん付けたいと。
なので、拡張性がないと困るんですね。
だから、言語としては、この機能を持っていたらJavaScript、だけど勝手に付け加えてもいいみたいな方向に持っていきたいっていうモチベーションがあるんですよ。
ネットスケープ側もネットスケープ側でいろいろな思惑があると。
それぞれ、これを標準にしたい、これを標準にしたいっていう違う考えを持った人たちが集まってるので、当然そこで見解になるわけですね。
どれを標準として認めてもらうかっていうのを、ECMAの審査員みたいな人がいる。
一応中立。
中立的な審査員の人に審査してもらおうっていう会議なわけです。
ネットスケープとボーランドってまた別の会社が、自分たちの仕様を持ってきたんですね。
マイクロソフトも当然持ってきたと。
で、プレゼン大会をしようって感じになるわけです。
で、その3社の激突が始まるんですけど、1日目にプレゼンして、2日目に議論しようってなってたんですよ。
で、ただマイクロソフトの担当者はですね、結構小賢しくてですね、ちょっとこう嘘をつくんですね。
嘘をついたって実際に証言したらしくて。
そうなんですか。
論文にも書かれてるんですね、実際にそういう風に言ったらしい。
実はマイクロソフトはまだできてなかったんですよ、このことを聞いて。
持ってくってたの。
使用書が。
てか多分出方を伺ってから改良して、いいものを出したいって思ったんでしょうね。
で、ちょっとコピー機壊れちゃって、持ってこれなかったんですよね。
45:00
あるんだけど、あるんだけど持ってこれなかったんです。
えー、それはなんかこう。
小学生の言い訳みたいな。
パソコンを売ってる企業としてはだいぶ致命的な言い訳だけど大丈夫かな。
まあしょうがないなって。
ネットスケープとボーランドで先にやってもらって、2日目の最初にマイクロソフトを出しましょう。
わーずるいーずるいー。
ネットスケープとボーランドが先に発表して、M-MASTERはふむふむっつって。
で翌日、しかもエクマの会場から使用を作る人の家が近かったらしくて。
一回帰ってここでわーっつって徹夜で改良して、で持ってくるんですね。
で、するとそれが通っちゃうんですよ。
わーずるー。
ということで、マイクロソフトが提案したJScriptの仕様が素案として使われることになったと。
あとは理由としてもう1個分析してるのは、エクマの審査員は別に結構わずかな差だなと思ってたんだけど、
エクマの審査員はたまたまWordを使ってたんですね。
マイクロソフトオフィスのWordを使ってて、他の会社は別のアプリで作ってたんですよ。
で、Wordが一番便利だし、じゃあこれを叩き台にしましょうよって言って、
それになった点はあったんじゃないかって。
なるほどねー、それは。
まあ難しいですね。
こういう仕様をフェアに決めるっての結構大変なんだなっていうのもありますし、
そこで差を分けたのがそういう小賢しい説明だったり、
たまたまWordを使っていたみたいなことだったりするのは結構面白いなっていうのはあります。
なんかでもこういうのって、そもそもネットスケープとさんが一緒に作った言語なわけじゃないですか。
実質的にはほぼ一人で作った言語なわけじゃないですか。
なんかその権利が守られたりとか、使用を開発者が決めたりすることはできないんですかね。
でもやっぱJavaScriptの言語のすべてに言えることだけど難しいのは、
JavaScriptを書ける人は増やしたいんですよ。
だからJavaScriptに関する権利を主張して特許とかを取ると、
分かりました、じゃあVisual BasicはVisual Basicでやりますんでって言って、
開発者にアピールし始めるんですね。
こっちは無用だし特許とかもないよみたいな。
するとそっちが広まっちゃうから、ある種オープンでないと結局競争の舞台に立てないですよ。
だからそういう難しさありますね。
JavaScriptに一番詳しくて、JavaScriptの使用をこれから決めていく影響力を持っているけれども、
JavaScriptに対する権利は主張しないですよっていう立ち位置じゃないと、
結局派遣を握れない、主導権を握れないっていうのが結構難しいところではあります。
もちろん権利を持ちつつ成功している言語ってのもたくさんあります。
48:04
例えば、科学技術で使われている、マトラボかな?
マトラボとかはそうですね、科学技術。
ライセンスだし、
例えばオラクルっていう会社がやってる、
オラクル、独自言語があるわけじゃないんだけど、
オラクルのデータベースの上で動く言語が、
実際にはオラクルはかなり権利を持っているんだけど、
教科書も出てたりとか、いろんな人が使っている。
そういう例があるんですけど、
基本今一番広まっている、
繁栄的に使われている言語っていうのは、
誰かの権利があるっていう、
特許で守られているっていうものではないものが使われています。
逆に誰でも使える、誰でも実装できるからこそ、
標準化が必要っていうことでもある。
開発者に標準化の権利ぐらいは、
あげてもいいのかなって思ったんですけど。
最初に作った人はっていうことですかね。
広めるために特許を取ったり、
お金を取ったりしないっていうのは、
すごく理解できるんですけど、
だってその人の思想で作ったわけじゃないですか。
みんなその思想をもとに、
そこから作っていくわけだから、
最初に作った人が、
作ったらきれいになるんじゃないですかね。
それはね、非常にいい指摘ですね。
ただ、プログラミングの世界って、
けっこうそんな、
洗顔主義みたいなのも特にないし、
作った人はもちろんクレジットはするし、
えらいねとはなるけど、
その人がコントロールを持つっていうのは、
あまりモデルとして使われていないんです。
いいものが広まる、いいものは残るっていう、
割と自然淘汰の世界。
一度公開して、
自分の手を離れた以降は、
その言語を他の人が再実装して、
それをオリジナルよりも広めちゃったりしても、
別にもともと作った人は、
特許とかを持っていない限りは、
特に口を出すことはできない。
なるほど。
それでウェブブラウザーも、
結局IUはネットスケープのパクリだったし、
ネットスケープももともとモザイクのことができたことを、
上位互換として作ったわけですね。
という意味ではパクリパクられっていうのは、
結構あることだし、
結局広まったら勝ちなんですよ。
なるほど。
ネットスケープは、
今その名前を持つブラウザーがいないことから分かる通り、
シェアはその後失っていくんですけどね。
つらい。
ちなみにネットスケープは結局、
この後Firefoxっていうブラウザーに引き継がれます。
そうなんだ。
それはなんか良かったですね。
ネットスケープはこの後、
この歴史からはだんだん退場していくんですけど、
どうなったかっていうと、
結局IEに負けちゃうんですね。
シェアとしては負けちゃうので、
オープンで行こうってことで、
オープンソース化して、
51:01
その後、非営利団体に変わるのかな。
会社的にどういうスキームで変わったのかは分からない。
なんかもう倒産して人が移ったのか、
それとも会社が非営利団体になったのかは分からないけど、
基本的には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も同じ仕様を満たせるんだけど、
54:03
違う方向に進化していった、みたいな関係ですね。
で、エッグマースクリプトを作ろうって言って、そこは大成功するんですね。
で、JavaScriptによく似た言語処理系がまた一つ生まれてしまった。
これがまた悲劇を生むんですよね。
2000年頃には、だからJavaScriptの仕様に関わりたいっていう、
エッグマーの仕様ですね。
JavaScriptの仕様というよりは、
JavaScriptが元になっているエッグマースクリプトの仕様に関わりたいって人が、
大暑さが出てくるんですね。
ネットスケープがこの時はもう解散して、
モジラっていうのはFirefoxを作っている冷え入り団体です。
それからマイクロソフトも出るし、マクロミディアムも来るし、
ヤフーも意見あるんだよねっていうことを言い出すし、
もう大変だと。
全然理解が一致しないと。
次の標準化会議ってことですよね。
JavaScriptとフラッシュっていうのは、かなりライバル関係みたいな感じにある。
どっちも同じようなことをしようとしているので、
相手にとって不利なように仕様を書き換えたいってことをバトルし始めるんですよ。
第4版っていうのは永遠にできないです。
2、3年ぐらい議論して、結局4版無理でしょみたいな。
3.1って俺たち作った、この3のちょっと拡張したやつで落ち着かないみたいな。
ここで手を打たないみたいなことをマイクロソフトが主張して、
フラッシュとかはアクションスクリプトにすでにあるけど、
エクマスクリプトにない機能をエクマに追加したいみたいな感じで、
自分たちの方に寄せていく寄せていく。
だから第4版を作ろうぜっていう人たちがいて、
全然一致しないんですね。
ついにはエクマスクリプト第4版は放棄されます。
諦めるんですね。
標準から始まって、
エクマスクリプトとジャバスクリプトがあるみたいな状態ってことですか?
そうですね。
ジャバスクリプトとエクマスクリプトっていうのが結局分かれてしまって、
みんなの間で合意が取れないみたいな。
ジャバスクリプトって一つの言語があるように見えるけど、
結局いろんなブラウザがジャバスクリプトを実行する処理系を実装してるので、
その人たちでも中でも合意が取れてないし、
ジャバスクリプトとアクションスクリプトもまた独自にみんなこっちに行ってるし、
その標準化、本当は最大公約数を取るのが標準的な仕様、
エクマがやることなんですけど、
それも結局機能全然してない。
みんなこっちに引っ張りたい、こっちに引っ張りたいっていう理解が全然一致しないのが
エクマで起こったバヒー劇です。
ちなみにこの論文は4部構成ぐらいになってて、
57:02
これはジャバスクリプトの暗黒時代です。
明確にこの5年ぐらい何も良いことがなかったみたいな感じで言われてます。
それはフラッシュに押されてたからっていうのは。
フラッシュにかなり押されてたっていうのはあると思いますし、
独自の機構をみんなが足しすぎて、
ジャバスクリプトを書く人もつらかった。
このブラウザーでしか動かない、このブラウザーでしか動かないっていう機能がいっぱい出てきたんで、
それをどうしようみたいな。
確かに、ブラウザー依存性とか最近そこまで感じないですけど。
昔かなりありましたね。
このブラウザーで見てくださいっていうサイトとか結構あったりして、
それってでもウェブページにとってはあまり良いことじゃないわけですね。
そうですよね、どのブラウザーからもアクセスできるようにしてほしい理想としては。
いい名なのは古いバージョンのインターネットエクスプローラーとかは、
独自進化とか違う仕様が多すぎて、
相対応みたいなのが大変になってしまうっていうのは結構ありますね。
なんか偉い目の敵にされてる印象、
セキュリティ的な問題とかもあって、
IEは特にエンジニア界隈から目の敵にされてる印象が強かったんですけど、
それはそういう実装大変っていうところも手伝ってたのかも。
それもありますし、それぞれブラウザーとしては、
自分のブラウザーの優位性を主張したいっていうのは、
オープンなウェブ、どのブラウザーでも動くウェブを作りたい、
ウェブページを作りたいっていうのと、
同じぐらい、もしくはそれ以上に強いですよね。
結局だから、そういうモチベーションを抑えることは、
エクマ全体としてできなかったっていうのが、
結構反省としてはあるんじゃないかなとは。
オープンネスと市場優位性を取りたいみたいなものの、
後者が勝っちゃったみたいな感じってことですよね。
あとは、やっぱり言語の策定作業に呼んできた人も、
悪かったんじゃないかっていうふうにも言われてます。
新しいことをしたいみたいな人が結構いたらしいんですね。
こういう仕様を取り込んだら、
若きブレンダみたいな感じで、
新しいことをしたいみたいな、
俺の考えた最強の言語を作りたいみたいな。
でも標準化の委員会って、そういうとこじゃないんですよ。
最大公約数を、結局なんか政治的に納得できる、
落とし所みたいなの作んなきゃいけないんだけど、
やっぱり言語の仕様に関わりたいみたいな、
エンジニアやってるのは、
人癖ある人が多かったっていうのもあるんじゃないかなみたいな。
ざっくりそういうことは趣旨としては言われてました。
暗黒時代の反省として。
これ暗黒時代って終わるんですか?
1:00:01
暗黒時代はちなみに、一応終わります。
2009年ぐらいに、第3版から10年ですね。
に第5版が発表され、2015年に、
第5版は結局、マイクロソフトが推した3.1をもとにしたもので、
これはみんなが納得って感じじゃなかったんだけど、
2015年にやっと第6版ができて、
これはみんながわりと納得したものとして発表されます。
ちなみにこれは、やっと訪れた平和な時代の象徴して、
コードネームはハーモニー。
ハーモニー。
どんなつらい歴史があったんだって感じですね。
どんなにもみんな嫌気がさしてるらしい。
なるほど。だから20年なんですね。
ここまで長かったと。
2015年までで区切ってるのは、この20年。
めっちゃ面白いのは、大躍進とか、
すごいいいことが起こったの、最初の2、3年で、
その後、暗黒時代がめっちゃ続いてるっていう。
JavaScriptとしての暗黒時代っていうのと、
JavaScriptでできることが増えてないかっていうと増えてるんですよ。
独自でみんな作ってるわけなので。
という意味では、必ずしも言語の使用を書いたり、
言語に関わってる人にとっての暗黒時代と、
JavaScriptが花開いた時代っていうのが、
実は同じ時期に起こってたりもするんですね。
一つこの中で触れられていたのは、
JavaScriptがまず躍進するきっかけになったのは、
起動器で通信できるような、JavaScriptだけで、
サーバーと通信できるようなものができた。
これがAJAXって当時の呼び方では呼ばれてるんですね。
このAJAXっていうのがだんだん普及して始めてきた。
で、一番デモとしてというか、
未来を感じさせたって言われてるのが、Googleマップの初代のもの。
なるほど。
が、まず無限にスクロールできると。
確かに。広げたり、縮めたり。
ズームしたりとか、
隣のページを見るっていうのも、
隣のページをわざわざ読み直すんじゃなくて、
スクロールすると隣に見れるようになるっていうのは、
当時はかなり珍しかったんです。
それまでは紙の地図みたいに、
この今地図が表示されている領域の隣を見るってボタンを押すと、
全体が切り替わって隣の地図が表示されるっていう感じだったんですけど、
それがシームレスになった。
シームレスって難しくて、
隣の必要になる画像を動的に取りに行かなきゃいけない。
ですし、そのデータを先読みしたりとか、
いろいろ一押しでやる必要があった。
それを実現したのが、
JavaScriptで実現できるようになった。
ていうことで、
1:03:00
JavaScriptって結構いろいろできることあるんじゃね?
っていう風に注目が集まってきて、
で、花開く。
使われるようにだんだんなる。
でもそれと同時に、
それは実は独自仕様の馴れの果てみたいなものを使って、
作られたんです。
だから言語的にはすごく黒歴史の時代ではあるんですよね。
でも、やっぱりそうやって、
それぞれみんな好き勝手やってたからこそ、
今7割の人が使っているというのはあるのかもしれないですね。
っていうね、非常に不思議な言語ですよね。
フラッシュが廃れて、
そのJavaScriptが残った理由っていうのは何なんですか?
結局JavaScriptがオープンだったからっていうのはあるんじゃないかなと思います。
なるほど。
たぶん決め手になったのは、
AppleのiOSかな、スマートフォンで、
フラッシュは載せませんみたいな。
こう発表をして、
Appleとしては、
フラッシュっていう、
要はブラックボックス、
オープンじゃないような処理系を載せて、
プラグインという形で、
いろんなブラウザに載ってたんですね、当時は。
そうでしたよね。
フラッシュプラグインをインストールしてくださいってありましたよね。
ありましたありました。
昔これ何なんだろうなって思ったんですよ、私。
結局、いろんなブラウザに
フラッシュっていう、
小さいフラッシュの会社、
マクロメディアが開発したものを、
プラグインとしてくっつけるみたいな。
そこはブラックボックスで、
オープンじゃないんだけど、
みんなどのブラウザにもフラッシュが小さいのが載ってるから、
同じように動くと。
JavaScriptって当時、
めちゃめちゃ互換性がなかったので、
それに比べるとフラッシュっていうのは、
1回書けば、
どんなブラウザにも動きますよ、いいですよね、
っていう売り文句で、
基本的には、
強かったわけですね。
それが、
だんだん対立も収まってきて、
そうですね。
JavaScriptでいいじゃんってなるわけですね。
オープンでっていう。
自分が持ってない、
プラグインをインストールさせる。
で、それが例えばクラッシュしたりとか、
セキュリティの不具合とかあっても、
責任はブラウザを作った側が、
負わなきゃいけないわけですね。
なので、ちょっと嫌だったわけですね。
確かに、確かに。
ていうのもあるんじゃないかなと。
ありがとうございます。
ここは諸説あるかもしれないですね。
面白かったっていうか、
20年です。
ブレンダーさん途中からいなくなりましたけど、
ブレンダーさんは、
みんなで仕置き目で、
わちゃわちゃやってる間は、
何してたんですか?
ブレンダーさんも関わってたらしいです。
ブレンダーさんがそこの現場にいたからこそ、
この記事が書けているっていうのは、
あるんじゃないかなと思います。
20年間ずっと自分が10日で、
プロトタイプを開発したやつの、
行方を見守り続けたんですね。
すごい人生だった。
開発者だからって、
特別扱いされるわけでは、
結局ないわけですね。
1:06:00
ステークホルダーがいっぱいいて、
こうしたい、こうしたいっていうのを、
論理的にこっちのほうがいいから、
説得しなきゃいけないみたいな。
ブレンダーさん、
お金持ちになっててほしいなって思いました。
ブレンダーさんは、
結局、モジラっていう、
ネットスケープの引き継いだ会社の、
CTOになって、
10年くらいCTOずっとやっていたのかな。
その後、
ブレイブっていう、
また別のブラウザを開発をする、
というふうに言っています。
この会社、
多分、アンチグーグル、
アンチマイクロソフトみたいな、
インデペンデントなブラウザを、
作るべきなんじゃないか、
っていうふうに言っていて、
基本的には寄付で、
寄付と後、
広告モデルなのかな、
で、やってる会社を、
やってるそうです。
ブレンダーさん、
報われてほしい?
報われてほしいって。
すみません、ちょっとパッと調べたら、
ブレイブは、
トラッキングとかはしない代わりに、
ブレイブが別の広告を、
自分たちで挿入して、
で、その広告の収入で、
今回してるそうです。
なるほど。
今どのくらい使われているのか、
わからないですけど。
でも、いろいろトラッキングされるのが、
嫌だからっていう例で、
Chromeとか使いたくない人も、
結構いますよね。
そうですね、そういうものを作ってると。
たまにこだわり派みたいな人いて、
こんなブラウザあるんや、
そういうことがたまにあります。
そういうJavaScriptの20年、
歴史でした。
面白かった。
ちなみに、
ES6が出て、
Harmonyっていう、
コードネーム通り、
一応みんなが納得できる仕様ができたんですけど、
それで暗黒時代は、
実は終わってなくて、
ES6に対応しているブラウザ、
だけの世界があれば、
よかったんですけど、
古いブラウザもあるんですよ。
対応してなかったら、結局、
ES6で書いたウェブサイトが、
あったとして、
それがどのブラウザでも、
使えるんじゃないってなったら、
みんな使ってくれないんですね。
結局、新機能を使いたいけど、
使えないっていうのがあったんです。
それを解決するために、
登場した、
言語が細分化されて、
全然互換性がなくなってしまった世界に、
登場したツールが、
名前がBabel。
それは絶対狙ってるでしょ。
狙ってるわけですね。
Babelっていうのは、
神話に登場する、
人類に対して、
神が怒って、
言語を細分化させてしまって、
人類が協力できないように、
いろんな言語を作った、
っていう風に言われている、
その神話の大元で、
していると思われます。
1:09:00
まさにそういう状況になってしまったのを、
解決するためのツールがBabel。
Babelは何かというと、
JavaScriptをJavaScriptに翻訳してくれるツールです。
ES6でみんな書きたいんですよ、プログラマーは。
もうそれで統一されるってことになってるから。
でも古いものしか、
分かんないようなブラウザが、
世にいっぱいあるんです。
なのでES6っていう、
新しい最新版のJavaScriptで、
書いてもいいよと。
それを、
分かんないブラウザ、分かんないブラウザ向けに、
翻訳してあげるよっていうツールが、
できたんです。
それは賢い。
そのおかげで、
どのブラウザでも、
動くJavaScriptを、
新しい文法で書くことができる。
なるほど。
っていうのが、
一番最近の、
最近の現状ではないけど、
一つのトレンドですね。
なるほど。
基本的に今は、
ハーモニーでしたっけ?
ハーモニーの仕様に沿って書けば、
どのブラウザからも、
見れるようになってると。
その話はちょっともう、
長くなっちまうので、
でも基本的には、
そこまで辛くは、
もうないとなりました。
っていう、めでたしめでたし。
あとはですね、JavaScript、
割と面白い展開としては、
サーバーでも使われるようになった。
ウェブブラウザの中で、
だけで動くっていう言語だったんだけど、
今は、
サーバーサイド、
ウェブページを、
ホストするというか、
配信するようなサーバーでも、
使われるようになったっていうのが、
面白いポイントのもう一つですね。
それはまた、
動かすための仕様がまた違うんですか?
基本的に同じ言語です。
ただ、
ウェブブラウザ上では、
例えばHTMLを書き換えるために、
いろんなAPIがあったりとか、
その機能があったんですけど、
それは全部必要なくなって、
ネットワークに関する機能とか、
ファイルを読み書きするような機能とかが、
もともと入っている、
処理系っていうのが新しく
作られたんですね。
みんな、ウェブブラウザのための
言語だと思ってるから、最初は、
使えるかってなったんですけど、
ブレンダーが20年前に仕込んでいた、
かっこいい機能が、
ええやんみたいな。
サーバーのプログラミングに、
実は向いてるんじゃねっていうことで、
なるほど。
ブレンダーにやるやんっていう。
ブレンダー側からしたら、
ドヤ顔ですよね。
言うたやろっていう。
それは20年振り返る記事も
書きたくなりますよ。
へえ、面白い。
すごいですね。
ブレンダーさんすごい、
よかったねって。
そうですね。
ここまで、自分の
考えた最初の、
10日間で考えたアイディアが、
ここまで支持されて、広まって、
1:12:00
その成長見守れる立場にあるわけで、
面白いですね。
結構若い時期に作ったから、
ずっと元気で見守れたっていう。
時にはこれ見守ってて、
よかったのかみたいな、
暗黒時代とかあったんでしょうね。
悲しくなる、こんなはずじゃなかった、
っていうのがあったかもしれないですけど。
それだけ、
いろんな人がそこを中心に
回ってくると面白いなと思います。
言語を作ろうというのは、
考えたことも、
どの言語がいいかとかはもちろん、
複数試してみて、
Pythonとかあるとか、
いろいろやってみて、これは書きやすい、
書きにくいとか、そういうのはありますけど、
じゃあ、作ろうっては、
なかなかならないじゃないですか。
あります?作ろうと思ったこと。
いや、ないかな。
やっぱ、すでにある言語を
使ったほうが、絶対情報も多いしね。
ライブラリとかもないわけですからね。
そうですよね。
使えるような。
それがもうね、
ブレンダーも最初はね、やっぱ、
作ろうと思ってたわけじゃなかったんだけど、
作らざるを得ない状況に置かれて、
作ったっていうのも、
また面白いポイントですね。
なんか、作る人って複数作ったりするんですか?
まあ、その、プロトタイプでいろいろ
こう、作るのが趣味っていう人は、
いると思います。
なんかCN号の作者の
うちの一人も、
また別の言語を作っていた。
C言語は実はB言語っていう、
同じ研究所で作られた、
別の言語の発展版
なのかな、確か。
あ、そうなんですね。
サンタフェ研究所とかでしたっけ?
AT&Tのベル研究所っていう。
ベルシスって、ベルってグラハム・ベル
が元になってるんじゃないかな?
その名前が元になってる。
そういうことだと思います。
が、にいるデニス・リッチーさんっていうのは
作ったってことになってます。
もう一人の、確かケン
ケントンプソンさんかな?
はい。
は、その元になってるB言語を作って、
で、その後C言語が
発展されてるんで、
言語を作るのが仕事だったり、
趣味だったりみたいな人ってのは
いるんじゃないかなと。
なるほど。
ブレンダンさんがね、ジャバスクリフトを見捨てて、
また別の言語を作ってたらまた
面白い展開だったかもしれないですけどね。
いや、なんか、こう、
いろいろ大変だった割には、愛を持って
最後まで今思えるような感じ。
うん、それはそうですね。
最後までっていうか、
これからもジャバスクリフトの歴史は
続いていくわけですが。
そうですね。
まあでもその、とりあえず20年間
お疲れ様でした。
よかった、ハーモニーが生まれて
よかったねっていう感じですね。
ハーモニー生まれてよかったね。
面白かったです。ありがとうございました。
まあそんなわけで、
言語の歴史という、
1:15:00
産業史みたいな感じですかね。
はい。
を紹介していきましたが、
お楽しみいただけましたでしょうか。
結構、なるべく技術的な
用語とかは控えてたんですけど、
それでもちょっと分かりにくいとこは
あったかもしれませんけどね。
どうでしたかね。
これはだいぶ素人質問をしたので、
なんかそれで
あんまりコンピューターサイズ詳しくない人も
聞いてもらえたらなと思います。
はい。
まあというわけで、また次回も
これが好評であれば、
いろんなテック系の話題もね、
増やしていこうと思いますね。
はい、軽減の遠征文というか、
またやっていこうと思います。
それではまた次回も聞いてください。
さよなら。
01:15:51

コメント

スクロール