Web および Web アプリケーションが進化し続けるためには、Web プログラミング言語の不断の改善が必要です。
今日の JavaScript 標準には、リッチでグローバルな Web アプリケーションを構築するために不可欠な、いくつかの基本オブジェクトとライブラリ ヘルパーが含まれていません。
クパチーノにある Apple 本社で先週行われた ECMA TC39 の会合で、マイクロソフトは、Math、String、および Number オブジェクトの機能ならびにグローバリゼーションの強化を提案し、その参照実装を提供しました。
他のコミュニティ メンバーも意見できるように、これらの参照実装は HTML5 Labs で公開中です。ぜひプロトタイプをダウンロードし、使用法のデモを示すサンプルの Web ページをいじってみてください。試していただいて、ご意見やご提案があればコメント欄にお寄せください。
この提案で追加されるオブジェクトとライブラリ ヘルパーは、以下のように少数ですが、これらにより、対応が待たれていた数多くの機能が提供されます。
このプロトタイプ実装は、Windows 7 で実行する場合、363 のロケール、18 の数体系、多くの日付パターンのほか、グレゴリオ暦、イスラム暦、ヘブライ暦、仏暦、韓国暦、および和暦もサポートします。
HTML5 Labs で公開された過去のすべてのリリースと同様、これは無期限に有効なサポート対象外のコンポーネントです。評価目的のみに使用し、実稼働アプリケーションでの使用は避けてください。
コンピューティング資産を大量に消費する Web アプリケーションを構築しようとするとすぐに気付くことですが、JavaScript に組み込みの Math ライブラリには、C++、.NET、Java、および Python といった他のプログラミング言語プラットフォームでは長年提供されている cosh や log10 などの基本的機能が欠けています。また、String および Number についても、今日のプログラミング言語プラットフォームに共通の基本機能である、String が特定の文字列で始まるかどうかの検証や、Number の型が整数かどうかのチェックをサポートする必要があります。これらについては、Math、String、および Number API への機能追加提案で言及されています。
これまで Web アプリケーションのグローバル展開がネイティブ アプリケーションよりも困難であった理由は、JavaScript が OS 標準の日付形式および通貨形式に対応していなかったためです。
上の参照実装で提供されているグローバリゼーション API を使用すれば、アプリケーションは、ロケール固有の数値形式と日付形式ならびに他言語の文字列を正しく処理できます。このライブラリによって、開発者は特定のロケールの日付と数値を表示し、文字列の並べ替えおよび検索を目的とした照合オプションを設定��きるようになります。また、日付形式および数値形式を設定して、イスラム暦のカレンダーを使用したり中国元通貨に合わせて数値を表示したりすることができます。
こうした改善により、JavaScript アプリケーションで、ロケール固有の日付や数値を正しく表示するためにサーバーへのラウンド トリップを実行する必要がなくなり、エンド ユーザーへの応答速度が向上します。
これらの提案は JavaScript の進化という大きな流れの一部にすぎません。1998 年の時点では、複雑な JavaScript アプリケーションといってもコードの行数は数十行程度でした。2008 年になると、Hotmail、Gmail、および CNN.com など、当時最先端の Web アプリケーションで数十万行が実行され、今日では 100 万行もの JavaScript コードを使用した Web アプリケーションが存在します。
これらの Web アプリケーションはデスクトップで実行するアプリケーションに近づいています。すなわち、ページの切り替えが減り、クライアント側での処理が増え、頻繁にサーバーとのラウンド トリップを繰り返すのではなく、データの不定期な急増のみサーバーで対応するようになっています。
JavaScript はこれらのニーズに応えるように進化しています。ここで重要なのは、開発者がこれまで各自の Web サイトに投じてきたすべての投資とスキル セットを尊重し、新機能の互換性を重視した段階的な導入を行っているという点です。
この原則の管理団体である TC39 が推進するコミュニティ プロセスを、私たちは強く支持しています。
TC39 の ECMAScript 5 に対する取り組みは、Web プラットフォームにおける Javascript の着実な前進と言えます。ES5 の設計に用いられた原則の一部 (以下を参照) は、JavaScript 標準の将来のバージョンが準拠すべき指針を示しています。
マイクロソフトは TC39 と協力して、次期 ECMAScript 標準に向け、上記のアプローチをできる限り広範囲に適用すべく尽力しています。
将来に目を向けると、JavaScript のコア ランタイムをさらに進化させるのに絶好のチャンスが到来しようとしています。私たちは、HTML5 Web サイトを構築する開発者との議論から、最も重要なのは以下の領域であると認識しています。
大規模なアプリケーションを構築する場合、高品質なオーサリング機能やツールの活用が不可欠になります。
そのような場合は、クラスなどの高度な抽象化およびその他の一般的なプログラミング パターンを基盤として、ツール利用のエクスペリエンスを向上させることができます。
数十万行の JavaScript コードから成る Office Web アプリケーションは、主に Script# をベースに記述されており、JavaScript にコンパイルされ、今日の各種ブラウザーで実行できるようになっています。Google Web Toolkit などのツールセットも同様のアプローチを採っています。最近では、Traceur や CoffeeScript などの変換コンパイラ ライブラリによって、JavaScript への追加構文や、完全な代替構文も、今日のブラウザーでランタイムへの変更なしに処理可能なことが実証されています。
JavaScript には基本的な欠陥があり、これらのシナリオをサポートするには JavaScript の構文およびランタイムからの “決別” が必須であると予告する向きもあります (Dart の例など)。私たちはこうした見解には同意しません。TC39 委員会の参加者として、標準ランタイムを拡張し、大規模な JavaScript 開発のサポートに必要な構文機能を既存の JavaScript 標準の上に構築できると確信しています。
過去数年間、TC39 は、ECMAScript 標準に対するさまざまな新機能の追加案を採用してきました。TC39 の現在の取り組みは、次の 2 分野が中心になっています。
私たちは JavaScript ランタイムの改善を優先しています。Web の機能を根本的に左右する要素であるためです。TC39 を通じて、私たちは上記のような機能が開発者の基本ツールとなるよう働きかけています。
Web が Web サイト主体から Web アプリケーション主体に移行し、Web 開発者が HTML5 で新しいエクスペリエンスを構築しているなかで、JavaScript もシンプルさ、柔軟性、パフォーマンスを犠牲にすることなくこうした移行を実現する必要があると私たちは理解しています。それを成功させる最善のアプローチ方法は、Web 開発者コミュニティによる広範かつ段階的な導入を促進することです。
コミュニティで提案されるアイデアの多くは、こうした考え方を支持しています。マイクロソフトは ECMA TC39 標準化団体において、JavaScript のコア ランタイムの改善に向けたより適切な提案の作成に、引き続き取り組んでいきます。そして、何よりも重要な点として、標準化は、Web プラットフォームで最も必要なものは何かに関する Web 開発者との議論をもとに進める必要があります。
どうぞご意見をお寄せください。皆さんがこの議論に今後も参加してくださることを期待しています。
—Shanku Niyogi、Amanda Silver、John Montgomery、Luke Hoban、Steve Lucco - JavaScript チーム