The tab browser
recommendation
committee
タブブラウザ推奨委員会
トップページに戻る

IE9/10/11未対応ブラウザをIE9/10/11モードで動かす


IE9が発表されたずいぶんと経ち、更新が続いているコンポーネントブラウザの多くはIE9に正式対応はしました。しかし更新が止まっているブラウザはIE9への対応は望めない状態にあります。せっかくコンポーネント部分がIE9になったことで、Javascriptの高速化、レンダリングへのGPU支援、CSSへの対応強化などがなされているのに、未対応のコンポーネントブラウザはその性能を発揮できない状態にあります。

そこで、IE9に未対応のブラウザをレジストリに登録することにより、IE9モードで動かす方法を記載します。これは未対応ブラウザが対応ブラウザになるという意味ではありません。未対応のままだけど、無理矢理IE9モードで動かしちゃうぜ、ベイビー。どんな不具合が出ようと知ったことじゃないぜ、イエェーイというものです。

また、Windows7やWindows8でIE10/11を使用している場合も同様です。同じくレジストリにIE10/11モードで動かすように指定します。

当然の話ですが、IEコンポーネントを使用してるブラウザのみの話です。ただしFirefox、Google Chromeに拡張機能のIE Tabを動かす時にも影響を与えます。IE Tabの方で動作モードを指定できない場合は個別に登録が必要になります。その場合、FirefoxならFirefox.exeまたはplugin-container.exeを、Google ChromeならばChrome.exeを登録してください。(IE9に未対応のIE TabでIEの描画モードを設定した場合、IE9モードからIE7やIE8モードに書き直される場合があると思われます。)


MoonBrowserをそのまま動かしてみる

IE9が入っている環境で、未対応のコンポーネントブラウザを起動させた場合、IE7モードで動きます。これはそういう仕様です。しょうがないですね。

ここでは、タブブラウザの興隆に大きく寄与し、Sleipnirにも大きな影響を与えたブラウザ、MoonBrowserを例にとって説明します。MoonBrowserのバージョンはver 0.50 A build 2106。更新は2003/09/08で止まっています。IE7にすら対応していません。

当然、このままではIE9の性能は発揮できませんが、まずAcid2テストAcid3テストSunSpiderベンチを動かして見ましょう。Acid2テストは主にCSS標準への準拠度を、Acid3テストはDOMやJavaScriptなどのさらに多くのウェブ標準への準拠度を、SunSpiderベンチはJavascriptの速度を測るテストです。

Acid2
Acid3
SunSpider

はい、ぼろぼろですね。Acid2はひでぶ状態、Acid3は13点? SunSpiderベンチは動作すらしません。


レジストリにMoonBrowserを登録する

では、早速今回の肝、レジストリへの登録を行いましょう。ちなみに一応言っておきますが、レジストリを弄るのは完全に自己責任でお願いします。普通に操作すれば起動しなくなるとか、まずあり得ませんが。


ではまずレジストリエディタを起動しましょう。スタートボタンから、ファイル名を指定して実行を選び regedit と入れてください。


レジストリエディタは起動しましたか? 設定を行うキーは
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
です。HKEY_CURRENT_USERから順々に階層を降りていきましょう。

このキーはブラウザがどのモードで動くかを指定します。>MS社の資料を参考に。大ざっぱに言うと値が7000ならIE7モード、8000ならIE8モード、9000ならIE9モードです。IE10/11を使ってるなら、10000でIE10モード、11000でIE11モードになります。


はい、たどり着きました。右側の項目がレジストリに登録してあるブラウザです。ここは人に依って違います。多くの人はiexplore.exeしかないでしょう。


右側のエリアの空白のところで右クリック>新規>DWORD(32ビット)値 を選択。


キーの名前はMoonBrowserの実行ファイル名である、mb.exe にします。


今度は今作ったそのキーをダブルクリックします。10進数にチェックして、まず数字を 8000と入れてみましょう。


はい、これでMoonBrowserをIE8モードで動かすように登録しました。


