2010年06月16日

ECMAScriptとは何か

Ecma262 5th Editionの仕様をざっくり読む。あくまで、ざっくり。PDFで252ページもあるもんだから、とても真面目に読んでいる暇がない。ちなみに3rd Editionなら180ページくらい。

Ecmaは「European Computer Manufacturer Association」の略称。邦訳はヨーロッパ電子計算機工業会。

Ecmaの公式サイトでは、こんな風に自己紹介している。

Ecma International is an industry association founded in 1961 and dedicated to the standardization of Information and Communication Technology (ICT) and Consumer Electronics (CE). History

Ecma Internationalは1961年に設立された工業会で、情報通信技術と家電に関する情報の標準化を行っています。

http://www.ecma-international.org/memento/index.html

だそうです。



じゃ、ECMAScriptとは何かと言うと、こんな感じ。

This Ecma Standard is based on several originating technologies, the most well known being JavaScript(Netscape) and JScript (Microsoft). The language was invented by Brendan Eich at Netscape and first appeared in that company‘s Navigator 2.0 browser. It has appeared in all subsequent browsers from Netscape and in all browsers from Microsoft starting with Internet Explorer 3.0.

このEcma標準は、いくつかの団体の技術(代表的なところではNetscape社のJavaScriptや、Microsoft社のJScript)をベースにしています。この言語はNetscape社のBrendan Eichによって開発され、同社のNavigator2.0ブラウザが初出になります。この言語はその後のNetscape社のブラウザでも利用され、Microsoft社もIE3から搭載を始めました。

The development of this Standard started in November 1996. The first edition of this Ecma Standard was adopted by the Ecma General Assembly of June 1997.

標準化の作業は1996年11月より開始されました。Ecma標準の初版は1997年1月のEcma総会で採択されました。

http://www.ecmascript.org/docs.php



というわけでECMAScriptとは、Netscape社がJavaScriptを作り、Microsoft社が真似してJScriptを作ったことで、複数の似た規格が情報通信の分野でしのぎを削る自体になったので、それらを標準化しようとしたもの、ということになる。

で、このECMAScriptの仕様、けっこう平易な言葉で書いてあって読みやすい。説明の最初の方には、スクリプト言語とは何かとか、Web Scriptingとは何かについても説明してくれている。

その後、ECMAScriptは「object-based」な言語であるという記述がでてくる。JavaScriptというのは思いのほか自由度の高い言語で、オブジェクト指向的なことはもちろん、関数の扱いがとても柔らかいので関数型プログラミングの真似もできる。このJavaScriptの関数の扱いの容易さは処理の流れを綺麗に分岐させたい時にありがたい。

あとは型やbuilt-inなものの説明から、文法とかに関する細かな話が続く。JavaScriptは言語が用意しているものの数がとても少ない。だから覚えやすいのだけど、逆にパワフルな言語ではなくなってしまう部分がある。まぁ、その辺はjQueryとかライブラリに任せて言語自体は常にシンプルにしておく方が、ブラウザの上に載せておくには便利だと思う。

ちなみに5th Editionの特徴というと、やはりJSONのネイティブサポート。というわけで、JSONの文法についてもさらっと記述してある。あくまでさらっとなので、実際に文法を参照する際はRFCを見ておいた方が良さげに見える。

http://tools.ietf.org/html/rfc4627



ところで3rd Editionと5th Editionはよく聞くけど、4th Editionは見かけない。

4thは3rdを大きく拡張しようとしたが、しっかりとした互換性が保てなさそうだったこともありベンダー間でもめて廃案になったそうな。

ちなみに4thの仕様を見てみると、constやfinal、privateやpublic、classやpackageなんて文字が見え隠れする。

http://www.mozilla.org/js/language/old-es4/introduction/index.html

これらはJavaScriptの系列であるActionScriptに採用されたそうな。わたしゃ、JavaScriptにはprivateやclassなんて持たずに今のままの君で居て欲しいと思ったりしてしまう。

じゃ、JavaScriptとECMAScriptの関係はどういうものかというと、mozillaのページの言うところではこんな感じ。

ECMAScript is the scripting language that forms the basis of JavaScript. JavaScript is a superset of ECMAScript, i.e. JavaScript is ECMAScript plus some additional features. ECMAScript is standardized by the Ecma International organization in the ECMA-262 specification.

ECMAScriptはJavaScriptの基礎となるスクリプト言語です。JavaScriptはECMAScriptのスーパーセットにあたります。つまり、JavaScriptはECMAScriptにいくつかの追加機能をプラスしたものになります。ECMAScriptはEcma International organizationでECMA-262として標準化されています。

https://developer.mozilla.org/en/ECMAScript


というわけで、ECMAScriptが仕様を決めたものに、ブラウザで動かす用のいくつかのサブセットを加えていったものがJavaScriptですよ、と。

このJavaScriptにもそれぞれバージョンが付けられて、今回はどの機能を追加したとか、標準化されたECMAScriptのどこまでに対応したとかがいたりする。

https://developer.mozilla.org/ja/JavaScript



ECMAScriptについては、とりあえずこれくらいで。