2015年6月6日土曜日

de:code の「マイクロソフトの Web ブラウザのいままでとこれから」というセッションに参加してまいりました。

会社の Blog に書いたものですが、こちらにも転載します。

このセッションでは、日本マイクロソフトの春日井氏が、Internet Explorer (以下 IE) に関する振り返り(いままで)と、4月にサンフランシスコで開催された Build 2015 で発表された Microsoft Edge (コードネーム Project Spartan) (これから)という構成で、これまで IE で実現してきたこと。これから Microsoft Edge で実現しようとしていることについて説明されました。

いままで
IE はご存じの通り、現存する Web ブラウザの中では、最古参になります。そのため、互換性を維持しなくてはならないという足枷を多く持つブラウザです。特にマイクロソフトは、エンタープライズで使われることが多く、その足枷は他のブラウザと比較しても非常に重い物になります。

そんななか、IE9からマイクロソフトは、HTML 5、CSS 3、SVG 1.1 のサポートという大きな転換を決断します。それまでの互換性を維持しつつ、ブラウザのモダン化という、一見矛盾しているようにも見える方向性を打ち出します。その背景には、他社ブラウザの台頭という側面もあります。今でも IE は、ブラウザの中では 50% 近いシェアを持っていますが、Google Chrome や Firefox などのモダンブラウザの進化は目を見張るものがあり、モダン化の波は無視できない勢いになっていきました。そこでマイクロソフトは、互換性の維持とモダン化という相反する要求をひとつのブラウザで実現しようとします。

互換性を維持する手法として生み出されたのが「ドキュメント モード」と呼ばれるレンダリング エンジンの切り替えです。これは、古いバージョンの IE をエミュレートする仕組みですが、バージョンが上がるごとに複雑化していきました。春日井氏の Blog 記事で、IE11 でドキュメント モードが選択されるまでのフローチャートが公開されていますが、非常に複雑なものになっています。ここまで複雑化した IE の振る舞いは、マイクロソフトが維持するのがキツイだけでなく、私たち Web 開発者にとっても非常に苦しく、IE8 という非モダンな Web ブラウザがサポート対象になっていて、さらにシェアが一定数維持されているということで、「OLD IE PTSD」という言葉が生み出されるほど頭の痛い問題になっています。そんな中、マイクロソフトは、IEのサポートのポリシー変更を打ち出しました。2016 年 1 月からは、各 OS で最新の IE だけがサポートされるというものです。これにより、非モダン IE はサポート対象外になります。また、Windows 7, 8.1 から Windows 10 への無償でアップグレードできると発表されています。これにより、Windows 10 の標準ブラウザーである Microsoft Edge または、IE の最新バージョンである IE11 へのアップグレードが促進されることが期待されています。

これから
これからは、Microsoft Edge がマイクロソフトの Web ブラウザーの標準に変わっていきます。Microsoft Edge は、IE のレンダリング エンジンである Trident (MSHTML) からフォークされて実装された EdgeHTML というエンジンが搭載されています。これを実装したとき、22 万行の互換性に関わるコードが削除され、30 万行の新機能に関わるコードが実装されたそうです。
Living on the Edge
Microsoft Edge は、これまで Web 開発者が悩まされてきた課題を解決しようとしています。たとえば、Web 開発者が新しい機能を実装したいと思った時でも、IE がその機能をサポートしていないため、使用することができないことがありました。Microsoft Edge では「Evergreen」と呼ばれ、常に最新状態を維持することが約束されています。春日井氏が着ていた T シャツに書かれていた「Living on the Edge」という文字は、それを表現したものだそうです。Microsoft Edge は、互換性(Compatibility)を捨てて、相互運用性(Interoperability)を重視した Web ブラウザであるというのも大きな特徴の1つです。セッションの中では、Web 標準からどうしても外れなくてはならないとき、他のブラウザの挙動に”あわせる”という点が強調されていました。
そしてこれからを大きく支えるのが、最新機能の実装速度の加速化です。Mozilla に実装されて話題になった Asm.js 実装されたり、 (以前、ECMAScript 6 と呼ばれていた) ECMAScript 2015 にいち早く対応するなど、これまでにないスピードで実装が進んでいます。

最後に上でも記述していますが、Microsoft Edge では IE で実装されていたマイクロソフト独自の機能が削られています。たとえば、Active X  や BHO  を使ったブラウザ拡張、昨年セキュリティホールが見つかったことで記憶がリフレッシュされたVML、VBScript などがそれにあたります。ほとんどの機能は、すでに HTML 5 や CSS 3 に置き換え可能になっているため、これらの機能を使っている Web サイトでは、早期に移行することをお薦めします。エンタープライズの場合は、IE11 が引き続きサポートされるため、そちらを使い続けることができます。また、IE 8 と高い互換性を持つ Enterprise Mode が、Active Directory で設定可能になっているため、レガシー技術を使っているイントラサイトは、IE11 と Enterprise Mode を検証して見てください。

