あけましておめでとうございます。株式会社ミツエーリンクスの渡邊卓です。昨年の年初、弊社木達による「2009年のWeb標準」をお読みになった方は、執筆者の変更に「おや?」と思われるかもしれません。今年は縁あって私が執筆を担当させていただくことになりました。
2010年も、昨年と同様にWebコンテンツのフロントエンド実装に関連した標準とその周辺の動向について、短期的な予測を書かせていただきます。引き続きよろしくお願いいたします。
さて、2010年のWeb標準については「ECMAScript 5とJavaScriptエンジン」「HTML5と周辺仕様」「CSS 2.1・CSS3 モジュールとWebブラウザアップデート」「JIS X 8341-3改訂とW3C DOM」をキーワードとして取りあげます。
ECMAScript 5とJavaScriptエンジン
去る2009年12月3日、JavaScriptの基盤としてEcma Internationalによって策定されている仕様、ECMA-262 5th Edition(ECMAScript 5, ES5)が正式な仕様として公開されました。この仕様は以前ECMAScript 3.1(ES3.1)と呼ばれていたもので、ECMA-262 3rd Edition(ECMAScript 3, ES3)の正式な後継仕様となっています。
ES5は、ES3から紆余曲折を重ねた末、ようやく策定に至った経緯があります。その一端をECMAScript Harmony(邦訳)という文書から垣間見ることができます。
各Webブラウザベンダは、以前からそれぞれが提供するJavaScriptエンジンにES5仕様の先行実装を行っていました。2010年は仕様の正式な公開を期に、2009年以上に各種JavaScriptエンジンへのES5仕様実装が活発になるのではないでしょうか。
とはいえ、さまざまな壁を乗り越えなければならないのは確かです。Object
オブジェクトに追加された内部プロパティを設定可能なメソッド群の処理をどうするかや、Strictモードの実装など、時間のかかりそうなものはいくつもあります。他のES5仕様実装がひと段落した後、何らかの形で停滞が訪れる可能性は考慮しておいてもよいでしょう。
現状、すべてのES5仕様を実装できたJavaScriptエンジンは出現していません。ES5仕様の一部を実装中であり、一部は実装済であるという状態です。とはいえ、ES5で追加された新機能が利用できないというわけではありません。すべての実装が完了・安定し、ノウハウが蓄積され、未対応のWebブラウザが(何らかの形で)駆逐されるのを待っていたのでは、5年後、10年後まで使えないという話になってしまいます。
以前からもそうであり、今後もそうなるのでしょうが、「実装済なら使い、未実装なら独自に実装」という設計思想に基づいたコードを利用することで、JavaScriptエンジン間の差異を吸収し、すべてではないにせよES5仕様の一部を利用する、という流れは変化しないでしょう。
JavaScriptエンジンの高速化競争も挙げておきましょう。Mozilla Firefox 3.5にはTraceMonkey、Apple Safari 4にはNitro(SquirrelFish Extreme)が搭載されました(共に2009年リリース)。Google ChromeのV8とあわせると、3種の(それぞれ設計の異なる)JITコンパイラ搭載JavaScriptエンジンが実用段階に入ったこととなります。また2009年12月22日にテスト目的で公開されたOpera 10.5 pre-alphaにも、新たなJITコンパイラ搭載JavaScriptエンジンCarakanが搭載されました。実際にテストできる評価版は出ていないものの、IE9のJScriptエンジンにもテコ入れが行われるようです。
2010年もまた、2009年同様にJavaScriptエンジンの高速化に焦点が当てられ続けるでしょう。この競争は独自拡張問題とは切り離して考えることができるため、ユーザ側としては利点が多いという特徴があります。欠点は、コードベースが比較的新しいため、挙動が不安定になりやすいことでしょうか。
HTML5と周辺仕様
2009年は、特にGoogleが中心となってHTML5と周辺仕様の啓蒙活動が実施されました。その結果、「HTML5」というワードの認知度は高まったように感じられます。Webブラウザベンダや実際の利用者による議論も、より活発化してきています。W3Cが直々にHTML5 Japanese Interest Groupを発足させたり、Googleも準公式コミュニティとしてHTML5-Developers-jpを発足させたりするなど、日本語で議論が行える環境の整備も行われました。
W3CではXHTML 2 WGの活動終了が告知されました。XHTML 2は策定が停止され、XML 構文で表現した HTML
としてはHTML5(XHTML5として利用)が利用されることになります。XHTMLの今後に関しては、W3CによるFAQ(邦訳)を参照してください。
このように、2009年中にHTML5と周辺仕様をとりまく状況は大きな変化を遂げました。
しかしながら、2009年中から「HTML5」が有名になった弊害も徐々に現れてきました。誤解・誤用です。一時期、section
要素が本来の意味づけとは別の用途で乱用される事例が多発し、「section
要素を削除すべきでは」という議論が出てくるまでに火種が拡大したこともありました。
2009年がそうであったように、2010年もまた「HTML5で作成してみた」ことが少なからず話題となっていくでしょう。それは、ノウハウの蓄積やフィードバックを返す材料になるという点で、非常に有意義なことではあります。
と同時に、懸念すべき点でもあります。「HTML5で作成してみた」文書に何らかの誤りがあった場合、それらがすぐに修正されない可能性があるからです。比較的フットワークの軽い小規模なWebサイトならば、指摘を受けた関係者が即座に修正をかければ問題ないでしょう。しかし、比較的大規模なサイトでは――その運用体制にもよりますが――一旦構築してしまった後は、なかなか大規模な修正をかけられない場合があります。こうした修正されないままの誤ったHTML5文書が増えることは、好ましくありません。
HTML5があるからといって、HTML 4.01、XHTMLファミリ、ISO-HTMLといった勧告・策定済(X)HTML仕様が消滅するわけではありません。これらは、すべて2010年以降も残り続けます。HTML5は、あくまでも勧告・策定済(X)HTML仕様との(さまざまな意味における)後方互換性を保ちつつも追加、明記、改訂を行った(X)HTML仕様のひとつであり、過去の仕様を放棄するためのものではありません。
まだHTML5と周辺仕様は不安定です。すぐに利用する必要はありませんし、利用そのものが推奨されているわけでもありません。引き続き、安定した仕様として勧告・策定済(X)HTML仕様を利用し続けることができます。2010年中は、よほど特別な理由がない限りHTML5を採用する必要はないでしょう。
CSS 2.1・CSS3 モジュールとWebブラウザアップデート
弊社矢倉による連載にもある通り、現状におけるCSSの実質的な標準仕様はCSS 2.1とされており、2010年の勧告を目標としています。また同様に、CSS3の一部モジュールについても2010年中の勧告を目指しています。
各CSS3モジュールの一部は、既にWebKit(Apple SafariやGoogle Chrome)、Gecko(Mozilla Firefox)、Presto(Opera)といったレンダリングエンジンの公開版ないし開発版に実装されています。こうした状況に伴い、利用可能な先行実装を用いた、さまざまな利用例が取りあげられる機会が増えたように感じます。
CSS仕様の新実装やバグ修正が利用者に届く頻度――すなわちレンダリングエンジンのアップデート頻度が加速傾向にある点も重要です。現在、基本的にレンダリングエンジンのアップデートは各Webブラウザの次期バージョン公開時に行われます。例えばFirefoxなら3.5から3.6になると、Geckoバージョンも1.9.1から1.9.2に上げられます。
アップデートをとりまく環境は、日々変化し続けています。Operaはついに10.00から自動アップデート機能を実装しました。Google Chromeはバックグラウンドで利用者に気づかれることなくアップデートをかけ続けます。Firefoxも3.5から3.6へのバージョンアップ期間を短縮するようになったうえ、2010年のドラフト版ロードマップやTalkでは3.6、3.7、4.0の3バージョンをリリースする案も出ています。
2010年はFirefox、Safari、Chrome、Operaによって、より多くの試験的なCSS実装が、コンテンツ製作者の手元に届くこととなるでしょう。
肝心のIEに関しては、2010年中にもうひとつ進展があるかどうか、といったところでしょう。PDC09において発表のあったIE9は、まだ開発がスタートしたばかりといいます。IE8の頃と比較し、何らかの動きがあるのは1年程度後と仮定した場合、2010年12月頃に何らかの動きがあったらいいなという程度の期待を持つことしかできないでしょう。
JIS X 8341-3改訂とW3C DOM
2009年には「JIS X 8341-3 高齢者・障害者等配慮設計指針 - 情報通信における機器、ソフトウェア及びサービス - 第3部:ウェブコンテンツ」の公開レビューが実施されるなど、JIS X 8341-3改訂の動きが本格化しました。IBM アクセシビリティ・フォーラム2009の開催報告でも触れられていますが、JIS X 8341-3改訂は2010年中になる見込みのようです。
また、スマートフォンのアクセシビリティに関してもiPhone 3GSにスクリーンリーダであるVoiceOverが搭載されるなど、大きな動きを見せました。
さて、JIS X 8341-3改訂ではW3CのWCAG 2.0(邦訳)が取り込まれています。達成基準のうちレベルAに関しては、標準に準拠して意味的にも文法的にも妥当なマークアップを施していれば、一定数の項目を達成できるようになっています。
ここで問題になるのが、JavaScriptを用いたコンテンツです。レベルAだけでもJavaScriptを用いた制御に関連する項目が相当数ある(2.1、2.4.3、3.2など)うえ、マークアップに関連する項目にも注意を払う必要が出てきます。アクセシビリティ対応に注意を払っていないJavaScriptコード(特にライブラリとしてまとめられたもの)は、JavaScript側で生成したマークアップが不適切であったり、適切な挙動制御(キーバインドやフォーカス制御など)がなされていない事例がままあります。つまり、利用しているコードによっては、レベルAを対象とする場合でも、その達成が不可能になりえます。2010年中にJIS X 8341-3が改訂されれば、これらのJavaScriptコードにどう対処していくか、という問題に直面する人が増えることになるでしょう。
W3C DOM関連仕様に曖昧な点があったために各Webブラウザ間で実装の整合性がとれていなかったり、それに伴う細かいバッドノウハウが多かったりするといった悪条件が、実装を難しくしている現実もあります。この点に関しては2009年11月8日にDOM3 EventsのWDが更新され、より詳細かつ実装に配慮した仕様になるなど、一定の成果がみられました。またHTML5にはとても細かくDOM関連も包括した既存および追加のAPI、動作、エラー処理などの仕様が定義されており、これらが実装されれば更なる互換問題の解消に寄与するでしょう。しかし、いずれの仕様も規模が大きく、既存の挙動に影響するものもあるため、2010年中にすべてが実装されることはないでしょう。
実際の設計・実装者にとってはWCAG 2.0と対になる解説書(邦訳)が頼りになるでしょう。この解説書には、WAI-ARIA(邦訳)の利用も包括した、各達成基準を満たすためにとりうる方策が掲載されています。