Windows10でIE8を使う

**「そんなの無理に決まってるでしょ？？ :blush: 」**

でもイントラ向け業務アプリはIE8に依存してるし……
なのにWindows10はブラウザがIEじゃなくてMicrosoft Edgeになっちゃったし……

そうだ、バージョンアップせず使い続けよう。

――そうじゃないよね。
Windows10にはIE実行環境が互換性のため残っています。
さらにそこには旧IEをエミュレートするモードが搭載されているのです。

## お品書き
1. Edgeで業務アプリを開こうとしたらIEへ転送する
2. IEで旧IEをエミュレートするモードの設定をする（エンタープライズモードの設定）

## 作業環境
Windows10 (Version 10.0.10240)
※Version 10.0.**10586** だと少し読み替えが必要です

## Edgeで業務アプリを開こうとしたらIEへ転送する
まず転送する業務アプリのURLを管理する一覧を作成します。「エンタープライズモード サイト一覧」とか呼ばれてます。

#### 「エンタープライズモード サイト一覧」の作成
1. 設定用のツール「Enterprise Mode Site List Manager」をダウンロードしてインストールします
    - https://www.microsoft.com/en-us/download/details.aspx?id=42501
    - 10586 の場合はこっち→ https://www.microsoft.com/en-us/download/details.aspx?id=49974
2. インストールするとデスクトップにアイコンが作成されるので起動します
3. 起動したら左下の『Add』をクリックして業務アプリのURLを入力します
4. 続けて「Launch in」に「Default Mode」を選択、「Open in IE」にチェックを入れます（※10586の場合は表記が少し違います）
5. 『Save』をクリックした後、メニューから「Save to XML」を選択し適当な場所へ保存します

こんな感じで登録する
![01.PNG](https://qiita-image-store.s3.amazonaws.com/0/109331/e7b77429-b65c-64f1-9d9d-952a5c035211.png)

#### Webサーバーへの一覧の設置
次に「エンタープライズモード サイト一覧」をWebサーバーの公開ディレクトリに設置します。今回はローカルにIISをインストールして一覧を設置しました。ただ**ローカルのWebサーバーだとうまく設定が反映されなかったりする**ので基本的には別マシンで構築したほうが良さそうです。その場合は以下の手順4.だけ行います。

1. タスクバーの『スタート』ボタンを右クリックして「プログラムと機能」を選択します
2. 「Windowsの機能の有効化または無効化」を選択します
3. 「インターネット インフォメーション サービス」にチェックして『OK』をクリックします
4. 保存していた「エンタープライズモード サイト一覧」を公開フォルダに置きます。IISなので「c:\inetpub\wwwroot」ですかね。
5. Edgeにlocalhostへのアクセスを許可するためコマンドプロンプトを管理者モードで起動しコマンドを実行します

```bat:実行するコマンド
CheckNetIsolation.exe LoopbackExempt –a -n=microsoft.microsoftedge_8wekyb3d8bbwe
```

#### グループポリシーでの転送設定
最後にグループポリシーで転送設定を有効にします。

1. gpedit.msc（ローカルグループポリシーエディター）を起動します（Win+rとかで）
2. 「コンピューターの構成 > 管理用テンプレート > Windowsコンポーネント > MicrosoftEdge」と進みます
3. 「エンタープライズ サイト一覧の構成を許可する」を有効にし、オプションのURLへ公開フォルダに置いたサイト一覧を指定します e.g. `http://localhost/testList.xml`
4. コマンドプロンプトを管理者モードで起動しポリシーを最新の状態に更新します

```bat:実行するコマンド
gpupdate /force
```

ではEdgeで業務アプリにアクセスしてみましょう。IEは起動しましたか？しましたよね？期待通りに動かない場合はWebサーバーをローカル以外で構築しましょう。うまくいかないのはだいたいlocalhostのせい。

## IEで旧IEをエミュレートするモードの設定をする（エンタープライズモードの設定）
EdgeからIEが開いたところで起動するのはIE11なので業務アプリさんとしてはあまり嬉しくない場合が多いと思います。ということでIE11をIE8エミュレートモードで動かしてみます。

#### IE8エミュレートモードの設定
1. 「Enterprise Mode Site List Manager」を起動します
2. 登録していた業務アプリのURLを選択して『Edit』をクリックします
3. 「Launch in」に「IE8 Enterprise Mode」を選んで『Save』をクリックします
4. メニューから「Save to XML」を選択して保存します
5. 保存したファイルをWebサーバーの公開ディレクトリに設置します
6. gpedit.msc（ローカルグループポリシーエディター）を起動します
7. 「コンピューターの構成 > 管理用テンプレート > Windowsコンポーネント > Internet Explorer」と進みます
8. 「エンタープライズ モード IE の Web サイト一覧を使用する」を有効にし、オプションのURLへ公開フォルダに置いたサイト一覧を指定します e.g. `http://localhost/testList.xml`

では業務アプリにアクセスしてみましょう。アドレスバーにビルのアイコンが表示されていれば設定完了です。反映されるまで最大65秒かかるらしいのでうまくいかないようって時は少し待ってみてください。
![02.PNG](https://qiita-image-store.s3.amazonaws.com/0/109331/cde6e89a-f03a-ca27-71b5-1949580c08c2.png)

#### IE8エミュレートモードなのにちゃんと動かない！！！１１１！１１
もしかしてあなたの業務アプリはIE8向けに作られていないのでは？

試しに業務アプリにIE8でアクセスしてF12キーを押してみてください。右上に「IE8互換表示」とかって表示されてませんか？
![03.PNG](https://qiita-image-store.s3.amazonaws.com/0/109331/f5dd899d-5336-0c30-faa8-40f101f47e62.png)

これは「イントラネット サイトを互換表示で表示する」という設定が有効になっている可能性が高いです。メニューから「ツール > 互換表示設定」で確認できます。
![04.PNG](https://qiita-image-store.s3.amazonaws.com/0/109331/1fd20dec-9d54-2aa7-d99a-de1b36261f78.png)

これはどんな設定かというと「イントラネットのサイトはIE7互換かIE5互換で良い具合に表示するよ」という感じの設定です。というわけであなたの業務アプリはIE8ではなくIE7 or IE5向けに作られている可能性があります。

で、どうすれば良いのか。「エンタープライズモード サイト一覧」を作成する際、「Launch in」に「IE8 Enterprise Mode」を選んでいましたがこれを「IE7 Enterprise Mode」に変えます。これでイントラネット互換表示と同じ動きになります。

めでたしめでたし。

## おわりに
- エンタープライズモードを使うと最新のOSとブラウザを使いながらレガシーIE向けの業務アプリも利用できます
- 「エンタープライズモード サイト一覧」をモダンブラウザ対応しないといけないTODOリストにして、早くエンタープライズモードを卒業しよう
- Enterprise Site Discoveryを使うと「Launch in」に何を設定するのが適切か知ることができるのだけれど、それはまた別のお話。

## 元ネタ集
- [Continuing to make it easier for Enterprise customers to upgrade to Internet Explorer 11 — and Windows 10](https://blogs.windows.com/msedgedev/2015/11/23/windows-10-1511-enterprise-improvements/)
- [Web Application Compatibility Lab Kit](https://technet.microsoft.com/ja-jp/browser/mt612809)