最後に
オープン化に大きく舵を切ったマイクロソフトですが、これからのコア インターフェイスになる Web ブラウザーに関しては、すでにある WebKit や Blink を使うのではなく、それらと高い相互運用性を維持しつつ、高速なエンジンを維持し続けることに決めたようです。相互運用性 100% 維持という簡単では、悲観的な見方もできますが、全社的にオープン スタンダードに向かっており、相互運用性を最重視することも公言しているため、これからの MS を信じて、僕ら技術者が、常にワクワクできる未来を提供してくれると思います。

2015年6月3日水曜日

Microsoft Edge FAQ を簡単に訳しました。

Microsoft Edge に関する FAQ がとっても有益なのにまだ翻訳されていないので、つなぎとしてざっくり翻訳しました。全文は翻訳していません。

私のお気に入りの標準やプラットフォーム機能がサポートされているかどうか知りたい。

Microsoft Edge Platform Status を参照してみてください。
もし、あなたの欲しい機能がまだ実装されていないのであれば、UserVoice にフィードバックをお願いします。

Windows 8 では、デスクトップとタッチでブラウザーが別だったけど Microsoft Edge は?

Microsoft Edge は、動的にデバイスタイプ(PC、タブレット、スマホ)や入力タイプ(マッチ、マウス、ペンなど)に最適化されます。

Windows 10 では、Microsoft Edge と Internet Explorer 11 の両方でテストが必要ですか?

Windows 10 では、新しいレンダリングエンジンを搭載した Microsoft Edge がデフォルトです。サイト開発者は、新しいエクスペリエンスは、Microsoft Edge でテストすればよいです。IE11 には、レガシー対応が含まれており、ユーザーは、他のブラウザー同様、IE11 をデフォルト ブラウザーとして選択することもできます。

Microsoft Edge と Internet Explorer 11 の違いは?