IE8モードでMoonBrowserを動かす

では早速、IE8モードのMoonBrowserでAcid2テストAcid3テストSunSpiderベンチを動かしましょう。

Acid2
Acid3
SunSpider

Acid2テストは見事に合格。スマイルマークが出ました。Acid3テストはIE7モードの時よりはマシですが、21点ですね。SunSpiderベンチは477.6msです。IE7モードの時はベンチすら動かなかったので大きな進歩です。


IE9モードで登録する


今度こそ、念願のIE9モードです。同じキーで、今度は数値に9000を入れましょう。IE10を使っている場合は10000、IE11を使っている場合は11000です。


登録を確認。

では、恒例のAcid3テストSunSpiderベンチです。Acid2テストはIE8モードですでに合格したので省きます。

Acid3
SunSpider

はい、Acid3テストは95点。これは素のIE9と同じ点です。SunSpiderベンチはより速くなって276.8msになりました。これも素のIE9とほぼ同じ数字です。Web準拠度、Javascriptの実行速度共にIE9と同じになりました。やったね。


お次はGPU支援

これでMoonBrowserもIE9と同等の機能になった? いえいえ、まだ気が早い。IETestDriveにある、FishIE Tankを見てましょう。魚の数は1000匹で。


うーん、メチャクチャ重いですね。スコアは2〜3FPSしか出ていません。これはIE9の特徴の一つである、描画にビデオカードの性能を使う、という機能(GPU支援)が無効になっているせいです。


レジストリエディタを起動して、今度はさっきより少し下にある
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_GPU_RENDERING
を見てましょう。

このキーはブラウザのGPUレンダリングの有効か無効かを指定します。>MS社の資料を参考に。値が1なら有効、0なら無効です。


先ほどと同じ手順で、新規>DWORD値からmb.exeをまず登録。ダブルクリックして値を1にします。10進数でも16進数でも1は1です。


MoonBrowserを一度終了させて、FishIE Tankにリベンジです。はい、今度は32FPS出ました。動きもなんとか見られるレベルです。素のIE9だと50FPSは出るのですが、コンポーネントブラウザでは今のところ、これが精一杯のようです。

ちなみにレジストリに登録した場合でも、インターネットオプション>詳細設定>GPUレンダリングではなくソフトウェアレンダリングを使用する、にチェックが有った場合はそちらの設定に従ってGPU支援は無効になるので注意してください。


さらに高速に、同時接続数を増やす

以上のレジストリはIE9モードで動かすためのものですが、さらに高速にさせる方法があります。それは同時接続数の増加です。これが少ないとページ内の画像などを読み込む際に、一つの画像の読み込みが終わってから、次の画像の読み込みを始める、といった挙動になります。また同時に幾つものファイルをダウンロードするときにもこの値が参照されます。

最近はネットへの接続速度も速くなっているので、同時接続数を増やせば、それだけの数の画像を同時に読み込んで一気に表示させることが出来るようになるでしょう。ただし、同時接続数は増やしすぎても、相手のサーバーに迷惑をかけるだけだし、自分の回線速度以上には読み込めないので、ほどほどの値にしたおくのが無難です。回線が遅い人の場合は増やしすぎても逆効果になるでしょう。


設定すべきキーはFEATURE_GPU_RENDERINGのさらに下の方にある、
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_MAXCONNECTIONSPER1_0SERVER
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_MAXCONNECTIONSPERSERVER
の二つです。同じように mb.exeのキーを作ります。値には2〜128の数値を入れます。10から20の値を入れるのが無難です。多すぎても意味がありません。


とりあえず、10にしてみましょう。

このキーはHTTP接続の最大同時接続数を指定します。HTTP 1.0とHTTP 1.1の二つの規格があるので、両方とも指定します。>MS社の資料を参考に。値は2〜128までが有効になります。IE9の基本値は(多分)6です。


省電力モードの解除

コンポーネントブラウザで使用時に、CPUが省電力モードで動いてややパフォーマンスが落ちることがあるようです。以下のレジストリに実行ファイル名を登録することで、電源設定と連動して動くようになります。


