2015年5月11日月曜日

Microsoft Edge まとめ

Microsoft Edge とは

以前から Microsoft が IE を捨てて、新しいブラウザーを開発しているというウワサがあった。その後、徐々に情報が提供され、Project Spartan というプロジェクト名が明らかになった。発表時点では、互換モードも提供する IE と互換性のあるデュアル エンジンを搭載したモダン ブラウザーとしてリリースされるという話しだったが、最終的には Chrome や Firefox と同じく、最新のエクスペリエンスだけが提供されて、過去のしがらみから解放された軽量のブラウザーになることに決まった。
そして先日、 サンフランシスコで開催された Microsoft のイベント Build 2015 において、Microsoft Edge という製品名が発表された。
Microsoft Edgeはいわゆるユニバーサル アプリで実装されているため、対象デバイスは、PC、タブレット、スマートフォンだけでなく XBox One にも対応するという。執筆時点(2015/05/10)では、iOS や Android を含めるという情報は提供されていない。

これからのマイクロソフトのブラウザーはどうなるのか

新しいブラウザーが発表されたとこで、これまで親しんできた IE はどうなるのかが気になる方も多いと思う。特に企業で使われている方は、古いブラウザー(のドキュメントモード)でしか動作しないアプリが残っていることがあるだろう。
ずばり、回答としては、これまでにIEでしか動かなかったアプリは、そのままIEを使い続けることができる。Windows 10にも IE (おそらくIE11)が継続して提供される予定である。

ロゴ

長年親しんできた IE から Edge という名前になったが、ロゴは比較的近いものを維持している。
WinBeta では、Microsoft Edge の名前とロゴに関するアンケートが実施されており、新しいロゴに対しておよそ50%がNo!、31%がYes!、残りが興味なしという回答であった。(ちなみに僕も新しいロゴはダサいと思ってました。)
ロゴについては、同じく WinBeta の記事で、Edge のロゴは戦略的なアプローチであると書かれている。たとえば、コンピューターに詳しくない人たちが Windows 7 から 10 にアップグレードしたとする。まったく見たことがないロゴがタスクバーにあったとしてもそれが、ブラウザーだとは認識できないだろう。だが、この新しいロゴであれば、「あぁインターネットのアイコンがちょっとつぶれたのね」と理解して、今まで通りブラウズすることができる。「[e] のアイコンをクリックしたらインターネットが見れる」と教わったという人もいるだろう。そういった人たちにスムースに移行してもらおうという戦略のようである。

ユーザーエージェント文字列

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
ぱっと見、全部入りのユーザーエージェント文字列に見えるだろう。

Mozilla は、今やすべてのブラウザーが採用
AppleWebKit は、Safari、Chrome から借用
KHTML like Gecko は、Firefox で採用されている描画エンジン Gecko の記載だが、Safari や Chrome も同様の記述をしている。
Chrome は、Chromeから借用
Safari は、Safari から採用
Edge は、Microsoft Edge オリジナルの記述。

背景としては、IE のたどってきた歴史にある。1996 年ごろから、IE は Netscape とブラウザー戦争と呼べる争いをしていた。闘いの末、ブラウザーに統合されていた IE は勝利を収めた。当時は今程の勢いがなかく、意識する必要がない程度のシェアしかなかったMac だったが、それでも Internet Explorer for Mac が提供されていて、Netscape は全方位的に攻撃を受け、撃沈してしまった。
しばらくは、Web の世界を IE が席巻し、多くの Web サイトが IE でだけ見れればよいという時代が続いた。
しかし、Apple が iPhone、iPad を率いてスマートデバイス時代が到来した。時を同じくして、HTML5 という新兵器が開発され、Safari、Chrome、Firefox が相次いで対応していき、多くのWebサイトがクールな機能を持つ HTML5 に対応した。
Microsoft も IE9 からサポートをはじめて、ようやく追いつくかと思いきや、IE のサポートポリシーでは、Windows XP がサポートされており、また、そのデフォルト ブラウザーであった IE6 のサポートも維持されていた。そのため、多くの企業内システムはこの IE6 でのみ動作するように開発されているものも少なくないため、企業ユーザーは IE6 を使っていることが多かった。その後、Windows XP のサポート期限が切れ、それに伴い IE6 のサポートも切れたが、現在サポートされている Windows7 とその標準ブラウザーである IE8 はまだサポートされている。多くの企業は、Windows XP のサポートが切れたとき、最小コストで移行が可能になる IE8 に社内システムを対応させており、エンタープライズでは IE8 が標準ブラウザーになっているケースが少なくない。そう、HTML5 に対応する前の IE8 である。現時点でも企業の主要ブラウザは IE8 のままである。