Microsoft Edge は、Windows 10 のデフォルトブラウザーで、モダン Web との高い互換性を期待しています。Web 開発者は IE を別扱いすることがありますが、Microsoft Edge は Web 開発者が別扱いしなくてもよいように設計されています。もし Microsoft Edge が他のブラウザーと違う動きをする時には @MSEdgeDev (https://twitter.com/MSEdgeDev) までご連絡ください。

エンタープライズ Web アプリや少数のサイトは、古い技術で作られていることがありますが、その時は IE11 でアクセスしてください。

Windows 7 や 8.1 ユーザーは、新しい Microsoft EdgeHTML レンダリングエンジンの Microsoft Edge を使うことができますか?

No. Microsoft Edge は、Cortana や Universal Windows Platform など、Windows 10 で動作するように設計されているため、以前のバージョンの Windows には提供されません。

Flash は、Microsoft Edge でサポートされますか?

はい。Adobe Flash は、Microsoft Edge に組み込まれてサポートされます。Adobe と密接に連携して、Windows Update を通じてサポートとサービスを継続します。

WebDriver は Microsoft Edge でサポートされますか?

WebDriver は、Windows Insider Preview の IE で有効になっています。Microsoft Edge の WebDriver は今年末までに提供予定です。

Microsoft EdgeHTML ってなに?

Microsoft EdgeHTML は、Microsoft Edge Webブラウザーと Windows 10 Web アプリプラットフォーム向けの新しい Web レンダリング エンジンです。2014 年初に MSHTML からフォークされ、IE 固有の振る舞いを削除して、標準ベースの互換性を確保しました。

MSHTML のアップデートは、セキュリティと信頼性の修正に限定され、今後は EdgeHTML だけが更新されていきます。

Microsoft はなぜ WebKit や Blink のような既存のモダンエンジンを使わないの?

Web は複数の独立した、Web 標準の相互運用性のある実装の原理に基づいて構築され、モノカルチャーへの対抗が重要だと考えています。フィードバックから MSHTML は、今日のモダン Web のエンジンではないことを聞きました。モノカルチャーのエンジンを避けるため、Blink と WebKit との相互運用性をより強化した新しいエンジンを設計しました。

Microsoft Edge はオープンソースにしないの?

現時点では、Microsoft Edge やそのプラットフォーム コンポーネントをオープンソース化する予定はありません。ロードマップやコアテクノロジーのロードマップをオープンにすることが重要だと理解しており、Microsoft Edge Platform Status をローンチしました。

現在の Trident エンジンと同様に新しいレンダリング エンジンをアプリに埋め込むことができますか?

はい。Windows 10 アプリは、最新の Microsoft Edge レンダリングエンジンをデフォルトで私用します。EdgeHTML.dll の Win32 WebOC ホスティングは、現時点ではサポートされていません。

Microsoft Edge はプラグインや拡張をサポートしていますか?

Microsoft Edge は PDF の閲覧と Adobe Flash を組み込み機能としてサポートしていますが、サードパーティー製のインストール可能なプラグインはサポートしていません。これにより、よりセキュアで、より信頼性の高いブラウザーを構築することができる。将来のアップデートで Microsoft Edge に新しく、モダンな拡張性モデルを採用する予定です。

Microsoft Edge は 、Silverlight や Java のような ActiveX コントロールや BHO をサポートしますか?

No. ActiveX コントロールと BHO はサポートされません。Active X コントロールの必要性は、ブラウザー間で相互運用性のあるモダン Web 標準 で著しく低下しました。モダン Web プラットフォーム をベースとした拡張モデルを計画しています。

どれぐらいの頻度で Microsoft Edge は更新されますか?

ブラウザー機能を更新するための決まったされたスケジュールはありません。Web 開発者やお客さまのために、常にエバーグリーン プラットフォームとして定期的に更新していくことにコミットしています。

Microsoft Edge のユーザーインターフェイスは、最終化していますか?

Windows 10 の残りと Microsoft Edge はアクティブに開発されており、いくつかのかの機能は現時点では完全に磨き切れていない可能性があります。もし、変更した方がよいと考える場合、Microsoft Edge Platform Suggestion Boxにフィードバックをお願いします。アプリ機能への提案や投票は Microsoft Edge Feature Suggestion Box か、Microsoft Edge for Phones Feature Suggestion Box にお願いします。

Microsoft Edge で Web ページを開いたら Internet Explorer に送られました。なにが起きたのでしょうか?

サイトが IE だけでサポートされているレガシー技術を必要としていることを Windows が検出すると、自動的に IE が読み込まれます。

localhost のデバッグはどうすればよいですか?

Microsoft Edge は、セキュリティ上の理由からデフォルトでネットワーク分離で実行されています。ループバックを有効にして localhost サーバーをデバッグできるようにするには、以下のコマンドを実行します。
CheckNetIsolation LoopbackExempt -a -n=Microsoft.Windows.Spartan_cw5n1h2txyewy
将来のアップデートで、about:flags から設定できるようにする予定です。

なぜ Do Not Track (DNT) がデフォルト無効になったのですか?

Microsoft は、業界標準が確立されていな時からいち早く 、IE10 で DNT 設定をデフォルト オンにしました。W3C は、DNT を有効にしたいかどうかを顧客が積極的に示すことができるようにすることを推奨しました。その結果、次期バージョンの Microsoft のブラウザーでは、デフォルトで有効にしないことを決めました。

WebBrowser コントロールは、Microsoft Edge で動きますか?

WebBrowser コントロールは Windows 10 でも動作しますが、 IE レガシー レンダリング エンジンで動作します。

WebView コントロールは Microsoft EdgeHTML を利用しますか?

はい。Windows 10 向けに構築された Universal Windows App では、WebView コントロールは Microsoft EdgeHTML を使用します。Windows 8 と 8.1 向けに構築された WebView コントロールを Windows 10 で実行した場合は、互換の目的で、レガシーエンジンが読み込まれます。

Microsoft Edge ユーザーエージェント文字列は?

Microsoft Edge のユーザーエージェント文字列は、
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0 
Windows 10 Phoneデバイスでは、
Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; DEVICE INFO) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0
ただし、ユーザーエージェント文字列の検出は可能な限り避けるべきです。Microsoft Edge を検出したい場合は、バージョンは頻繁に更新されるため 「Edge」 トークンだけを使用する必要があります。

なぜ Microsoft Edge ユーザーエージェント文字列には、WebKit や Chrome, Safari が含まれているのですか?

ユーザーエージェント文字列は、Webサーバーがそのブラウザーでレンダリングされる最高のコンテンツを確実に配信するために使用されます。Microsoft Edge は IE 固有のコード パターンを捨てて、モダン Web の相互運用性に強くフォーカスして構築しました。すべてのブラウザーが Mozilla/5.0 を含んでいるように、Web の歴史の中では繰り返し怒っていることです。