「JavaScriptとはWeb上のヴァーチャルマシンである」ダグラス・クロックフォード氏はこう語る。ここでは『パーフェクトJavaScript』を22回にわたってまとめ、その技術を学ぶ。今回は、JavaScriptとECMAScriptの関係や歴史など、JavaScriptの概要を説明する。
1 JavaScriptの見方
JavaScriptはWebブラウザ上で動く言語である。様々な評価や見方があるが、今後JavaScriptの重要性が上がるのは間違いない。ダグラス・クロックフォード氏はJavaScriptを「Web上のヴァーチャルマシン」と読んだ。これは、今のWebが世界に広がるJavaScript実行環境と見立てられるということである。本書は原則としてクライアントサイドJavaScriptを仮定して説明する。
2 JavaScriptの歴史
JavaScriptの登場は1995年である。当時最も普及していたWebブラウザのNetscape Navigatorに搭載された。JavaScript搭載以前のWebブラウザの機能はHTMLや画像を表示するだけだったが、JavaScriptの搭載でWebブラウザ側でプログラムを実行できるようになった。この技術はJavaにも搭載されている。今ではサーバサイドの開発言語として有名なJavaだが、登場時はJavaアプレットと呼ぶプログラムをWebブラウザ(HotJava)内で実行する機能で注目を浴びた。
JavaとJavaScriptは、予約語や制御文など表面的に似た部分があるが、言語としてのつながりはない。JavaScriptが後発で開発時は異なる名称(LiveScript)だったが、当時名が通っていたJavaに似せた名前に変えたというマーケティング戦略に過ぎない。言語仕様も動作は似ておらず、むしろJavaScriptはRubyやPythonなどの軽量スクリプティング言語やLispなどの関数を主体に考える言語の方に似ている。
JavaScriptのトピック
- 1995年:ネットスケープコミュニケーションズ社がJavaScript公開
- 1996年:マイクロソフト社がJavaScript互換のJScript公開
- 1997年:ECMAScript第1版(ECMA-262)
- 1998年:ISO/IEC 16262 承認
- :ECMAScript第2版
- :DOMレベル1策定
- :新語DHTML 登場
- 1999年:ECMAScript第3版
- 2000年:DOMレベル2策定
- 2002年:ISO/IEC 16262:2002 承認
- 2004年:DOMレベル2策定
- 2005年:新語AJAX 登場
- 2009年:ECMAScript第5版
- :新語HTML5 登場
3 ECMAScript
JavaScriptの標準化
ECMAScriptとは、ネットスケープ社がEcma Internationalという標準化団体に提出した標準言語仕様の名称である。JavaScriptの分裂を防ぐ意図などにより行われた。ECMAScriptの規格番号はECMA-262である。その後、ISOが追認した(ISO-16262)。これらのECMAScript準拠の実装を総称してJavaScript処理系と呼んでいる。
見送られたECMAScript第4版
ECMAScript第4版は規格の合意ができず頓挫した。ECMAScript第3版が出たのが1999年である。ほぼ10年もの間ECMAScript第4版の作業は続いたが、2008年に標準化作業部会は大きな言語仕様の変更を見送った。そして2009年に出たのが第5版である。
4 JavaScriptのバージョン
現実にはJavaScriptの機能実装が先行して、ECMAScriptが後追いで標準規格化しているのが実状である。
5 JavaScript処理系
WebブラウザとJavaScript処理系の対応は以下の通り。
- FireFox:SpiderMonkey
- Internet Explorer
- Safari:JavaScriptCore
- Chrome:v8
- Carakan:Carakan(最新コードネーム)
クライアントサイドJavaScriptコードの移植性
クライアントサイドJavaScriptの移植性の障害は以下の2つが原因である。1つはJavaScript言語処理系の違い、もう1つはレンダリングエンジンの違い(DOMやCSSの解釈の違い)である。ECMAScriptやAcidと呼ばれるテストによって、ブラウザごとの挙動の違いをなくそうとする動きもある。しかし、古いブラウザの問題やPC以外のデバイスへの対応が課題といえる。
6 JavaScript実行環境
コア言語
コア言語とは、JavaScriptの中で取り替え不能な機能を強調する際に使う用語である。
ホストオブジェクト
ホストオブジェクトとは、JavaScriptが起動時にホスト環境から受け取る、グローバルオブジェクトをルートとするオブジェクトツリーのことである。グローバルオブジェクトをJavaScriptのコードの視点で見ると、起動時から暗黙に存在するオブジェクトである。クライアントサイドJavaScriptのグローバルオブジェクトはwindowオブジェクトとして知られている。
7 JavaScript周辺環境
ライブラリ
クライアントサイドJavaScriptの代表的なライブラリは以下の通りである。
- prototype.js
- script.aculo.us
- jQuery
- Ext.js
- Yahoo! UI Library(YUI)
- Dojo
- MochiKit
- Moo Tools
- Google Closure Library
- uupaa.js
ソースコード圧縮
ソースコード圧縮をすると以下の要因で実行が速くなる。
- ネットワーク転送料が減ることでネットワーク待ち時間が短くなる
- ソースコードが短くなると、JavaScriptインタプリタ(Webブラウザ)がコードを解釈する時間が短くなる
- (圧縮ツールによっては)ソースコードを最適化する
代表的な圧縮ツールは、Google Closure Compiler、YUI Compressor、packer、JSMinである。単純な圧縮ツールの効果は不要な空白文字、改行、コメントの削除である。準備は面倒だが、一定規模の開発であれば導入すべきである。
統合開発環境(IDE)
JavaScript開発で使える代表的な統合開発環境(IDE)は以下の通り。
- Orion:Eclipse Foudation提供のWebベースのJavaScript専用IDE
- Cloud9:クラウド型でJavaScript専用IDE
- Eclipse:Eclipse Foundation提供。JavaのIDEとして有名だがJavaScriptのサポートもある
- NetBeans:Oracle製(元Sun)。JavaのIDEとして有名だがJavaScriptのサポートもある
- Aptana Studio:Appcelerator(Titanium開発元)が買収したAptana社の無償製品
- WebStorm:JetBrains社の有償製品
- Komodo IDE:Active State社の有償製品
最後に
JavaScriptはWebブラウザ上で動く言語である。現在は、JavaScriptの機能実装が先行して、ECMAScriptが後追いで標準規格化しているのが実状である。JavaScript実行環境ではコア言語とホストオブジェクトといった言語特性を持つ。そして、周辺環境としてライブラリ、ソースコード圧縮、そして統合開発環境(IDE)について整理した。
次回は、インタプリタ言語、動的型言語など JavaScript の言語仕様についてまとめる。
![]() |