HTML5完全準拠をうたったIE(Internet Explorer)の新バージョン「IE9」ベータ版が2010年9月15日に一般公開になった。Webブラウザーシェアの約6割を占めるIEであるが、現バージョンであるIE8は、HTML5対応の点でFirefoxやGoogle Chromeなど主要なライバルWebブラウザーに大きな遅れをとっている。ベータ版とはいえ、HTML5に対応したバージョンがリリースされたことで、HTML5に対する注目度は一気に高まっている(関連記事1)。

 HTML5の大きな特徴の一つは、Webアプリケーションのプラットフォームとしての機能強化である。現在のHTML4はHTMLのタグの仕様を規定するものだ。そのためHTML4をベースとしたWebブラウザーでは製品ごとにJavaScriptプログラムの挙動が異なることがあり、それがWebアプリケーション開発者にとって悩みの種になっている。HTML5では、タグに加えJavaScriptのAPIを仕様として規定する。それによって、Webブラウザー間でアプリケーションの互換性が高まると期待されているのだ。

 もちろん、現実はそう簡単ではないだろう。筆者は最近、原稿として受け取った「HTML5+JavaScript」のコードの動作を、HTML5対応が進んでいるとされるSafariで確認していた。そこでJavaScriptオブジェクトの属性値をセットする際、class属性の値を、「.(ピリオド)」でつなぐプロパティでセットできなかったので、setAttributeメソッドを使う必要があった。念のためにChromeで動作を調べてみると、こちらではclass属性の値をプロパティとしてセットできることが分かった。SafarとChromeはいずれも、HTMLレンダリングエンジンとして、オープンソースのWebKitを採用している。にもかかわらず、筆者のわずかな経験においてすら、動作の差異が見つかったのである。

 HTML5はまだ仕様策定中であるから、こうした問題は今後減っていくと考えることはできる。逆に、仕様がまだ確定していない段階からベンダーが次々に対応Webブラウザーをリリースすることで、ベンダー間の差異が大きくなっていく可能性もあるだろう。後者の場合、現在と同様、Webアプリケーション開発者がWebブラウザーごとの対応を迫られるようになる。Webアプリケーションを開発するたびに、Webブラウザーの種類やバージョンを指定する必要性が生じることも現実味を帯びてくる。

Objective-Cの代わりに使う

 ではHTML5は当面は様子見かと言えば、そんなことはない。現時点でも、HTML5の有用性が明らかな用途がある。それは、iPhone/iPad向けアプリケーションの開発である。通常、iPhone/iPad向けのアプリケーションを開発する際には、開発者は基本的にObjective-Cでプログラミングをする必要がある。それを、Objective-Cではなく、HTML5(+JavaScript)を使った、iPhone/iPad限定のWebアプリケーションとして開発してしまおうというわけである。

 iPhone/iPad向けのアプリケーション開発にHTML5を使うメリットとして、多くの開発者にとって初めて学ぶ言語であるObjective-Cよりも、HTML5(+JavaScript)を学習するほうが容易であろうことが挙げられる。さらに、上述したように、現時点でHTML5でWebアプリケーションを開発しようとするとブラウザ互換性を考える必要があるが、iPhone/iPad向けと割り切ればSafariで閲覧することだけを考えれば済む。iPhone/iPadでは、HTMLレンダリングエンジンを備えたWebブラウザとしてSafariしか利用できないからである(関連記事2)。HTML5で作成したページはSafari以外のブラウザからもアクセスは可能だが、「iPhone/iPad限定」を徹底したいなら、閲覧者のHTTPリクエストのヘッダーフィールドをチェックして、iPhone/iPad以外からのアクセスを拒否すればよい。

 もちろん、動きや見栄えに凝ったゲームなどであればObjective-Cでネイティブアプリケーションを開発する必要があるだろう。しかし、例えば、企業向けの業務アプリケーションであれば、機能的にはHTML5のWebアプリケーションで事足りる場合も多いのではないだろうか。HTML5ではオフラインでWebアプリケーションを使えるので、アプリケーションを利用する場面もさほど限定されない。

 iPhone/iPadアプリケーションの開発・導入を考えている企業であれば、現時点でも、HTML5は十分に検討するに値する選択肢と言える。それに、Objective-Cと異なり、HTML5による開発で培ったノウハウは、ほかでも生かしやすいはずだ。