2015年12月6日日曜日

Microsoft Edge の JavaScript エンジンである Chakra がオープンソースに

Microsoft Edge の JavaScript エンジンである Chakra がオープンソースとして公開されると発表されました。公開時期は来年の 1 月の予定です。
Chakra は、主なベンチマークでも高いスコアをたたき出し、ECMAScript 2015 の実装も先行して進められていることで知られています。

今回公開されるのは、ChakraCore と呼ばれるもので、以下が含まれる。

  • JSRT Hosting API
  • パーサー
  • Lowerer
  • インタープリター
  • JIT
  • ガベージコレクター
  • Execution Machinery
  • モダン診断API

含まれないものは以下の通り。

  • COM診断API
  • ブラウザー
  • Universal Windows Platform

OS に繋がる部分と表示部分が含まれないイメージですかね。

これをオープンソースにしてなにをしたいかというと、Chakra を Windows 以外にポートしたいので協力して欲しいということみたいです。

2015年10月13日火曜日

Microsoft Edge の 10565 アップデート

Windows Insider Preview のアップデートがあり、Microsoft Edge も 10565 にアップデートされました。
10565 の新機能は以下の通りです。
EdgeHTML の新機能:

  • CSS initial 値と unset 値
  • F12 開発者ツールのドッキングサポート


Microsoft Edge の新機能:

  • タブにホバーしたときにコンテンツのタブプレビュー
  • お気に入りとリーディングリストの同期
  • ドラッグ&ドロップによるファイルアップロードをサポート
  • 右クリックメニューに[名前をつけて保存]をサポート
Microsoft Edge に必要な機能がようやく揃ってきた感じですね。

2015年9月23日水曜日

Microsoft Edge F12 開発者ツールの試験的機能

Microsoft Edge の F12 開発者ツールには [試験的機能] ツールがあります。現時点では、ここには [JavaScript の編集] トグルだけが存在しています。

 
これをオンにすると、[デバッガー] ツールで JavaScript ファイルを編集できるようになります。

デバッガーでコードを直接編集して、保存アイコンをクリックします。
保存アイコンで保存を反映すると、比較アイコンをクリックして、変更点を確認できるようになります。


2015年9月22日火曜日

Microsoft Edge のバージョンいろいろ

先日、Windows Insider Preview で Build 10547 が提供されましたが、Microsoft Edge のバージョン番号はいろいろです。
Edge Blog に説明がありました。
ユーザーエージェント文字列には、Edge/13 の文字が見えます。設定の中にあるバージョン情報には、21 となっています。実行ファイルには 11 の記述が見えます。

ユーザーエージェント文字列の 13 は、EdgeHTML のバージョン番号だそうです。21 は、ブラウザ自身のバージョンだそうです。

でも、このバージョン番号、ファイルのバージョンでもないし、どこに持ってるんだろう?

2015年9月20日日曜日

Microsoft Edge Build 10547

Windows Insider Preview においてBuild 10547 にアップデートがありました。
Microsoft Edge の新機能は、公式サイトにもまとまっていますが、大きな機能としては ORTC のサポートにより、ようやく Microsoft のブラウザでも RTC がサポートされたのに加え、Skype ともシームレスに通信ができるようになりました。

EdgeHTML の新機能:

  • <template> 要素
  • <picture> 要素
  • Extended srcset (sizes)
  • a[download] 属性
  • Canvas ellipse (楕円)
  • CSS Mutability Pseudo-classes (:read-write, :read-only)
  • CSS Range Pseudo-classes (:in-range, :out-of-range)
  • input type=datetime-local
  • SVG external content
  • WebRTC - Object RTC API

Chakra の新機能 (about:flags か、F12 開発者ツールで「試験的な JavaScript 機能を有効にする」を有効にする必要がある)

  • ES2016 Async Functions
  • ES2016 Exponentiation(べき乗) 演算子

ユーザーエージェント文字列はこんな感じ。Chrome が現行の 45 よりも先行しているのが気になりました。
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10547

2015年9月16日水曜日

企業内における Microsoft Edge と IE

How Microsoft Edge and Internet Explorer 11 on Windows 10 work better together in the Enterprise

英文記事になってしまいますが、企業内における Microsoft Edge と Internet Explorer の設定について書かれています。

