Jesse James Garrett氏が 2005年2月18日に名付けた Ajax と呼ばれる非同期通信を用いた Webアプリケーション(Googleマップや Googleサジェストなどが代表的)が注目されるようになってから、Ajax の技術の根幹となっている最初の Webスクリプト言語である JavaScript が再評価されています。本稿では、幅広い環境で動作するインタプリタ方式のオブジェクト指向スクリプト言語である JavaScript について解説します。
JavaScript とは、Netscape Communications社の Brendan Eich氏によって開発された最初の Webスクリプト言語で、開発当初は「LiveScript」と呼ばれていました。主にウェブブラウザ上で動作するインタプリタ方式のスクリプト言語で、HTML文書に組み込んで使用されます。
1995年6月にリリースされた Netscape Navigator 2.0β1 から搭載されるようになり、当時、Sun Microsystems社の開発したプログラミング言語である「Java」が大きな注目を浴びていたことから、マーケティング的な思惑が働いて、1995年12月には Sun Microsystems社から合意を得て(Sun Microsystems社の商標となる)、現在の「JavaScript」の名称に変更したとされています。1996年には、Microsoft社の Internet Explorer 3.0 以降より標準で実装されるようになり、その手軽さから JavaScript は急速に普及していきました。
1997年6月、通信に関する標準を策定する国際団体 Ecma International によって JavaScript の中核的な仕様が ECMAScript(エクマスクリプト)標準として採択され (ECMA 262, ISO/IEC 16262, JIS X 3060)、順調にメジャースクリプト言語への階段を昇り、標準化により多くの環境で利用できるようになるはずでしたが、JavaScript はブラウザベンダーの熾烈なシェア争いに巻き込まれる形で不遇な時代へと突入します。
ようやく日本にもインターネットが普及しだした当時(1995-1996年)、ウェブブラウザは Netscape Communications社が開発する Netscape Navigator がシェアの大半を占めており、Microsoft社の Windows 95 に標準で搭載されていた Internet Explorer は機能面において Netscape Navigator に遅れをとっていました。そこで、Microsoft社は Internet Explorer の機能を強化するため、JavaScriptエンジンを Internet Explorer にも組み込もうと考えましたが、Netscape Communications社は Microsoft社へのライセンス供与を認めなかったために、Microsoft社は JavaScript 互換のスクリプト言語の開発へと走り出し、Netscape Navigator 並みの機能を実現する一環として、Internet Explorer 3.0 には JavaScript 1.0 互換のインタプリタ方式のスクリプト言語である JScript 1.0 が VBScript とともに搭載されました。
このブラウザ市場のシェア奪取のための Internet Explorer の機能強化に始まり、ECMAScript による標準化が図られるはずの JavaScript でしたが、1990年代後半は Microsoft社と Netscape Communications社の両ブラウザベンダーが互いにブラウザのバージョンアップの度に自社技術の異なる機能を次々に拡張していったため、両ブラウザの JavaScript の仕様は ECMAScript 標準から大きく離れ、ブラウザに関するセキュリティ意識も今日程高くなかっため、JavaScript に関する脆弱性が次々と発見されたり、ブラウザ上での動作に差異が生じたりと互換性も失われていき、JavaScript は低機能な言語と捉えられる不遇な時代を迎えました。
ブラウザ市場のシェア争いは Internet Explorer に軍配が上がる形で第一次ブラウザ戦争が終息し、1999年12月には Microsoft社と Netscape Communications社の両ブラウザベンダーが参加の上、Ecma International で ECMAScript Language 3rd Edition が発表され、JavaScript をサポートする全てのブラウザがプログラミング言語のコア部分にあたる Core JavaScript の標準に準拠するようになりました(ただし、各ブラウザが搭載する JavaScriptエンジンの挙動が一致したわけではなく、少なくともこれ以降にリリースされるブラウザにおいて、各 JavaScriptエンジンに独自の仕様を持たなくなっただけで、以前に実装されていた機能の相違や独自拡張などで、各ブラウザ毎に動作が違ったり、エラーが発生するといった問題は現在も解消されていません)。実験レベルでは、Netscape 6.0-7.2, Firefox 1.0 が搭載している JavaScriptエンジンである JavaScript 1.5 と Internet Explorer が搭載している JavaScriptエンジンの JScript 5.6 が ECMAScript Language 3rd Edition に対応しています。また、ECMAScript for XML(E4X) という ECMAScript Language 3rd Edition の XML拡張対応版にも、JScript 8.0 に相当する JScript.NET(Internet Explorer は未対応)や Firefox 1.5 が搭載している JavaScript 1.6 で一部のサポートがあり、今後も ECMAScript に準拠した実装が進む見込みです。
Web の標準化団体である W3C で策定が進められている DOM は、OS の種類や環境・設定といったプラットフォームやプログラミング言語に依存しないインターフェースで、HTML文書や XML文書の内容・構造・スタイルにアクセスし操作できる API です。DOM は、次の表のような複数のレベルの規格が勧告されており、Internet Explorer, Netscape, Firefox なども Document Object Model Level 1 はサポートしています。
| レベル | 内容 | W3C勧告時期 |
|---|---|---|
| レベル1 | Core と HTML | 1998年勧告 |
| Core と HTML(第2版) | 2000年ドラフト | |
| レベル2 | Core | 2000年勧告 |
| Views | 2000年勧告 | |
| Events | 2000年勧告 | |
| Style | 2000年勧告 | |
| Traversal and Range | 2000年勧告 | |
| HTML | 2003年勧告 | |
| レベル3 | Validation | 2003年勧告 |
| Core | 2004年勧告 | |
| Load and Save | 2004年勧告 |
DOM が策定される前から JavaScript には、ブラウザを操作する API があり、DOM がそのすべてをカバーできているわけではありません。DOM 策定以前の API については、DOM での歩み寄りが見られるものもあります。Internet Explorer 5.0-6.0 では Ajax の要である XMLHttpRequest は、ActiveX を使用して生成されていましたが、Netscape 7, Firefox 1.0 にはホストオブジェクトとして標準で実装され、Internet Explorer においてもバージョン 7 から標準で実装されました。XMLHttpRequest と同類の機能は、Document Object Model Level 3 Load and Save で規定されており、Netscape 7, Firefox 1.0 にはそのひとつである document.load() が実装されています。
http://w3g.jp/javascript/guide/outline直近の制作実績等:大阪人間科学大学 New! / 大阪薫英女子短期大学 New! / セキスイハイム みんなのお国じまん New!