現在、W3C(World Wide Web Consortium)では、HTML5標準仕様の策定作業が進んでいます。Firefox、Google Chrome、Safari、Operaといった各Webブラウザはアップデートを活発化し、HTML5の仕様を取り込んだ新機能の実装を進めています。シェアの高いInternet Explorer(IE)は、現バージョン(IE8)ではHTML5対応の遅れが目立ちますが、次期版のIE9ではWeb標準に準拠したHTML5対応が強化されます。

 HTML4の仕様が1997年に公開されて以来、Webアプリケーションは、Ajaxによるリッチなコンテンツの実現、jQueryなどのJavaScriptライブラリによる開発生産性と互換性の向上、といった過程を経て進化してきました(表1)。そして、IE9がリリースされるであろう2011年には、ついにHTML5時代が幕を開けます。HTML5時代を迎えて、JavaScriptプログラミングはどのように変わるのでしょうか。

表1●HTML4時代からHTML5時代への変遷
表1●HTML4時代からHTML5時代への変遷
[画像のクリックで拡大表示]

裏技や高度なハックを標準APIとして定義し直す

 実は、HTML5で標準化される機能のほとんどは、従来のWebアプリケーション開発において、ある種“裏技”として発明されたり、高度なハックとして利用されてきた手法を、再実装・定義し直したものと見ることができます。従って、既にこうした裏技やハックを使っている人にとっては、HTML5時代になったからといって、Webアプリケーションでできることが、これまでに比べて大きく変わるわけではありません。

 しかし、こうした裏技的な機能を標準化してAPIとしてWebブラウザに実装することで、従来に比べてずっとスマートな記述で、高速実行が可能なJavaScriptプログラムを開発できるようになります。

 例えば、従来の「XHR」*1ではドメインを越えた通信が禁止されていましたが、強い必要性により「JSONP」*2が発明されたり、iframe経由での回避ハックが提案されたりしてきました。これがHTML5では、「Cross-Origin Resource Sharing」としてアクセス許可の手段が標準化されました。

 ほかにも例えば、シングルスレッドで実行されるJavaScriptプログラムで並列処理を行うために、setTimeoutを使った擬似マルチタスクの実装が行われたりしていました。HTML5では「Web Workers API」を使うことで、JavaScriptプログラムをバックグラウンドのスレッドで実行させることが可能になります。さらに、従来はFlashを使って実装していたような機能を、HTML+JavaScriptで実現するための仕様もたくさんあります。

 現在普及しているすべてのWebブラウザで、HTML5の機能が利用できるわけではありません。しかし、スマートフォンのWebブラウザはHTML5の実装が進んでおり、今すぐにも使える状況にあります。業務案件でも、対象とする環境によっては適用可能でしょう。

 以降では、HTML5時代におけるJavaScriptプログラムの特徴を、過去のコードと対比しつつ、三つの例を挙げて説明します。