Edge も IE 同様、Active Directory を使って、グループポリシーで管理できます。
IE8 でしか稼働しないイントラで使っているシステムが残っていて、Windows 10 に移行できないとお考えの方、安心してください。Enterprise Mode が使えます。

記事内にある Enterprise Site List Manager をダウンロードして、サイトごとに互換設定ができます。IE で開く必要がある、IEのドキュメント モードをIE7互換にする、などを設定してグループ ポリシーで配布することで、企業内の PC に設定を配布することができます。

これで、Microsoft Edge を企業内の標準にしたとしても、必要なサイトは IE で開き、かつ互換性のあるドキュメント モードで開くことができます。

2015年9月9日水曜日

Microsoft Edge VP9 をサポート

先日、WebM をサポートするというニュースで驚かせてくれましたが、さらに次のリリースで実験的な機能(about:flags でオンにする必要がある)ではありますが、VP9 をサポートするそうです。

今後、4K 動画が主流になっていくと、ファイルサイズは単純に考えると 4 倍になってしまいます。そうなってくると、ネットワーク帯域がボトルネックになってしまい、快適に動画を閲覧できない可能性があります。

そこで、圧縮技術がいくつか開発されました。現在主流の H.264 の流れを汲む H.265 が本命だとみられていましたが、Google が推進している VP9 を Edge がサポートすることで、流れが変わる可能性もあります。圧縮率は、どちらも H.264 の倍ぐらいであると言われています。

詳細は Edge Blog の記事を参照ください。

2015年9月2日水曜日

Microsoft Edge の動画関連ニュース 2 件

Microsoft Edge to support WebM Standard
Edge が Google が進めている動画フォーマットである WebM をサポートするそうです。

Microsoft joins tech elite to develop a royalty free future for video formats
そして、Web 動画の将来に向けて、大手各社がアライアンスを組んだそうです。

標準化されているようでされていなかった動画フォーマットの落ち着いていくとよいですね。

2015年8月22日土曜日

Chrome Extensions Are Coming To Firefox

Chrome Extensions Are Coming To Firefox
Firefox が、Chrome や Opera で使われている WebExtensions APIを採用すると発表しました。
Microsoft Edge も Chrome と互換性のある拡張機能が提供されると発表されています。

HTML5やCSSの互換性だけじゃなく、ブラウザ自体の互換性が高まると開発者としても、利用者としてもいいですね。

2015年8月8日土曜日

Microsoft Edge と Windows 10 のビルドごとの変更点

Microsoft Edge のビルドごとの変更点は、以下で公開されています。
http://dev.modern.ie/platform/changelog/

Windows 10 の変更点は、非公式だと思いますが以下のサイトを見つけました。
http://changewindows.org/

2015年8月7日金曜日

Windows 10 でスタート画面を表示するには(タブレット モード)

Windows 8(.1) は、タブレットと PC の両方のニーズを満たすためにスタート画面が採用されました。これは、タブレットとして使われることを想定していて、スタートボタンは、指でタッチするには小さすぎるだろうという配慮からで、スタートメニューを大きくしただけなので使い勝手には大きく影響しないと考えたと思われます。私の利用局面を考えても、スタートボタンからアプリを起動する機会は多くないため、PC ユーザーの使い勝手も大きく損なわないと考えたと思われます。ですが、結果はご存じの通り、PC ユーザーには使いにくいという評価になりました。私もアプリを起動するために、Windowsキーを押すとスタート画面に切り替わるのはストレスに感じていました。

そこで、Windows 10 はご存じの通り待望のスタートボタンが復活しました。ですが、逆にタブレットでは使いにくいと感じるかもしれません。そこで、Windows 10には、「タブレット モード」でスタート画面への切り替えができるようになっています。


手順は簡単です。タッチ対応のデバイスの場合、右からピッと指をスワイプ、マウスの場合はタスクトレイの「新しい通知」アイコンをクリックして、「アクション センター」を開きます。
「タブレット モード」をタップ(クリック)します。
 
これで、スタート画面が表示されます。タブレットなどでストアアプリだけを使う場合は、このモードで使う方が便利です。
デスクトップ に戻したい場合は、もう一度「アクション センター」で「タブレット モード」をタップ(クリック)するだけです。

