株式会社ミツエーリンクスの渡邉卓です。昨年の「2016年のWeb標準」と同様に、2017年もWebコンテンツのフロントエンド設計および実装に関連した各種標準や、周辺領域の動きに関する短期的な予測を寄稿させていただきます。
2017年のWeb標準については「HTML 5.1およびHTML 5.2 - HTML Living Standardとの乖離」「IE9のサポート終了」「CSS Flexible Boxの利用増加 - ただし旧仕様とバグに注意」「ECMAScript 2017」「各Webブラウザ、Adobe Flashのブロック開始」をキーワードとして取り上げます。
HTML 5.1およびHTML 5.2 - HTML Living Standardとの乖離
2016年11月1日、HTML 5.1がW3C勧告になりました。しかし、各ブラウザベンダーは(Microsoftを除いて)W3C HTML 5.1ではなく、WHATWG HTML Living Standardの改訂に注力しています。
これはなぜでしょうか?
実は、HTML5がW3C勧告として世に出る前段階である2012年の時点で、HTML Living Standardの管理団体であるWHATWGとW3Cは袂を分かつことになっていたのです。以後、W3C側は独自にHTML5、およびバージョンアップ版であるHTML 5.1の編纂を進めました。その編纂も、HTML Living Standardから文章を引っ張ってくるだけであったり、独自の文章を加筆してHTML Living Standardとの整合性を放棄するなど、ずさんな状態になっているようです。この事態を、WHATWG側のエディターであるIan Hickson氏は、「剽窃」(Plagiarism)という強い語を用いて非難しています。また、2016年9月に行われたW3C TPACにおけるWeb Platform Working Group(WPWG)会議では、23日に出席者のChaals氏から「我々の唯一の解決策は、HTMLの作業を止めることだ」という発言があるなど、W3C側からも2つの技術文書(W3C HTMLとWHATWG HTML Living Standard)が併存していることに対する懸念が表明されています。
前述した事情があるためか、WHATWG HTML Living StandardとW3C HTML 5.1とでは、内容に大きな乖離が発生してしまっています。ごく一部ではありますが、乖離の解説を試みている記事があるため、一読をおすすめします。
HTML 5.2の編纂もすでに始まっており、こちらは2017年11月1日にW3C勧告を目指すという工程表がLéonie Watson氏によって提案されています。
2017年は、HTML 5.1が勧告になったものの、HTML Living Standardとの乖離がさらに加速しています。HTML 5.1は以前と比較して参照されることは稀になっていき、そのかわりにHTML Living Standardがより参照されていくようになるでしょう。
IE9のサポート終了
ついに、IE9を擁するWindows Vistaの延長サポート終了日が間近となりました。Windows Vistaの延長サポート終了日は、2017年4月11日です。
IE10は、2016年1月12日のWindows 8サポート終了(ヘルプページ)に伴い、サーバー製品でのみサポートが継続されています。一般ユーザーがサーバー製品を利用することはまずないため、IE10のサポートを切っても問題は最小限にとどまります。
2017年は、4月11日にIE9のサポートが終了することから、IE11以降に対応し、IE10以下をサポートしないWebサイトが、ますます増えていくことになるでしょう。
CSS Flexible Boxの利用増加 - ただし旧仕様とバグに注意
前述したとおり、IE9のサポートが終了することで、大々的に利用できるようになるCSS仕様が存在します。それが、CSS Flexible Boxです。
ブラウザ側の実装状況も比較的良好であり、便利な機能でもあるので、今すぐにでも使っていきたいところです。
しかし、CSS Flexible Boxには罠が存在しているため、注意が必要です。罠というのは、IE11の存在と、各Webブラウザ側実装のバグです。
IE11は旧CR仕様のサポートを行ったため、現時点における最新CR仕様とは異なる挙動をとることがあります(実装上のバグもあります)。また、他のWebブラウザ(Mozilla Firefox、Google Chrome、Apple Safariなど)にも実装上のバグがあり、意図しない挙動をとることがあります。これらの旧CR仕様と最新CR仕様の差異に基づく問題や、Webブラウザ側における実装上のバグからくる問題は、現時点で解決されていないものが多く、煩雑です。
そこで、バグの一覧とその回避策(ワークアラウンド)を列挙したFlexbugsプロジェクト(日本語訳)の出番です。このプロジェクトでは、前述した旧CR仕様と最新CR仕様の差異に基づく問題や、Webブラウザ側における実装上のバグからくる問題を列挙し、その回避策を掲載しています。CSS Flexible Boxで予期しない挙動に出会った際は、Flexbugsの参照をおすすめします。また、ごく一部ではありますが、PostCSSプラグインであるPostCSS Flexbugs Fixesを用いることで、いくつかのバグを自動で回避してくれます。
CSS Flexible Boxと同じく、レイアウトに関連するCSS仕様であるCSS Grid Layout Moduleは、モバイルデバイスでのサポートが追いついていないため、大々的に利用できるようになる日は先のこととなりそうです。
2017年は、IE9のサポートが終了することで、CSS Flexible Boxの利用が増加することになるでしょう。しかし、各WebブラウザのCSS Flexible Box実装にはバグが残っており、その対応に苦心することにもなるでしょう。
ECMAScript 2017
2016年6月17日、ECMAScript 2016 Language Specification 7th edition(ES2016, ES7)の策定が完了しました。新しい策定プロセスによる年次リリースに移行してから最初の仕様です。新しい仕様の追加は小規模にとどまり、文書の差分も比較的少ないものとなっています。Webブラウザ(JavaScriptインタプリタ)側の実装も、徐々に行われつつあります。
そして、早くもECMAScript 2017の策定がスタートしています。現時点では、Stage 3になっている機能が8つあります。Stage 3になっている機能すべてがStage 4になるかは不明ですが、少なくとも可能性はあるということで、今後の動向に注目していく必要があります。
2017年は、新しい策定プロセスによる年次リリースが本格的に始動したこともあり、よりスピーディーな仕様策定・実装反映が行われることになるでしょう。
各Webブラウザ、Adobe Flashのブロック開始
ついに、Adobe Flashがデフォルトでブロック(明示的にクリックしないと再生されない)時代がやってきました。
Apple Safariは、バージョン10よりAdobe Flashのデフォルトブロックを開始しました。このブロックは例外を許さない強力なもので、あらゆるAdobe Flashコンテンツに影響します。
次に、Google Chromeは、バージョン56(2017年2月リリース予定)よりAdobe Flashのデフォルトブロックをすべてのユーザーに向けて開始する予定です(本来はバージョン55より開始する予定でしたが、延期されました)。Google Chrome 55では、1%のユーザーに向けてAdobe Flashのデフォルトブロックが開始されました。Google ChromeではSite Engagement Indexに基づいた、様々な条件に鑑みて作成されるリストにあがったWebサイトで、デフォルトでAdobe Flashを有効化する措置がとられます。このリストは2017年10月まで利用され、以降はすべてのWebサイトでAdobe Flashを実行するためにユーザーの確認が必要となります。
さらに、Mozilla Firefoxは、2017年中にAdobe Flashのデフォルトブロックを開始する予定(Firefoxサイト互換性情報)です。
最後に、Microsoft Edgeは、次回のリリースからAdobe Flashのデフォルトブロックを開始する予定です。最初はAdobe Flashに依存する、人気と目されたサイトには影響しないように設定されます。その後の数か月間、Adobe Flashの利用を監視し、例外とされたサイトのリストを徐々に短縮していく模様です。最終的には、すべてのWebサイトでAdobe Flashがデフォルトでブロックされるようになります。なお、Internet Explorerについては、何も告知されていません。
2017年は、Adobe Flashが様々なWebブラウザにおいてデフォルトでブロックされることにより、多くのWebサイトに影響がでる年となるでしょう。