Project Spartan用のMicrosoftの新しいレンダリングエンジンの詳細

Smashing Magazineの編集者から:



Microsoftは先週、1995年にInternet Explorerを発表して以来、Webで最も重要な発表を行いました。「Project Spartan」というコードネームの新しいブラウザです。 これは開発者およびデザイナーとしての私たちにとって何を意味しますか? Spartanはどのレンダリングエンジンを使用しますか? Microsoft WebプラットフォームチームのシニアエンジニアであるJacob Rossiに、レンダリングエンジンで使用される新しいブラウザーと、それが最終的にInternet Explorerに置き換わるかどうかについて話しました。 ジェイコブによって書かれたこの記事は、私たちの議論の結果であり、あなたにとって役立つかもしれないブラウザのいくつかの側面に光を当てます。






Microsoftの新しいブラウザであるProject Spartanは 、先週正式に発表されました。



Spartanは注目に値する時間のために取り組んできたプロジェクトです。今後数か月間、私たちが正確に得られるもの、それを使用する人々に提供できるもの、プラットフォームのようになるものを社内で研究し続けます。 ブラウザを外部にリリースするための準備には数か月かかりますので、自分で試してみることができますが、今日は興味深い詳細を共有できます。



この記事では、 Spartanのレンダリングエンジンの内部ストーリーについて説明します。それがどのように生まれたのか、そしてInternet Explorerプラットフォーム(Trident)の20年の歴史がどのように設計へのアプローチを決定するのに役立ちましたか?



Internet Explorerのチュートリアル



20年前、Microsoftは最初にInternet Explorerを導入しました。 多くのユーザーにとって、この名前とブランドは世界中で認識されていますが、Web開発者にとって、Internet Explorerの古いバージョンの「機能」は、Web標準をサポートおよび実装するマイクロソフトの最近の取り組みによってしばしば妨げられます。 Web開発者は、バグ、必要な機能を実装するためのハッキングおよび奇妙な回避策の必要性のためにInternet Explorerのレガシーバージョンを覚えていますが、 IEは、スクリプトとDOM、AJAX / XMLHttpRequestを介してCSS Web開発者に動的なHTML変更を提供することで、実際にWebに積極的な貢献をしました 、ドラッグアンドドロップ(D&D)、innerHTML、ハードウェアアクセラレーション、その他のWebテクノロジー。



Microsoftブラウザーチーム内では、常に学習している組織であると考えています。 毎年、特別な時間をかけて成果と間違いを振り返り、それらから学び、さらに成長します。 この意味で、IEの各リリースは、一般に製品を作成する方法に大きな影響を与えました。 ブラウザメーカー、標準、互換性と相互運用性、パフォーマンス、セキュリティ間の協力の重要性について学んだことはすべて、新しいレンダリングエンジンでの作業方法を決定するのに役立ちました。



Microsoftの新しいレンダリングエンジン



Microsoftの新しいブラウザーには、その内部にEdgeHTML.dllという新しいレンダリングエンジンがあります。 既にWindows 10に付属しており、Tridentエンジン(MSHTML.dll)から分離されます。MSHTML.dllは、数十年にわたって主要なInternet Explorerでした。



Internet Explorer 11に同梱されているTridentの最新バージョンは、標準のサポートで大きな進歩を遂げました(最も注目すべきもののリストを作成し始めましたが、75の仕様に達した時点で停止しました)。 しかし、この進歩は、Webがもはや必要としない概念であるIE5.5、IE7、IE8、IE9、およびIE10をサポートするドキュメントモードの負担によって大幅に軽減されました。



そのため、 IE11の標準サポートのレベルを出発点として使用する新しいエンジンを作成することにしました。



エンジニアの1人であるJustin Rogersが、エンジンを分岐したコミットで「Enter」を押すのを見ました。 処理には約45分しかかかりません(アセンブリではなく、変更を加えるだけです!)。



それがすべて終わったとき、部屋には自由な静寂がありました:そして、このステップが私たちに何をすることができるか想像することができました:各開発者にとってカタルシスのお気に入りの状態であるコードの削除を開始します。




次の数か月で、IEの遺産の階層化が新しいエンジンから削除されました。 ドキュメントモードが消えました。 IE8の合成機能をエミュレートするサブシステムを削除しました。 VBScriptを取り出しました。 attachEvent、X-UA-Compatible、currentStyleなどのレガシーテールはすべて新しいエンジンから削除されました。 コードはTridentに少し似ています(ただし、WebkitのBlinkとは大きく異なります)。



ディレンダリングダングエンジンジェンション

Project Spartanは、IE 9で導入されたJavaScript用の新しいレンダリングエンジンとChakraエンジンを内部で備えています。



残ったのはきれいな基盤でした。 相互運用性と標準を念頭に置いて設計された最新のWebプラットフォーム。 ここから、開発者がブラウザ間の違いに対処する必要がないように、他の最新のブラウザとの相互運用性に大きな投資を始めました。



今日、私たちは40を超える新しいWeb標準に取り組んでいるなど、3,000以上の相互運用性の問題(90年代に書かれたコードに関連するもの)を修正しました。 たとえば、innerHTMLに関する長年の問題が修正されました。 Flexboxのような新しい標準でさえ、最新バージョンの仕様を満たすために開発者から新しい愛の塊を受け取ります(これは将来のWindows 10リリースで見られます)。 Project Spartanには、F12開発者ツールの更新バージョンも含まれています