このような経緯から、IE は Web の世界では HTML5 に対応していないと思われており、接続文字列で IE と判断されたときには、ページを表示しない、クラシックなページに遷移すると言った特別な対応を入れているサイトも少なくなかった。IE11 になり、他のモダンブラウザーと遜色ないレベルまで HTML5 や CSS3 に対応するようになったが、それでも対応していないと判断されて、他のブラウザーと同様のエクスペリエンスを提供してくれないサイトが多く残っていた。そのため、Microsoft はユーザーエージェント文字列からでは、何のブラウザーか判断できないようにして、他のブラウザーと同様のエクスペリエンスを提供してもらえることを期待しているのである。

描画エンジン

Microsoft Edgeで使われているレンダリングエンジンは EdgeHTML と呼ばれている。これは IE で使われていた Trident (MSHTML) からフォークされて作られたモノで、最新のIE エンジンをベースとして実装されたものである。
同所は、デュアルエンジンとして両方のエンジンを切り替えられるようにする案があったが、最終的には、Microsoft Edge が最新の実装だけをサポートすることが発表された。
そのため、多くのレガシーコードを削って軽量化することができたという。

JavaScript

IE の JavaScript エンジンはChakra と呼ばれている。Microsoft Edge では、Mozilla が推進している JavaScript 高速化技術 Asm.js をサポートする予定だ。
Bringing Asm.js to Chakra and Microsoft Edge
asm.js は、JavaScriptを使って Web ブラウザ上でネイティブに近いパフォーマンスを出すことができる。C や C++ で書かれたプログラムのコンパイラも存在しているため、ゲームなどリアルタイム性が求められるアプリケーションを Web に移植するのに重要な役割を果たすはずである。Edge だけでなく、Chrome でも現在、検証が進められており、3台ブラウザーすべてがサポートすることで、普及が促進されると考えられている。
現在、asm.js を利用するためには、「about:flags」で [Enable asm.js] にチェックする必要がある。

なくなる機能

まったく新しいブラウザーを作ったことにより、古い機能は削除されることになった。MSHTMLをフォークして、EdgeHTMLを実装したのだが、その時に削除されたコードは 220,000 行以上だという。削除された機能は、以下の通り。
  • ActiveX
IE がリリースされた当初は、ブラウザーができることは貧弱であった。そのためプラグインとして、ネイティブコードを実行できるようにして、ブラウザー内のエクスペリエンスをリッチにしようという試みが ActiveX であった。Flash や Silverlight と言えばわかりやすいかもしれない。長らく IE の拡張機能は ActiveX のみだったが、新しいブラウザーでおよそ 20 年の歴史に幕を閉じることになった。Edge になっても、PDF のレンダリングや Flash については、外部アドオンとして実行可能になる予定である。
  • Browser Helper Object (BHO)

ブラウザーのツールバー拡張など、IE の拡張機能を COM で実装できるようになっていた。IE がリリースされた当初は、ネイティブ コードで拡張機能を実装するのが普通であったが、今や Firefox や Chrome は HTML/JavaScript で拡張できるようになっている。
  • ドキュメント モード

古いブラウザーで実行していたものが新しくなるとレイアウトが崩れるという問題が発生していた。そのため、IE をバージョンアップしてくれないという問題を抱えていた Microsoft は、IE8 からドキュメント モードと呼ばれる機能を提供した。これは、IE 8 から提供された機能で、内部では古い IE で使用していた描画エンジンを使用できるという機能で、古い業務アプリを実行するために長らく使われてきた。ただ、バージョンアップごとに古い描画エンジンの切り替えや振る舞いのエミュレートなど設定の複雑さや振る舞いの違いなど、多くの問題を生むことになった。
Microsoft Edge では、Firefox や Chrome など、他のモダンブラウザーと同様、古い IE の動作をエミュレートすることをやめ、常に最新の振る舞いをするようになった。
  • VML (Vector Markup Language)

最近は SVG が種類だが、実は IE5 の時代にもベクターグラフィックがサポートされていた。あまり使われることはなかったが、互換のために残されていた。昨年は、この古い機能の脆弱性が発見されて問題になった。SVG が誕生したことで、この機能は不要になった。
  • VBScript
