16. その他の袋小路
1990 年代の中盤から後半にかけてソフトウェアコンポーネントという概念に大きな関心が集まり、ソフトウェアコンポーネントモデルがいくつか提案、実装された。例えば Object Management Group (OMG) の CORBA, Microsoft の COM, Sun の JavaBeans がある。一般的に言うとソフトウェアコンポーネントモデルはモジュール化スキームであり、オブジェクトベースのソフトウェアモジュールを記述、発見、利用する手段を提供する。1997 年 7 月の TC39 会合 [1997g] では、Oracle の代表者 Jim Tressa が OMG によるコンポーネントスクリプト言語の RFP (request for proposal) プレゼンテーションを行った。その会合では IBM, Netscape, Oracle などが ECMAScript ベースの提案に応じることに興味を持ったと報告されているものの、最終的に OMG が作成した仕様は ECMAScript ベースではなかった。
ECMAScript Components はブラウザおよびその他の JavaScript ホストでの利用を意図した JavaScript 特有のコンポーネントモデルを普及させようとした試みであり、JavaScript コンポーネントを記述するための XML スキーマおよびボキャブラリ、そして実装規約の集合を規定する。この取り組みのスポンサーは NetObjects Inc.1 と Netscape だった。NetObjects の Richard Wagner [1999] による最初のプレゼンテーションは 1998 年 6 月の Ecma 総会で行われた。同じ会合では ECMAScript Components 技術仕様のドラフト [Wagner and Shapley 1998] が TC39 に提出されている。このドラフトは三度改訂されてから Ecma 総会に提出された。ECMAScript Components は Ecma 規格として承認され、ECMA-290 [Wagner 1999] として公開された。この規格が実装された記録は存在しない。2009 年、Ecma 総会は TC39 からの提言に基づいて ECMA-290 を規格として取り下げることを投票で決定した [Ecma International 2009b]。
ECMAScript 第 3 版コンパクトプロファイル (compact profile) は動的性を減らした ES3 の部分集合を定めた言語プロファイル語であり、これがあるとリソースの制限された環境の JavaScript 実装でも ECMAScript 仕様への準拠をうたえるようになる。この仕様は WMLScript という Ecma と関係ないスクリプト言語が動機となって作成され、携帯電話アプリケーション向けの JavaScript 方言を定義することを目的としていた2 [Lewis 1999b]。コンパクトプロファイルには ES3 の全ての機能が含まれていたものの、with
文、eval
関数、Function
コンストラクタの除外を実装に許していた。また組み込みライブラリのオブジェクトを改変不能にすることも許されており、事前にコンパイルされた実装や ROM ベースの実装が可能だった。Ecma 総会はコンパクトプロファイルの規格を ECMA-327 として承認した [Vartiainen 2001]。ECMA-290 と異なり ECMA-327 はいくつかの環境で実際に実装されたものの、 ECMA-262 の新しい版がリリースされたころには ECMA-327 を更新することへの関心は失われていた。ただ ECMA-262 の最近の版はリソースが非常に限られた環境でも実装されてきている。もしそういった環境用の実装で一部の機能を除外するのが望ましいなら、実装は黙ってそうするだけである。リソースが制限される実際のアプリケーションで JavaScript 実装間の完全な相互運用性が要件になったことはない。2015年、Ecma 総会は ECMA-327 を規格として取り下げることを投票で決定した [Ecma International 2015b]。
2002 年、TC39-TG1 は「ECMAScript for XML (E4X)」の仕様策定に労力の多くを注いだ。E4X は XML 文書の処理をサポートする構文的な拡張を ES3 に追加する個別の Ecma 規格である。ECMA-357 の二つの版 [Ecma International 2004; Schneider et al. 2005] は 2004 年と 2005 年に発行された。E4X を実装したのは Firefox だけだったので、ブラウザゲーム理論に従って、E4X はほとんど使われなかった。2015 年、E4X 拡張が ECMAScript 2015と互換でないという理由で ECMA-357 は Ecma 規格として取り下げられた [Ecma International 2015b]。