危険にさらされているものをよりよく理解するために、ここでは、ビルド前に既に含まれているか、まもなく含まれる私の個人的なお気に入りの機能をいくつか紹介します。





ただし、最新の相互運用可能なレンダリングエンジンでは、Webを魔法のように機能させるのに十分ではありません。 これは、サイトが「最新のブラウザー」用に作成されたブラウザーコードも提供している場合に実現できます。 そのため、新しいエンジンには新しいユーザーエージェントラインもあります。 エージェントラインがステッカーの場合、新しいエンジンのUAラインは、今日の多くのWeb開発者のノートブックカバーに似ています。 しかし、予想外に、これは互換性の点で非常に良い結果をもたらし、多くのサイトが新しいエンジンに最新のコンテンツを提供できるようにします。 また、ドラムを叩くもう1つの理由もわかります。

ユーザーエージェントのサイトスニッフィングは、いかなる場合でも除外する必要があります。





「素晴らしいが、私の会社にはIE8が必要とするサイトがある」



後方互換性を保つために、トライデントを完全になくす予定はありません。 代わりに、最新のレンダリングエンジンまたはTridentをロードできるデュアルエンジンアプローチを設計および実装しました。 このスイッチはユーザーに対して透過的です。 Windows 10では、WebにEdgeHTMLを使用し(ドキュメントモードについて心配する必要はありません)、 レガシー企業サイト用にTridentをダウンロードします 。 このような二重のアプローチにより、企業は古いIEが重要なアプリケーションをすべて単一のブラウザー内で使用しながら、Web用の新しいエンジンにアップグレードできます。 さらに良いことに、2つのエンジンを使用したアプローチでは、トライデントがセキュリティ関連の修正のみを行うことを計画しています。これにより、コード変更を最小限に抑え、新しい(常に新鮮な)レンダリングエンジンの革新に焦点を当てながら、企業サイトの互換性を維持する必要があります。



Windows 10でSpartanを使用することを願っています。 ただし、古いInternet Explorer拡張モデルの上に作成されたツール(ネイティブActiveXコンポーネント、ツールバー、BHOなど)を含む多くのビジネスシナリオがあります。 したがって、Internet Explorerは、より深いレベルの下位互換性を必要とする一部のエンタープライズWebアプリケーション用にWindows 10で利用可能になります。 このバージョンのInternet Explorerは、Spartanと同じ2エンジンアプローチを使用します。これには、Web用のEdgeHTMLのデフォルトのロードが含まれます。 つまり、開発者はInternet ExplorerとSpartanを別々に考慮する必要はなく、 標準サポートするための計画は同じです。 ブラウザにはChakra JavaScriptエンジンも含まれます



「完璧ですが、私のユーザーの一部はまだIE8に座っています」



わかっています。 これは、Web開発者にとっても、ブラウザチームにとっても同じくらい苦痛です。 昨年5月に、ユーザーの更新を最優先事項として話しました。 8月後半に、ユーザーが新しいバージョンにアップグレードすることを推奨するブラウザーサポートポリシーを発表しました。 さらに重要な発表が1週間前に行われました。Windows10は、Windows 7、Windows 8.1、およびWindows Phone 8.1のユーザー向けの無料アップデートで、発売後1年以内にアップデートされます。 さらに、Windows 10をサービスと見なします。つまり、次の大きなリリースを待たずに、システムを常に更新し、準備ができたら新機能をリリースします(「自動更新」)。 これは、 新しいレンダリングエンジンが常に新鮮であることを意味します。



今後の計画



過去1年間に導入したもう1つの重要な変更は、Webプラットフォームの開発計画に関するオープン性を高めることです。 過去1年間、 パブリックスタンダードサポートロードマップ (私の個人的なアドオンプロジェクトの1つ)、 RedditでのAMAセッション、 @ IEDevChatを介した通常のダイアログ、 プレビュービルドへのアクセスなどのアクティビティに早く気づいたことを願っています開発プロセスの段階。 今年は、この分野の開発を続けます。



標準のサポートに関しては、現在取り組んでいる新機能について引き続き話します。 近い将来、Web Audio、Image srcset、@ supports、Flexboxアップデート、Touch Events、ES6ジェネレーター、およびその他の多くの機能を期待する必要があります-これは過去数週間にわたって強調されてきました。 以下は、WebRTC 1.1(ORTC)やメディアキャプチャ(カメラとマイクにアクセスするためのgetUserMedia())などの大きなブロックです。 その後、私たちはあなたの希望 (および他の要因、たとえば、Bingが収集するのに役立つさまざまな機会の使用に関する統計を考慮に入れます 。ところで、彼は内部で私たちのエンジンを使用することもできます)は、プラットフォームへの将来の投資を優先します。



最初のリリースでのプラットフォームの計画はまだ修正されていません-開発者からのフィードバックはそれらに強く影響を与え、影響を与えます。 そのため、途中で柔軟な変更が可能です。 今、あなたが私たちをどのように助けることができるかです:





個人的には、このような開発の初期段階にあるWindows 10のProject Spartanの背後にある新しいWebレンダリングエンジンについて、この内観を共有できることを嬉しく思います。 私たちは、来月にさらに詳しく説明する予定です。 それまでの間、本質的に何か言いたいことがあれば、 個人的に 、そして一般的に私たちのチームに 手紙を書くことができます。 あなたのためにウェブを機能させましょう。



All Articles