登録するキーは二つです。
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_ALIGNED_TIMERS
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_ALLOW_HIGHFREQ_TIMERS
この二つのキーにもやはり実行ファイル名を登録します。新規>DWORD値からmb.exeをまず登録。ダブルクリックして値を1にします。

この二つのキーが存在しない場合があります。その場合はFeatureControlキーの上で右クリック>新規>キーと進んで

新規にキーを作って、名前をFEATURE_ALIGNED_TIMERSFEATURE_ALLOW_HIGHFREQ_TIMERSで登録してください。

このキーに関してはまだ説明されているページがありません。また登録してもベンチマークの結果が全く変わりない場合もあります。


DOMストレージの無効化

IE11環境でコンポーネントブラウザを使用した場合、徐々に反応が悪くなり、止まってしまうことがあるようです。DOMストレージとはクッキーに近い機能で、ローカルにちょっとしたデータを保存する仕組みです。DOMストレージを無効にすることで動作が改善される場合があります。


HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DOMSTORAGE
以下に実行ファイル名を登録してください。値は0を入れるとDOMストレージが無効になります。

ただし、DOMストレージを使用しているサイトではログインできないなどの問題が出ますので、その時は素のIEを使うか、Chrome、Firefoxを使うといいでしょう。無論、このレジストリ項目を消してブラウザを再起動してもいいです。

現在、AnciaではDOMストレージを有効にしたまま、IE11に対応しています。


レジストリへの登録完了

これでMoonBrowserのレジストリへの登録は終わりです。MoonBrowser以外で自分の使っているブラウザを登録したければ、その名前で登録するだけです。IE6時代の古いコンポーネントブラウザでもIE9の性能が、完全ではないですが、まぁまぁ発揮できるようになりました。これでコンポーネントブラウザはあと10年は戦えますね。

設定すべきレジストリのまとめです。mb.exeの部分は登録したいブラウザの実行ファイル名にしてください。

  • HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
     DWORD 値の名前:mb.exe 値のデータ:9000
     DWORD 値の名前:mb.exe 値のデータ:10000 IE10の場合はこちら。
     DWORD 値の名前:mb.exe 値のデータ:11000 IE11の場合はこちら。
  • HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_GPU_RENDERING
     DWORD 値の名前:mb.exe 値のデータ:1
  • HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_MAXCONNECTIONSPER1_0SERVER
     DWORD 値の名前:mb.exe 値のデータ:10
  • HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_MAXCONNECTIONSPERSERVER
     DWORD 値の名前:mb.exe 値のデータ:10
  • HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_ALIGNED_TIMERS
     DWORD 値の名前:mb.exe 値のデータ:1
  • HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_ALLOW_HIGHFREQ_TIMERS
     DWORD 値の名前:mb.exe 値のデータ:1
  • HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DOMSTORAGE
     DWORD 値の名前:mb.exe 値のデータ:1  IE11の場合のみ。不具合が出たら削除。

レジストリのFeatureControl以下には、今回使った6項目以外にもたくさんの項目があります。それらの利用法が解明されれば、IE9と全く同じ性能を引き出すことが出来るようになるかも知れません。ただ、IE9と同等の速度で動かすにはコンポーネントブラウザ側がマルチスレッドに対応している必要があるようです。

繰り返しますが、これらはあくまでもIE9モードで動かしているだけで、IE9環境で正常に動作する、ということではありません。ダイアログを自動で閉じるが効かない、とかブラウザのほうでの対応が必須なものもたくさんあります。なるべくなら、IE9対応を謳っているブラウザを使った方が、精神衛生上よろしいでしょう。


レジストリへの登録を解除する

もし、レジストリへの登録を解除したい場合は、上記で作ったキーを削除するだけです。


mb.exeの上で右クリック>削除 を選択します。


怖い警告メッセージが出ますが、迷わず削除。怖かったら消さなくていいです。キーが残っていてもなにも問題は出ません。

WebMaster めるてぃ