Archon-First Note

まだ始めたばっかり。自分の頭の中身を外部に吐き出す場所。

JavaScriptの歴史を手短に整理してみた

ふわふわ言語

JavaScript、あれだろ、 クライアントでHTMLと一緒に動かして、 ページの表示時やボタンのクリック時にちょっとしたデータ整形や 画面の表示切り替えとかをさせるヤツ。 型は決まってないわ、変数のスコープはグローバルだわ、 カッコやセミコロンがなくても動いたり、優柔不断なふわふわ言語。

そう思っていました...

しかし、着実と、いやむしろハイスピードで改善されているらしく、 浦島太郎状態になっているような気がしたので、年寄りにならないよう 歴史と最近のトレンドを調査したいと思います。

JavaScriptの歴史を手短に整理してみた

  • 1995年 誕生。今は亡きNerscape2.0に搭載された。 最初はLiveScriptという名前だったけど偉い人がJavaScriptに改名した。 NetscapeCC社は、C言語によるSpiderMonkeyと、Java言語によるRhinoという 2つのエンジンを作成した。 <...え、なんで。この時から既にふわふわしている。>

  • 1996年 ECMAScript誕生。 今までブラウザごとに好き勝手に実装して解釈していた。 しかし、JavaScriptの中核的な仕様がECMAScriptとして標準化され、 多くのブラウザで利用できるようになった。 <これが、ブラウザが有料の時代ってヤツか。>

  • 2005年 Ajax誕生。 Ajaxマイクロソフトが開発したJavaScriptの非同期通信。 従来のWebページでは、ボタンを押して画面遷移することが常識だったが、 Ajaxにより画面遷移を伴わない動的なWebアプリケーションの製作が実現可能になる。 GoogleマップGoogle サジェストなどが作成された。 <え、開発したのMSだったの...>

  • 2009年 ECMAScript5誕生。strictモードやJSONライブラリが実装された。 ECMAScriptにより、標準化されたと思われたJavaScriptだが、 MozillaAdobeOperaGoogleらが推すECMAScript 4と、 MicrosoftYahoo!らが推すECMAScript3.1に事実上分裂してしまっていた。 結果は、後者がECMAScript5として2009年に標準化された。 <おま、まだ争ってたの!>

  • 2009年 CommonJS(ServerJS)誕生。 ウェブブラウザ環境外における各種仕様を定める

  • 2009年 Node.js誕生。 Node.jsはいくつかのCommonJS仕様を実装している。

  • 2012年 TypeScript誕生。 大規模なアプリケーションの開発のために設計されている。 既存のJavaScriptライブラリに型情報を付与して利用できる。

  • 2014年 HTML5誕生。 オフライン対応、ストレージ、マイク、カメラ、GPS、3Dといった全く新しい概念。 WebSocketによる持続性(従来のXMLHttpRequestはあくまでブラウザ側からサーバにデータの送信要求を出す手段に過ぎず、サーバ側からクライアントにデータをプッシュ配信することが難しい。)

  • 2015年 ECMAScript6(または、ECMAScript2015と呼称。)誕生。 Class構文と型の導入(let、const、Map、Set、Symbol)、 Promiseにより、非同期処理の最終的な完了処理を表現。 <おい、なんで呼び名が2つあるんだ!!>

結論

こんなに激しい戦いがあったとはな。 「ブラウザ戦争https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%88%A6%E4%BA%89」なんてWikipediaもある。 JavaScriptのふわふわ具合は、ブラウザビジネスによる産物ということですね。

昔は、動作が不安定でかつブラウザごとにテストしなければならないから、できるだけサーバーサイドのJavaScript以外の言語でプログラミングするような風潮がありました。が、今では非同期処理カッケ―!スゲー!!便利!!!!という印象受けます。 もう、submitボタンやonclick関数は使わないんだよ・・・

次回は、ビジネスWEBアプリで重用であろうWebSocket、Node.js、Promise辺りを勉強してみたいと思います。