はじめに
この連載では、今日のウェブ業界の流行語となっている「HTML5」をとりあげ、全6回に分けて、これまでの技術とどのような違いがあるのか、具体的にサンプルのコードを示しながら解説していきます。
過去の連載も読む
- 第1回:HTML5が注目を浴びる理由とは?
- 第2回:HTML4から変化したHTML5のマークアップ
- 第3回:HTML5で再定義された要素と属性
- 第4回:HTML5で実現できるマルチメディア系機能
- 第5回:HTML5で進化したフォーム機能
オープン・ウェブ
本連載では、HTML5のマークアップについてウェブページという視点で解説してきました。しかしこの視点は、HTML5やそれに関連する新たなウェブテクノロジーが扱う範囲のごく一部でしかありません。本連載の最後となる今回は、HTML5を含む次世代のウェブテクノロジーが進む方向性について見ていきましょう。
本連載の第1回では、HTML5のAPIについて簡単に触れました。そして、HTML、JavaScript、CSSといったウェブテクノロジーがさまざまなコンピューターデバイスのアプリケーション開発のプラットフォームになろうとしている点について言及しました。
HTML5仕様は、ウェブテクノロジーがアプリケーションのプラットフォームになるうえでは欠かせない仕様ですが、これが全てではありません。HTML5という用語はすでにバズワード化してしまい、明確な定義がないまま世の中で使われています。
W3Cでは、もともと1つだったHTML5仕様をいくつかに分離しています。ここでは、HTML5仕様と言えば、W3Cによって公開されたHTML5仕様、そしてもともと1つだったHTML5仕様から分離された仕様に限定して使います。分離された代表的な仕様の1つとして、HTML Canvas 2D Contextが挙げられるでしょう。
HTML5仕様には、さまざまなAPIが盛り込まれています。video
要素やaudio
要素に付随するAPI、canvas
要素に付随するAPI、さらに、ドラッグ&ドロップ、オフラインなどが挙げられます。しかし、HTML5仕様だけでは、ウェブページがリッチになることには違いありませんが、アプリケーションプラットフォームとしては不足していると言えます。
HTML5という言葉がこれほどに注目を浴びているのは、HTML5仕様だけでなく、そのほかのテクノロジーも含めて、ウェブテクノロジーがアプリケーションプラットフォームになり得ると考えられるからなのです。ここで言うウェブテクノロジーとは、具体的には、HTML、CSS、JavaScript、そしてJavaScript(ECMAScript)を通して利用できる各種APIのことを指します。これらのテクノロジーは、誰にでも仕様の詳細が公開され、ロイヤリティー(特許料)が発生せず、特定の企業や個人が独占していない点が特徴です。ここでは、それらを総称して、オープン・ウェブと呼びましょう。実際に世間が注目しているのは、HTML5仕様単体なのではなく、このオープン・ウェブなのです。
オープン・ウェブ仕様
オープン・ウェブのうち、HTML、CSS、APIは、主にW3Cといったウェブ標準の策定団体によって策定されますが、実際には、ブラウザベンダーやハードウェアメーカーなどの関係者の協力のもとで作り上げられていきます。そして、新たに考え出される仕様には、彼らが目指す方向性が反映されることになります。
ここでは、今現在、どのような仕様が策定されているのかを具体的に見ていきましょう。もちろん、これらの仕様は策定段階であり、策定状況は仕様によって大きく異なります。そして、すべてがブラウザに実装されているわけではありません。しかし、オープン・ウェブが目指している方向性は読み取れるはずです。
ストレージ関連
ブラウザ側にユーザーのデータを蓄積するために、これまでCookieが使われてきました。しかし、蓄積できるデータは非常に小さく、さらに、データを蓄積されたあとは常にそのデータをサーバーに送信する仕組みでした。Cookieはセッション管理やユーザートラッキングに最適でしたが、一方、単純に大きなユーザーデータを蓄積しておく仕組みが求められてきました。それを実現するのがWeb StorageとIndexed Database APIです。
Web Storageは、すでに最新のブラウザには実装されており、今でも利用できます。さらに今後は、複雑なデータ構造や大きなデータを扱うために、Indexed Database APIが期待されています。
ファイル関連
これまで、プラグインを使わない限り、JavaScriptからデスクトップのファイルを扱うことができませんでした。しかし、File APIの登場により、デスクトップ上のファイルをドラッグ&ドロップやfileタイプのinput
要素経由でユーザーが選択することで、そのファイルのデータを読み取ることができるようになりました。すでにFile APIは一部のブラウザで実装されています。
さらに、ファイルの読み取りだけでなく書き込みまで実現するFile API: Writerや、ディレクトリを扱うFile API: Directories and Systemが策定中です。デスクトップ上のファイルやディレクトリを直接的に自由に扱うことができるわけではありませんが、これらファイル関連のAPIによって、ウェブアプリケーションが、よりデスクトップアプリケーションに近づくと言えるでしょう。
ネットワーク関連
過去にAJAXが流行し、今では当たり前のように使われているXMLHttpRequestも、今ではその後継にあたるXMLHttpRequest Level 2が策定中です。さらに、サーバープッシュを実現するServer-Sent Events、双方向通信を実現するWeb Sockets APIが策定されています。
こういったネットワーク関連のAPIを使うことで、リアルタイムコミュニケーションが実現します。