読者です 読者をやめる 読者になる 読者になる

ふろしき.js

Web + Mobile + UX + Performance Tech

古いWebシステムの維持は「互換表示」から「改修」へ

近年、HTML5というキーワードが世の中を騒がせています。それと同時に、Webブラウザやその上で動作するインタラクティブなコンテンツは、プラグインからWeb標準へその手段を徐々に移行しつつあります。

しかし一方で、利用者側のIEのバージョンがなかなか上がらないため、その恩恵は全く受けれていないと考えている人も多いのではないでしょうか。HTML5はHTML CanvasやWebSocketのような派手な機能に目が行きがちですが、開発者にとっての真のメリットは、Webブラウザをオープン性の高いプラットフォームへ変化させたこと、そしてそれがWeb開発の現場が抱えていた問題を改善へ向けた点にあります。

改善の結果、IE11からはライフサイクルの長いWebシステムの維持の考え方を大きく見直しました。本記事では、IE11で打ち出したドキュメントモードの非推奨化の考え方と、既存のWebシステム維持方法の変更点について解説します。

1. IEの設計方針の変化

★ 1.1. 「XHTML1.0」→「HTML5」

HTML4.01、XHTML1.0の時代は、Webはポータビリティの高いドキュメント集であり、Webブラウザもただのドキュメント表示ツールでしかありませんでした。Flashなどのプラグインや、GoogleMapsやjQueryの登場により、インタラクティブなアプリケーションを実現することも出来ましたが、Web標準はそのような表現ができることを想定はしていませんでした。

この状況に不満を感じたWebブラウザベンダは、WHATWGというW3Cとは別の標準化団体を立ち上げました。WHATWGでは、実世界のWebブラウザ利用者のニーズに沿った仕様の策定を目指すべく活動し、結果としてWeb技術はアプリケーションプラットフォームとしてのポテンシャルを獲得するようになりました。
(※参考 : What is the WHATWG? )

★ 1.2. 「独自実装」→「Web標準への準拠」

f:id:furoshiki0223:20131120021536p:plain

かつてIEは、大量のActiveX機能、CLRの動作、独自のタグ定義など、他の競合ブラウザにシェアを奪われないよう、独自機能によるロックインを行っていました。IEのバージョンアップを行えるようにするには、過去の独自実装機能を動作させ続ける必要があります。このためIEは、過去のレンダリングエンジンを新しいIE上でも実装し続ける必要に迫られました。IE8からは、この状況を改善するため、独自実装からWeb標準への準拠へ方針をシフトしました。
(※参考 : Microsoft Expands Support for Web Standards - Microsoft )

IEはこれまで独自実装により安定した機能を得ていました。しかしIE8からは、仕様策定中のHTML5の機能を部分的にサポートするようになり、またCSS2.1についてもベンダプレフィックスを与えることで試験的に実装するようになりました。
(※参考 : Microsoft CSS Vendor Extensions - Microsoft )
(※参考 : HTML5 - Microsoft )

HTML5が高いポテンシャルを有するようになると、実世界のニーズを埋めるために利用されていた独自実装やプラグインの価値は一気に低くなりました。そして現在、IEはHTML5機能の実装を積極的に行い、プラグインの利用を排除する方針で開発を進めています。IE10のMetro版は、リリース直前までFlashを含めプラグインを廃止するという宣言まで行っていました。(実際は制限付きになりましたが。)

現在、Microsoftの公式の見解として、IEがプラグインを減らしWeb標準の実装にこだわるモチベーションは、マルチデバイス環境下での高いユーザ体験の実現を理由としています。Windows 8のような、デスクトップとスマートデバイスの違いを意識させないデバイス上で、Web技術の持つマルチデバイス実装の力を借りることにより、高いユーザ体験を提供しようとしています。
(※参照 :Metro style browsing and plug-in free HTML5 - building Windows8)

2. IEが求める既存システムの維持方法の変化

★ 2.1. ドキュメントモードの煩雑化

前章でも述べた通り、IEは6以降、過去の独自実装をいつまでも抱え続けなくてはいけないことに苦労していました。

実際にIE11では、IE5(旧Quirksモード)、IE7(互換表示モード)、IE8、IE9、IE10、IE11(Edgeモード)と、合計6つのレンダリングエンジンを内部で抱えています。QuirksモードについてはIE5の独自機能に加えてHTML5機能が多少動作するような工夫がIE10以降行われるようになりました。過去のレンダリングエンジンにまでメンテナンスが必要な状況へ追い込まれてしまいました。
(※参考 : 相互運用可能な Quirks モード - Microsoft)

