移行のポイントと非互換事例

Internet Explorer 11 への移行
移行のポイントと非互換事例
Internet Explorer 移行のガイダンス
長期的には、Web アプリケーションを
モダンな標準にアップグレードすることを
お勧めします
短期的には、既存 Web アプリヘの
後方互換性はコスト効率に優れた手段に
なり得ます
2
本日セッションの内容
検証に入る前に
互換機能を知る
現状を知る
適切な設定を行う
方針検討のポイント
事例)互換性問題と差異
互換性問題
IE8 と IE11 との差異
検証時に利用可能な各種ツール
3
検証に入る前に
4
IE の移行でご相談をいただく場合によくある会話
御社の PC の標準機の構成は
どうなっていますでしょうか?
会社の標準機は Win7 + IE8 が展開されています。
では、御社の Web アプリケーションですが、
どの IE 向けに開発されていますでしょうか?
IE8 ですね。
(さっき、標準機が Win7 + IE8 って言ってるのに…)
検証に入る前の準備
事前準備なしで OS や IE のデフォルト設定のままで検証を開始すると…
多くの
レイアウト崩れ
スクリプト
エラー
動作検証の実施
改修対象として
そのまま登録
莫大なシステム
改修
事前に準備をした上で検証を開始すると…
互換機能を知る
現在の状態を知る
動作検証の実施
適切な設定
レイアウト崩れ
スクリプト
エラー
互換機能で
エラーを回避
最小限の
システム改修
IE の差異を理解
業務への影響を判断
6
方針検討のポイント
7
互換機能を知る
従来の動作とは異なる Internet Explorer 11 の 2大非互換ポイント
ドキュメントモードの追加と判定ロジックの変更
• 特にドキュメントモードの指定が無かった場合、IE11標準モードになる
• IE5 Quirks と HTML5 Quirks
• 旧バージョンの IE とは異なるモードになり、レイアウト崩れや
スクリプトエラーが発生
User-Agent の変更
• サーバーへ送信するブラウザーの種類、バージョンを表す文字列の変更
• サーバー側で「 IE かどうか」を判定している場合、「 IE では無い」と
判定されるため動作が変わる
互換機能を知る
8
IE11のドキュメントモード判定の違い
原因:ドキュメントモードの判定
IEはバージョンを重ねるごとにそのバージョンに対応したドキュメントモードを搭載
特に指定の無い場合、新しいバージョンのドキュメントモードを使用
IE11 と IE8 とで使用するドキュメントモードが異なる
IE11
事象:ドキュメントモードが異なる際に発生する事象
レイアウト崩れ
ボタンが押せない、画面が進まない
HTML5
Quirks モード
互換機能を知る
DTD 判定のみの定義で
遷移するモード
DTD 判定のみの定義で
遷移するモード
IE10標準モード
対応策:ドキュメントモードの指定
HTML META タグ
HTTP Response ヘッダー
互換表示設定
エンタープライズモード
IE11標準モード
IE8
IE9 標準モード
IE8 標準モード
IE8 標準モード
IE7 標準モード
IE7 標準モード
IE5 Quirks
モード
IE5 Quirks
モード
9
IE11のドキュメントモード判定の違い
対応策
IE設定(ユーザー、管理者)
エンタープライズモード
サイトリスト
メニューから有効化
アプリ設定(開発者)
HTTP Response ヘッダー 追加
Web サーバーへの設定
設定例:
X-UA-Compatible : IE=EmulateIE8
※メニューに表示させるためにレジストリ設定が必要
互換表示設定
設定画面から追加
ドメイン単位指定
または
イントラネットサイト
互換機能を知る
HTML METAタグ
HTMLファイルへの設定
設定例:
<meta http-equiv=“X-UA-Compatible”
content="IE=EmulateIE8">
10
ドキュメントモード判定・User-Agentの変更
- 概要-
クライアント
Web Server
リクエスト
HTTP Request
User-Agent
ブラウザーの種類・バージョン情報の提供
ドキュメントモード
の決定
レスポンス
Header
HTML etc
業務ロジック
HTTP Response
サーバーの処理結果でドキュメントモード
指定が可能(ヘッダー or HTML)
“MSIE”が含まれていた
ら・・・のような処理
レンダリング/
スクリプト処理
JavaScriptで、“MSIE”が
含まれていたら・・・
のような処理
互換機能を知る
11
現状を知る
現行のIE設定確認
IE8 互換表示設定
インターネットオプション
セキュリティオプション
セキュリティゾーン設定
詳細設定
互換表示設定
移行対象のアプリケーション
規模
認識したセキュリティゾーン
ドキュメントモード
パッケージ(アドイン含む)の使用有無
現状を知る
12
適切な設定
IE11 のインストール
インターネットオプションの一部は IE11 の既定値になるため、IE8 へ合わせる
グループポリシー
IEメンテナンスポリシーは、IE10 以降で廃止
別の方法を検討要
グループポリシー 管理用テンプレート
グループポリシー 基本設定
インターネット設定
ショートカット
レジストリ
ドキュメントモード
互換機能を利用し、ドキュメントモードを合わせる
現状を知る
13
互換表示設定の利用
互換表示設定の利用
IE8で互換表示設定を利用している場合は、引き続きIE11でも互換表示設定を利用
エンタープライズモードとの併用も可能
IE8の互換表示設定と同等の動作
検討事項
既定ではプロキシを経由しない
サーバーは互換表示設定となるため、
意図せず利用しているケースがある
ドメイン指定は細かくできない
適切な設定
14
その他の設定に関連する検討事項
ゾーンの検討
ローカルイントラネットの利用
ナチュラルメトリックが無効になる(IE8と同等)
既定で互換表示設定が有効になる
プロキシが設定されている環境でプロキシを経由しない場合ローカルイントラネットとなる
CSS Expression
信頼済みサイト、ローカルイントラネット ゾーンで有効
複数のゾーンに合致した場合
より具体的な条件に合致した方が優先
例1) 信頼済み= *.contoso.com / ローカル= www.contoso.com の場合、ローカル
例2) 信頼済み= *.contoso.com / プロキシを経由しない接続の場合、信頼済み
Windows 10 のIE (予定)
以下のいずれかのみでX-UA-Compatible が有効となる
ローカルイントラネット
互換表示設定
エンタープライズモード
パッケージ製品
パッケージ製品は開発元の意向に従う
適切な設定
15
エンタープライズモードの利用
エンタープライズモードを利用すべきかどうか
エンタープライズモードの運用面の特徴を理解して判断
運 社外などドメインの外のユーザーの利用が困難
用
エンタープライズモードの設定は、グループポリシーまたはレジス
面
トリ設定であるため、その管理外の利用者に使ってもらうのは困難
で
の サイトリストは1つのみ
注
全社のWebアプリケーションを一つのサイトリストで管理できるかどうか
意
IE9以降のドキュメントモードを指定できない
ポ
METAタグ等で、IE9以降のドキュメントモードを指定しても、エン
イ
タープライズモードがONでは無視されるため、
ン
新しいWebアプリケーションで、IE11標準モード等を使用する場合
ト
には、エンタープライズモードをOFFにする必要がある
適切な設定
16
事例)互換性問題と差異
17
事例1
プロファイル
Windows 7 32-bit & IE8 から、Windows 7 32-bit & IE11 への移行
200以上のWebアプリケーション
パッケージは個別対応
社外者が使用するアプリケーションが存在
予算規模を把握するため、部分抽出したアプリケーションを簡易検証
検証期間は約1か月
検証方針
社内向けアプリケーションは、エンタープライズモードを利用
社外向けアプリケーションは、一旦、エンタープライズモードを使わずに検証
互換性問題が発生した際に、他の互換機能が利用可能かを調査
IE8で互換表示設定を使用しているアプリケーションは、IE11でも引き続き互換表示設定を利用
発生した問題
200件近くの問い合わせ、問題が発生
事例2
プロファイル
Windows 7 32-bit & IE8 から、Windows 7 32-bit & IE11 への移行
10以上の社内向けWebアプリケーション
すべて信頼済みサイトで運用
パッケージは対象外
予算規模を把握するため、部分抽出したアプリケーションを簡易検証
検証期間は約2か月
検証方針
エンタープライズモードを利用
ローカルイントラネットゾーンで検証
ナチュラルメトリックを無効化するため
発生した問題
50件近くの問い合わせ、問題が発生
検証で発生した互換性問題と差異
互換性問題
• アドインが実行できない
• ナチュラルメトリックの仕様変更によるレイアウト崩れ
• フォントの種類の相違
• ハイパーリンクのリンク先URLのポップアップ
IE8とIE11との差異
• ユーザーインターフェースの相違
• コントロール部品のデザインの相違
• ファイルダウンロードの際のUIの相違
20
互換性問題
21
アドインが実行できない
アドインの動作に関する問題
拡張保護モードにより、32-bit アドインが動作しない
IE11におけるメモリ保護関連のセキュリティ強化により、一部アドインが動作しない
対応方法
32-bit アドイン
エンタープライズモード
有効時に拡張保護モードがOFFになるため実行可能
セキュリティゾーン
ローカルイントラネット、信頼済みサイト いずれかに入っていれば実行可能
メモリ保護
互換機能では対応できない
アドインのバージョンアップが必要
22
ナチュラルメトリックの仕様変更 1/2
非互換の概要
レイアウト崩れ
IE8 と IE11とで文字の大きさが異なり、文字の折り返し位置が変わったり、行数が増えたりする場合がある
テキストボックスの長さにも差異が発生する場合がある
IE8
IE11
原因
既定でナチュラルメトリック機能が有効になっていることによる
IE8にはナチュラルメトリック機能が無い
エンタープライズモードでは回避できない
対応方法
次スライドに記載
23
ナチュラルメトリックの仕様変更 2/2
対応方法
対応方法
設定箇所
設定内容
HTTPヘッダー
Web
サーバー
X-UA-TextLayoutMetrics: gdi
METAタグ
HTML
<meta http-equiv="X-UA-TextLayoutMetrics" content="gdi" />
セキュリティ
ゾーン
IE設定
ローカルイントラネット ゾーン
※信頼済みサイトに登録している場合は登録削除要
24
フォントの種類の相違
非互換の発生条件
フォント指定なし
+
文字エンコードが
UTF
→
互換性問題例
IE11
IE8
差異の例
UIフォント
IE8とは異なる
フォントの選定
IE8
IE11
英語フォント
対応方法
フォントを明示的に指定
25
リンク先URL のポップアップ
非互換の概要
ハイパーリンクのリンク先URLがブラウザーの左下にポップアップする
ステータスバーを表示している場合は、ステータスバーにリンク先URLが表示される
IE9からステータスバーを既定で非表示にした際に合わせて変更した動作
ポップアップの例
ステータスバーが非表示の場
合にリンク先がポップアップ
問題となる状況
リンク先URLを隠す目的でステータスバーを非表示にしていたWebアプリケーションで、URLが表示さ
れてしまう
対応方法
リンク先をJavaScriptに変更
26
IE8 と IE11 との差異
27
ユーザーインターフェースの相違
タイトルバー、ステータスバーのデフォルト非表示化
メニューバーは
既定で表示
ステータスバーは
既定で表示
メニューバーは
既定で非表示
ステータスバーは
既定で非表示
タイトルバーの製品名からWindowsを削除
(クラッシックテーマ時のみ)
IE8
IE11
28
コントロール部品のデザインの相違
非互換の概要
同じドキュメントモードでも、コントロール部品のデザインにIE8とIE11で差異がある
差異の例
コントロール部品のデザインが3Dからフラットに変更になったことによる
IE8
IE11
入力時に入力ボックスに“×”が表示される
(“×”は、入力した文字列を削除するためのボタン)
対応方法
この差異をIE8に戻す方法はありません
29
コントロール部品のデザインの相違(続き)
差異の例(ドロップダウンリストボックス)
選択肢の表示方法
IE11では選択している項目の上のアイテムも表示
対応方法
IE8
IE11
この差異をIE8に戻す方法はありません
30
ファイルダウンロードの際のUIの相違
非互換の概要
IE9以降でダウンロード時に通知バーが表示されるようUIが変更された
ダウンロードUI
HTTPヘッダーによって、通知バーを表示するか、ダイヤログとなるかが決定される
ヘッダーに Content-Disposition: attachment が含まれる、または拡張子が登録されていない場合
通知バーが表示
ヘッダーが Content-Disposition: inline 、またはヘッダーなしの場合で拡張子が登録されている場合
ダイヤログが表示
対応方法
この差異をIE8に戻す方法はありません
31
検証時に利用可能な各種ツール
32
Enterprise Site Discovery Toolkit 1/2
IEがアクセスしたWebサイトのドキュメントモード等の情報を収集するツール
Collect data using Internet Explorer Site Discovery
https://technet.microsoft.com/en-us/library/dn833204.aspx
ツールの構成
テレメトリ機能有効化 Powershell スクリプト
SCCM 用 テレメトリ情報収集 インベントリ定義ファイル
SCCM 用 テレメトリ情報 レポートテンプレート
テレメトリ機能が有効化されると、IEでアクセスした情報が蓄積される
蓄積した情報を WMI を介して取り出すことが可能
SCCM のハードウェアインベントリで収集するほか、Powershell など WMI へのコマンドが実行できる
環境からデータを抽出することも可能
各サイトごとのアクセス時の状態が収集可能
セキュリティゾーン
ドキュメント モード
ドキュメント モードの判定理由
実行例
Get-WmiObject -namespace root/cimv2/IETelemetry -query "Select * from IESystemInfo"
33
Enterprise Site Discovery Toolkit 2/2
収集可能なシステム要件
Internet Explorer 11
2014年10月以降の累積的な更新プログラム
2015年3月以降の累積的な更新プログラムを推奨
Internet Explorer 8,9,10
2015年3月以降の累積的な更新プログラム
収集項目
収集項目
URL
Domain
ActiveX GUID
ドキュメントモード
ドキュメントモード判定理由
ブラウザーモード
ハング回数
クラッシュ回数
直近のエラー
訪問回数
ゾーン
IE11 IE10 IE9 IE8 説明
X
X
X
X 閲覧したサイトのURL(パラメーター含む)
X
X
X
X 閲覧したサイトのドメイン
X
X
X
X ロードしたActiveXコントロールのGUID
X
X
X
X ドキュメントモードの判定結果
ドキュメントモードの判定理由
X
X
現在のブラウザー状態の理由
X
X
X
X
X
X このサイトでブラウザーがハングした回数
X
X
X
X このサイトでブラウザーがクラッシュした回数
直近のナビゲーションエラー(404 bad request 、または 500 internal server error 等) 、
X
X
X
X
およびその回数
X
X
X
X このサイトを訪問した回数
X
X
X
X このサイトのセキュリティゾーン
34
まとめ
互換機能を使用することでアプリケーションの改修規模を削減
検証時、業務に影響する問題なのか、無視できる差異なのかを意識し、
修正すべきかどうかを検討
IE の後方互換機能
を最大限に活用
互換機能を知る
現在の状態を知る
互換機能で
エラーを回避
最小限の
システム改修
動作検証の実施
IE の差異を理解
業務への影響を判断
適切な設定
検証ツールの活用
により効率的な情報収集
業務に影響する問題か
どうかを意識した検証
35
Appendix
ドキュメントモード判定・User-Agentの変更
エンタープライズモードの利用
ドキュメントモード判定・User-Agentの変更
- 概要-
クライアント
Web Server
リクエスト
HTTP Request
User-Agent
ブラウザーの種類・バージョン情報の提供
ドキュメントモード
の決定
レスポンス
Header
HTML etc
業務ロジック
HTTP Response
サーバーの処理結果でドキュメントモード
指定が可能(ヘッダー or HTML)
“MSIE”が含まれていた
ら・・・のような処理
レンダリング/
スクリプト処理
JavaScriptで、“MSIE”が
含まれていたら・・・
のような処理
互換機能を知る
38
ドキュメントモード判定・User-Agentの変更
- 対応方法のまとめ-
クライアント
Web Server
Request
User-Agent
User-Agent
通常モード:Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
互換表示設定:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/7.0; ・・・
Enterprise Mode: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; ・・・
ドキュメントモードの特定処理
IE11 標準モード
業務ロジック
Response
Header
HTML
CSS
JavaScript
HTML5 Quirksモード
IE10 標準モード
“MSIE”が含まれていた
ら・・・のような処理
IE9 標準モード
IE8 標準モード
IE7 標準モード
ドキュメントモードを指定可能
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">
(HTML METAタグとして設定)
IE5 Quirks モード
通常
モード
互換機能を知る
Enterprise Mode
(優先度:高)
ドキュメントモードを指定可能
X-UA-Compatible : IE=EmulateIE8
(Web Server 側で指定)
互換表示設定
(優先度:低)
39
User-Agent の変更 1/2
原因:User-AgentがIE8とIE11とで異なる
ブラウザーの種類やバージョンを示す情報がIE11で変更になったため
User-Agent の取得方法には2種類あり、対応方法がそれぞれ異なる
サーバーへ送信する User-Agent
クライアントのブラウザー内のJavaScriptで取得する User-Agent
事象:User-Agentに依存しているアプリで発生する主な事象
バージョンチェックエラー
対応方法
サーバーへ送信する User-Agent
エンタープライズモード
互換表示設定
JavaScriptで取得するUser-Agent
ドキュメントモードの指定
互換機能を知る
40
User-Agent の変更 2/2
2種類のUser-Agentの具体例
方式
サーバー送信
内容
HTTP Request Header
IE11では削除
IE8
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; ・・・
IE11
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
JavaScript
ドキュメント
モードで
対応可能
window.navigator.userAgent
IE11では削除
IE8
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; ・・・
IE11
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; ・・・
navigator.appName
IE8:Microsoft Internet Explorer
IE11:Netscape
互換機能を知る
41
エンタープライズモードの利用
エンタープライズモードの利用方法
特定のページを表示時にメニューから有効化
管理者指定したURLを自動的に有効化(サイトリスト)
エンタープライズモード設定
グループポリシー、またはレジストリで設定
メニューに表示させるかどうか
サイトリストの場所
適切な設定
「ツール」メニューに
「エンタープライズモード」の項目が追加
エンタープライズモードが
有効なサイトをアイコンで可視化
サイトリスト作成ツール
42
IE11 の互換機能の比較
エンタープライズ モード
IE11 互換表示設定
対応するドキュメントモード
IE8/7/5
(IE8 相当の動作)
特に指定が無ければ IE7/5
指定があれば指定したモード優先
有効化の方法
メニュー/サイトリスト
GPOまたはレジストリ設定要
ユーザー手動
GPO/IE の既定値の設定
設定できる単位
URL
ドメイン(TLD+α)
クライアントが送信する
User-Agent 文字列
IE8 の UA 文字列を送信
IE7 の UA 文字列を送信
拡張保護モードの無効化
対象のサイトのみ無効化が可能
✕
(インターネットオプションに従う)
事前レンダリングの無効化
○
✕
事前キャッシュの無効化
○
✕
CSS Expressionsのサポート
○
(IE8 相当の動作)
△
(信頼済み、イントラゾーンで動作)
Client Capsのサポート
○
(IE8 相当の動作)
✕
Script Versionのサポート
○
(IE8 相当の動作)
✕
適切な設定
■ 早わかり!エンタープライズモード: http://blogs.technet.com/b/jpieblog/archive/2014/08/08/3635654.aspx