2015年8月1日土曜日

Microsoft Edgeのデフォルト検索エンジンをGoogleに変更するには

Microsoft Edge をインストールした時点では、検索エンジンのデフォルトはBingになっています。まあ、Google にしたいですよねw
実はデフォルトの状態では、設定を開いても、Google 選択できません。

1. Google を選択するには、まずGoogleにアクセスします。
2. [...] ボタンの [設定]をクリックします。

3.[詳細設定を表示] ボタンをクリックします。

4. [アドレスバーで検索に使う検索プロバイダー] を展開して、[<新規追加>] をクリックします。

5. Google が表示されるようになるので、そのままデフォルトの検索エンジンにしたい場合は、[既定に追加] をクリックします。とりあえず、あとからでも変更できるようにしておく場合は [追加] をクリックします。

これで、Google を検索エンジンとして使用できるようになります。
この設定は、OpenSearch という仕様に基づいています。Google の HTML ソースを確認すると、きちんとこの記述があることがわかります。

2015年7月30日木曜日

Microsoft Edge で動画が再生できない

Windows 10 の標準ブラウザである Microsoft Edge では、一部の動画コンテンツが再生できないことがあります。これは、動画コンテンツの著作権を保護する DRM が Silverlight で実装されているためですが、Microsoft Edge では、Silverlight がサポートされていません。そのため、動画を再生しようとすると、以下のページが表示されることがあります。
リンク先で Silverlight のインストーラーがダウンロードできますが、実行しても動作は変わりません。

解決方法は、Internet Explorer で開く必要があります。Microsoft Edge の [...] ボタンをクリックして、[Internet Explorer で開く] をクリックします。

これで、IE が起動するので、Silverlight を使って再生することができます。

Silverlight で動画を再生しているサイトには、dTV、WOWOW オンデマンド、UULA、U-NEXT などがあります。

2015年7月26日日曜日

Microsoft Edge、WebDriver サポートを発表

マイクロソフトは、Microsoft Edge で WebDriver をサポートしたことを発表しました。
WebDriver は、テストを自動化するための W3C Web 標準規格です。

これにより、Selenium などを使って、C# や Java から Web ページの操作を自動でテストすることができるようになります。また、WebDriver の相互運用性を向上させるために Borland Silk チームとも協力したと発表に記載されています。(Borland ってまだあったんですね。)

Microsoft WebDriver は、Download Center からダウンロード可能です。Windows Insider のビルド 10240 以降で利用可能です。

2015年7月5日日曜日

Microsoft Edge から localhost にアクセスするには

先日のアップデートで、Project Spartan から Microsoft Edge に変わりましたが、それに伴い localhost にアクセスするためのコマンドが変わります。

CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe

2015年7月2日木曜日

Microsoft Edge がついに降りてきました!

昨日(2015/07/01) の アップデートでついに Microsoft Edge という名前になり、アイコンも変更されました。
タスクバーに並んでいるアイコンを見ると、思っていたほど違和感はないという印象です。
そして、ウィンドウの設定を見ると、従来の明るいテーマ (白) だけでなく、暗いテーマ (黒) も選択可能になっています。
また上の画像で表示している「about:flags」 もきちんと日本語化されています。ここで、JavaScript の実験的な機能や、asm.js を有効化することができます。
F12 開発者ツールにも同様に「試験的な機能」というタブが追加され、「JavaScript の編集」機能が有効化できるようになっています。

最後に、コマンドから Microsoft Edge を起動するには
start microsoft-edge:http://www.msn.co.jp
のようにコマンド プロンプトから起動することができます。

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 の歴史の中では繰り返し怒っていることです。

2015年5月13日水曜日

Microsoft Edge は 64 ビットがデフォルト

前回書いた内容が長すぎると言われたので、短いのも書いてみます。
Microsoft Edge は、64ビットプロセッサーで実行しているときは、常に 64 ビットで動作します。Edge ブログでは、Windows ASLR (Address Space Layout Randomization) によって、メモリレイアウトがランダムになり、さらに 64 ビットの広大なメモリ空間があるため、脆弱性を突いて攻撃されたとしても、メモリの位置を特定することが困難になり、セキュリティのアドバンテージがあると説明されています。

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 と書かれているが、随時更新されていくと思われる。