しかし、Web標準への準拠を進めたIEは、機能の安定化に加えて、機能/動作検出というWebデザインのベストクラクティスが広まり、バージョンを意識する必要が薄れてきました。特に、IE8からIE9にかけてはWeb標準に注力した仕様変更を行いましたが、IE9から10は、XHRの改善が目つくものの、多くは独自機能の削除とWeb標準機能の追加に注力されているように思えます。
(※参考 : IE9 の互換性の変更点 - Micosoft )
(※参考 : IE10 の互換性の変更点 - Microsoft)

IEの使用レンダリングエンジンの種類を表すドキュメントモードは、「以前のバージョンの動作をエミュレートできる場合がある」という表現で紹介されてきましたが、同時にそれが一時的なソリューションであるという説明も行ってきました。

多くの企業が、このドキュメントモードの恩恵を受けて、既存のIE6でテストされたシステムを残したまま、Windows7+IE8以上への移行を行うことができたはずです。しかしIE11からは、この対策は通用しなくなります。

★ 2.2. 古いWebシステムの維持は「互換表示」→「改修」

IE11は、これまで過去のコンテンツを維持するために利用されていた互換表示(ドキュメントモード)を、「一時的なソリューション」から「非推奨」というステータスへ変えています。また、ドキュメントモードは今後、サポートされなくなる可能性があるという説明もされています。このステータスの変化は、IE10とIE11の間で、HTMLドキュメントの解釈にも大きな変化を与えているようです。
(※参考 : IE11 の互換性の変更点 - Microsoft)
(※参考 : ドキュメント モードの非推奨 - Microsoft)

これまで既存のWebシステムは、次の更改までの間はドキュメントモードを利用して一時的な対策を行うのが一般的でした。しかしIE11以降、ドキュメントモードは利用せずに、Webコンテンツの制作/開発者側で改善を行う必要があります。古いWeb標準で記述されていたHTMLドキュメントは「Quirksモード(IE5+αのレンダリングエンジン)」で動作していましたが、IE11からはドキュメントモードが非推奨であるため、Edgeモード(IE11のレンダリングエンジン)で動作するように仕様変更されています。
(※参考 : IE11ではDOCTYPE宣言がチェックされない - ふろしき.js)

また、互換表示機能に含まれる全てのレンダリングエンジンから、部分的に古い機能が削除されています。例えば、CSS ExpressionsはIE7以下の互換表示機能だと動作していましたが、IE11ではQuirksモード(IE5)でもIE7互換モードでも動作しない仕様へと変更されています。互換表示とは呼ばれていますが、互換性は失われているものとみなすべきです。
(※参考 : expression of CSS is not enabled in compatibility mode with "Internet Zone" - Microsoft Connectの回答より)

既存システムを維持しIEのバージョンアップを行うには、IT管理者によるドキュメントモード(互換表示)の操作により解決できることが多かったですが、今後この手段は利用できなくなるものと見なすべきです。IEは過去にも、一つ前のバージョンで「サポートされなくなる可能性がある」旨を警告し、バージョンアップ時にサポート終了へ遷移させるというアクションを繰り返し行ってきました。このような過去の傾向から、ドキュメントモードはIE12もしくはその先のどこかのバージョンで、サポートされなくなると予想できます。

企業システムのIT管理者は、これまで先延ばしにしてきた既存資産の改修を、IEのバージョン11以上へのアップデートへカウントダウンが始まっている今、確実に進めていく必要があります。仮にIE11が標準ブラウザでない場合も、長期的なコスト最適化のため、今後開発するシステムがIE独自機能に依存しない設計となるよう、統制を行わなくてはいけません。

開発者はバージョンアップ時の改修のリスクを減らすため、相互運用性に対して注意を払う必要があります。特に、IE10以下で新規開発を行う場合、必ずDOCTYPEを正しく宣言し、最新のレンダリングエンジンで動作することを確認した上でテストして下さい。誤ったDOCTYPEの宣言は、IE10以下であればどのバージョンであっても互換表示の恩恵を受けるため、問題は小さく見えます。しかしIE11以降で、問題は確実に大きくなります。

広告を非表示にする