株式会社ミツエーリンクスの渡邉卓です。昨年の「2012年のWeb標準」と同様、2013年もWebコンテンツのフロントエンド設計および実装に関連した各種標準や、周辺領域の動きに関する短期的な予測を寄稿させていただきます。
2013年のWeb標準については「HTML5仕様の安定化」「タッチスクリーン環境の混沌」「ECMAScript 6」をキーワードとして取りあげます。
HTML5仕様の安定化
2012年12月17日、HTML5仕様は勧告候補(CR)に到達しました。同時にHTML Canvas 2D Contextも勧告候補(CR)になっています。よほどのことがない限り、HTML5は2014年中に勧告(Rec)予定です。W3CによるHTML5仕様は、一旦安定したといえるでしょう。
このリリースでW3Cは、「HTML5」としては大規模な仕様追加・削除・変更をこれ以上行わないと明言したことになります。細かなバグ修正は行われるでしょうが、新しい要素やプロパティを追加したり、削除したり――といったことは行われなくなります。ある程度の規模・期間での開発・運用を想定している環境・システムでの導入が、以前よりもしやすくなったといえます。
とはいえ、「HTML」そのものの進化・変更が止まったわけではありません。WHATWGのHTML Living Standardと関連仕様群は相変わらず常時更新されていますし、W3C側も「HTML5.1」や「HTML Canvas 2D Context, Level 2」という形で次のマイルストーンを準備しています。HTML5.1は2016年中に勧告(Rec)予定のようです。
2013年は、HTML5仕様がある程度安定化したことで、より広範な環境での導入が予想されます。また、HTML5.1の登場により、HTML5との誤認や齟齬が起こりうるため、コミュニケーションの際は「どのHTML5なのか」をこれまで以上に明確なものとする必要があるでしょう。
タッチスクリーン環境の混沌
Windows 8が発売されたことにより、タッチスクリーンを主要な入力デバイスと位置づける環境が、また1つ追加されました。他にはiOS、Androidといった環境が該当します。
Webブラウザ上では、JavaScriptを用いてこれらタッチスクリーンへの入力をチェックできます。しかし様々な要因により、フロントエンド側プログラマの悩みの種となっているのが現実です。
iOS SafariおよびAndroid標準ブラウザでは、Touchイベント[1]を用いることでユーザーのタッチ入力をチェック可能です。しかし、後述するPointerイベントはサポートしていません[2]。なお、 タッチ入力が発生しても、マウスポインタ用のイベント(mousemoveなど)は発生しません。つまり、タッチ入力とマウスポインタで別々の動きをとりえるということです。
Windows 8 IE10では、Pointerイベント(厳密にはプレフィクスつきのMSPointerEventオブジェクトを用いるイベント)を用いてタッチ・ペン・マウスポインタによる入力を総合的にチェックできます。しかし、前述したTouchイベントはサポートしていません。
つまり、PC、iOS、Androidをすべてサポートしつつ、タッチ・ペン・ポインタによる特殊な入力が必要なUIで同一のJavaScriptコードを使いたい場合(例:設計思想にレスポンシブWebデザイン(Responsive Web Design; RWD)を採用した場合)、サポートされている仕様の差異が大きな障壁となりえます。またAndroidではバージョン間で挙動が異なっていたり、同一バージョンであってもデバイス(機種)によって挙動が異なる問題も残っています。
現時点ではこれらの差異を吸収するライブラリの決定版は存在しておらず、フロントエンド側のプログラマが直接解決するしかありません。
2013年は、タッチスクリーン環境の多様化と実装の差異により、互換性にまつわる問題が発生すると予測できます。特にレスポンシブWebデザインを採用した場合のように、複数のタッチスクリーン環境を考慮しなければならないときは注意しましょう。
ECMAScript 6
昨年はECMAScript 5.1の話題を取りあげました。その際特に言及はしていませんでしたが、ECMA-262 6th Edition(ECMAScript 6, ES6)の策定は当時から開始されており、着実にドラフトの版を重ねています。
リリースの時期については「未定である」としか言及できません。議論用のメーリングリストでも、それらしき話題が出てきていないためです。
とはいえ仕様はようやく形を整えつつあり、実装も進みはじめています。仕様の一部に関する説明は、Brendan Eich氏の解説(参考邦訳)が参考になるでしょう。
2013年は、まだECMAScript 6について過敏に反応する必要はないと考えます。しかし、ECMAScript 5および5.1は、その仕様策定完了(2009年12月)からわずか2~3年で主要な処理系の実装がほとんど完了したという事情があるため、今後の動向を注視していく必要がありそうです。