現在、ブラウザーで動作するプログラム言語といえば、言うまでもなく JavaScript である。VBScript が提供された 96 年も実は、現在と変わらず JavaScript であった。Netscape が開発した JavaScript という奇妙な言語ではなく、Microsoft が (少なくても当時は) みんなが大好きな Basic を使えた方がいいだろうと考えて実装したのが VBScript であった。当時の Microsoft のサーバーサイド技術がActive Server Pages (ASP) という VBScript ベースの言語であったため、サーバーサイドもクライアントサイドも同じ言語が使えるというメリットもあった。
ただすでに、クライアントサイドでは JavaScript が多く使われており、VBScript を使おうと考える人が少なかったため、あまり流行ることなく、互換性のためだけに残されていた。
  • attachEvent / removeEvent
IE8 で、イベントハンドラーのアタッチのために実装されたが、addEventListener/removeEventListener が標準化されたため、IE9 以降では、こちらを使うことが推奨されている。
  • currentStyle
エレメントに適用されているスタイルを取得するためのプロパティとして実装されたが、IE9 からは標準化された getComputedStyle メソッドが提供されている。
  • 条件付きコメント

IE はバージョンアップごとに機能が追加されたり、描画エンジンに変更が加えられ、バージョンごとに違う CSS などを書く必要があることがあった。そのため、このバージョンの時だけ読み込む CSS のようにコメントにバージョンの条件を記述する条件付きコメントを記述することができた。今でも HTML ソースの中に <!-- [if IE] --> や、<!-- [if ge IE 8] --> のような記述があることがある。今では、IE も他のブラウザーと同じ振る舞いをすることが多く、逆に区別して欲しくないということで、IE11 でも最新の描画エンジンでは無視されるようになり、Edge からは機能自体が削除されることになった。
  • IE8 レイアウト Quirks
今やほとんどの Web サイトが HTML 標準で書かれており、IE 8 互換のレイアウトが必要になるケースは、企業システムが古い古いブラウザー (IE 8) にしか対応していない場合のみであろう。その場合は、エンタープライズ モードの使用が推奨されている。
  • DirectXフィルターとトランジション
CSS3 が提供されるまで、HTML や CSS の表現力は非常にプアであった。今では、ブラウザー内で透過や変形ができるようになったが、それ以前はMicrosoft が独自の拡張によって実現することができていた。

追加される機能


MSHTML から Edge になったときに 220,000 行以上のコードが削除されたと書いたが、逆に機能を追加するために 300,000 行以上のコードが追加されたそうである。これには、49 の主要な新機能と 4200 以上の互換性の修正が含まれているとのこと。
//Build/ のセッションでは、Microsoft Edge で実装される HTML5 / CSS 3 の新機能に関する詳細が発表された。

CSS

  • @supports
  • Flexbox 標準の更新
  • dppx単位
  • transform-style: preserve-3d
  • Filter効果

JavaScript

  • ES6 Math, Number, String, 組み込みのRegExpとObject
  • Arrow関数, 拡張オブジェクトリテラル, テンプレート文字列, Default, Rest, Spread
  • Map, Set, Weakmap, __proto__, Proxies
  • Let, Const, Promises, Classes

ストレージとネットワーク

  • HTTP/2
  • Content security policy
  • Web Crypto API アップデート
  • HSTS (HTTP Strict Transport Security

DOM と グラフィック

  • SVG foreignobject
  • SVG 属性アニメーション
  • 完全な WebGL サポート
  • DOM イベント コンストラクタ
  • DOM Level 3 XPath

メディア と RTC

  • メディア キャプチャ
  • HLS
  • WebAudio
  • Video Tracks
  • WAV Audioのサポート

入力と編集

  • Touch events
  • Pointer lock API
  • Media Queries L4 - Interaction
  • Selection API
  • Gamepad API
また、現時点では実装されていなくて、RTM までに実装されると言われている機能は以下の通り。
  • 拡張機能のサポート
  • Cortana シナリオの追加
  • Object RTC
  • Pointer lock
現在の実装状況は、status.modern.ie に公開されている。

最後に

機能の追加要望や改善要望は、UserVoice に投稿・投票することができる。
技術的な詳細情報は、Developer Guide が提供されている。現時点(2015/05/10)ではまだ、Project Spartan と書かれているが、随時更新されていくと思われる。

0 件のコメント:

コメントを投稿