• 【IE】 IE10 互換性の考え方と Compat Inspector

    先週が WDD だったわけですが、まぁ一週間の過ぎるのが速かったこと。体と精神は2週間分一気に消耗した気がします。それだけ期待も大きく、皆さんの盛り上がりもすごくて、感謝感謝です。

    今回 IE の方のセッションで IE10 の互換性を見る上で便利な手をご紹介しました。それをここでは書こうと思います。

    実は IE ブログの方で紹介されている Compat Inspector に関してです。
    http://blogs.msdn.com/b/ie_ja/archive/2012/02/08/ie10-compat-inspector.aspx

    私の方では手順仕立てで書きますね。

    〇Compat Inspector が何故生まれたか

    IE9・IE10 と Internet Explorer の根本開発方針が変わり、愚直に「しっかり固まり、揺れの無い標準」に関してはメジャーバージョンに取り入れる方針を決めました。ということで「セームマークアップ」を目指して他のブラウザーと表示、動作の類似点が大きくなっている特徴があります。

    IE6 は10年前には最先端を走っているブラウザーだったのですが、それ以降セキュリティ面での攻撃におけるさらなる脅威の広がり、Web 標準の進展によって様々なご負担を Web 制作の現場に強いてしまっています。このことからマイクロソフトでも積極的により新しいバージョンのブラウザーをお使いいただくことを推進しています。

    10年前は最先端な機能を多く持っていた IE6 が多くのお客様にご利用いただけたことは大変ありがたいことだったわけですが、他のブラウザーとの関係で現在の  Web ではマークアップをくみ上げる上で、 IE6 をターゲットとするために多くの分岐処理や表示の細工が必要となっていて、現場で悲鳴があがっています。IE9 の強力な推進によって、いよいよ IE6 を Web サイトのターゲットから外すことを表明されているインターネットサービスも増えてきていますので今後ここが変わっていくことになります。

    ただ、旧ブラウザーを対象外にしますと宣言したい場合に今のマークアップやスクリプトではどこをどう綺麗にするといいのか、今度はそこが問題になってしまいます。特にブラウザーの種類やバージョンで条件分岐をしているのをどうしたらいいのか、それが問題になります。そこでマイクロソフトでは Compat Inspector を作りました。

    〇Compat Inspector

    まず動作を見ていただくには以下のサイトを見るといいでしょう。

    IE TestDrive サイトにおける Compat Inspector デモ
    http://ie.microsoft.com/testdrive/HTML5/CompatInspector/Default.html

    このページの右上に出てくる信号機のような表示、これを Compat Inspector が表示しています。

    image

    簡単に言うと、IE9・IE10 対応において 重大事項が1つ、通常項目が4つあるよということを示しています。なので、数字の箇所をクリックすると詳細な内容を表示して、対処項目を確認するわけです。

    image

    Compat Inspector でよく登場する feature detection に関して少し補足。これまでは UserAgent を使ってブラウザー識別という方法をとっていたと思います。つまり ブラウザーの種類やバージョンを識別することでそれぞれに適応した処理や表示方法を制御するということです。これをやめましょうという提案になっています。

    ではどうするのかというと、実行しようとしているその処理あるいは機能自身が動くのかを直前に検査する方法を導入すべきだとしています。プログラミング歴が長い人はひょっとするとちょっと気持ち悪いかもしれないですが、Webでは結構みんな取り入れている方法です。何故気持ち悪いかというと例外処理、例えば Try ~ Catch しかも Catch もしっかり処理が入っている状況になるからで、要はコケさせて処理を決める方法論だからです。

    機能を検査する方法論として Modernizr を利用することをマイクロソフトではご紹介しています。

    Modernizr
    http://modernizr.com/

    検査例:
    if (Modernizr.touch)
    { // bind to touchstart, touchmove, etc and watch `event.streamId` }
    else
    { // bind to normal click, mousemove, etc
    }

    〇Compat Inspector の実装と必要な工夫

    Compat Inspector は非常に動作原理はシンプルなものです。JavaScript になっているので呼び出せばいいだけです。

    <script src="http://ie.microsoft.com/TestDrive/HTML5/CompatInspector/inspector.js">
    </script>

    試験環境では非常に簡単にすべてのスクリプトが実行される前にこの行を入れておけばいいのでシンプルです。それで上記で説明した手順に移れます。

    なんか凄い素敵ですが、いくつか環境によっては気になる点が出てきますね。

    ・社内システムでもやりたいけど、インターネットに繋がってない
    ・大規模システムではあるけどステージング環境は無いので<script>タグの挿入なんてとんでもない

    他にも色々とあるでしょう。でもここではこの二つを考えてみましょう。

    〇挿入方法が ie.microsoft.com を指している

    実は Inspector が指し示すアドバイスが参考文献を指していることが多いのでこれ結構残念です。でももしそういう環境であれば inspector.js をダウンロードしてアクセスできるところに置いてしまいましょう。

    〇<script>タグを容易に挿入できない

    これは悩ましいですよね。でも Fiddler をクライアント側に入れて対処できます。

    Fiddler
    http://www.fiddler2.com/fiddler2/

    これは Web デバッグをするための Proxy で、フリーウェアです。

    Fiddler2Setup.exe をダウンロードして普通のアプリケーションと同様にインストールするだけです。

    image

    Fiddler は多機能なので色々なことができますから習熟しておくと役立つこと請け合いですが、ここでは Compat Inspector を有効にする手順を書きます。

    ここでは Fiddler の Custom Rule 機能を使っています。

    http://ie.microsoft.com/testdrive/HTML5/CompatInspector/help/snippet.txt

    を見てここからコピペしましょう。

    // Snippet 1: Place this inside the "OnBeforeResponse" handler in your FiddlerScript

    と書いてあります。どうやんねん?ということですが。。。

    Fiddler のメニューから [Rules] – [Customize Rules] を実行します。
    そうするとメモ帳が開きます。

    Windows 7 環境では ライブラリ – ドキュメント – Fiddler2 – Scripts に CustomRules.js として置かれます。
    英語で書いてあるように 「OnBeforeResponse」を探して処理の最後に下記を追加します。

    InjectInspectorScript(oSession);

    // Snippet 2: Place this near the end of your FiddlerScript (within the Handlers class)

    同様にして今度は CustomRules.js の最後の } の直前に全文をコピペします。

    これで事前設定は終了です。Fiddler の [Rules] を見てみましょう。Use Compat Inspector が出れば成功です。

    image

    早速これをクリックして有効にしましょう。

    このブログのインフラには Compat Inspector の script タグは入っていませんが、以下のように表示されます。ブログのインフラチームにインプットしておかなきゃ。。。結構 Feature Detection ですねぇ。

    image

    ちなみにこの Inspector は IE7モードやQuirks モードでは動作しません。なので、これもドキュメントモードを IE9 標準に F12ツールで切り替えてみてみるといいでしょう。うまく動かないケースでは黒い背景にメッセージが出ますので。

    image

    〇指摘されている箇所の確認方法

    講演時にうまく動かなかった点なんですが、これも書いておきましょう。下図の赤線で囲ったところの使い方です。

    image

    Debug にチェックを入れましょう。
    F12 ツールを起動します。(IE 内で F12 キー)
    スクリプト タブ で デバッグを開始します。

    そうすると下記のように表示されるはずです。

    image

    ここからは環境によって動きが変わるかも。 Visual Studio などが入っている環境では デバッガーを選択する画面が表示されます。入っていなければ、F12内でのシンプルな処理になります。

    デバッガーを停止させた後、右のコールスタックを見ます。

    Inspector の一つ下が指摘されているコールになりますのでそこをクリックします。
    Feature Detection の指摘の場合には UserAgent を使っている箇所が指されます。

    という具合に使うのです。

    〇今後に向けて

    今 Compat Inspector は残念ながら全部英語ベースです。エラー メッセージの日本語化や指している参考資料を翻訳されている日本語を指すように組み替えると日本ではやはり便利ですよね。検討しますね。

     

  • 【WDD】 PL-008 の関連リソース

    25日の私の当該セッションにご参加いただいた皆様、ありがとうございます。
    ご紹介していた関連リソースをこちらでお知らせします。

    この投稿は http://bit.ly/PL-008 でも参照可能です。

    PL-008
    Internet Explorer 10 そしてそれ以降に対応するためには?

     

    http://channel9.msdn.com/Events/Windows-Developer-Days/Windows-Developer-Days-2012/PL-008



    Internet Explorer ブログ (日本語版)
    http://blogs.msdn.com/b/ie_jp/default.aspx?PageIndex=2

    Site-ready HTML5: Second IE10 Platform Preview Available for Developers
    http://blogs.msdn.com/b/ie/archive/2011/06/29/site-ready-html5-second-ie10-platform-preview-available-for-developers.aspx


    IE10 Compat Inspector
    http://blogs.msdn.com/b/ie_ja/archive/2012/02/08/ie10-compat-inspector.aspx

    Paintball で理解するハードウェア アクセラレーションの違いhttp://blogs.msdn.com/b/ie_jp/archive/2011/08/11/10194720.aspx

    IE Testing Center
    http://samples.msdn.microsoft.com/ietestcenter/default-JA.htm

    modernizr ライブラリ
    http://modernizr.com/

    Web のプラグイン フリー化と Web サイトhttp://blogs.msdn.com/b/ie_ja/archive/2012/02/02/web-web.aspx

    Connect your website to your Metro style app
    http://msdn.microsoft.com/en-us/library/IE/hh781489(v=vs.85).aspx

    Experience IE10
    http://ie.microsoft.com/testdrive/

    Compat Inspector
    http://ie.microsoft.com/testdrive/HTML5/CompatInspector/

    IE9 CVList
    http://ie9cvlist.ie.microsoft.com/ie9cvlist.xml

    Internet Explorer ブログ(日本語版)
    http://blogs.msdn.com/b/ie_jp/

    IEBlog 日本語
    http://blogs.msdn.com/b/ie_ja/

     

     

    ※2012年6月10日 記載

    本セッション実施後、Windows 8 Release Preview が公開された際に Metro スタイルの Internet Explorer 10 が Flash を表示できるようになったという発表がありました。この点に関しては Windows 開発部門が書いている下記のサイトを参照ください。

    http://blogs.msdn.com/b/ie_ja/archive/2012/06/08/windows-release-preview-the-sixth-ie10-platform-preview.aspx

  • 【WDD】 WA-016 の関連リソース

    24日の私の当該セッションにご参加いただいた皆様、ありがとうございます。 ご紹介していた関連リソースをこちらでお知らせします。

    この投稿は http://bit.ly/WA-016 でも参照可能です。

    WA-016
    JavaScript で Metro スタイル アプリ、パフォーマンスは?

     

     

    http://channel9.msdn.com/Events/Windows-Developer-Days/Windows-Developer-Days-2012/WA-016
     

    CUT the ROPE – IE キャンペーン(HTML5版)
    http://www.cuttherope.ie/

    IE TestDrive サイトにおける Speed Demos
    http://ietestdrive.com

    Metro スタイル アプリの技術情報
    http://dev.windows.com

    特にパフォーマンスに関する記事のありか
    http://msdn.microsoft.com/en-us/library/windows/apps/hh465194.aspx

    パフォーマンス分析に関する記事のありか
    http://msdn.microsoft.com/en-us/library/windows/apps/hh696636(v=vs.110).aspx

    Windows 開発チームのブログ
    http://blogs.msdn.com/b/b8_ja/

    Windows Store 開発者向けブログ
    http://blogs.msdn.com/b/windowsstore_ja/

    Windows 8 アプリ開発者ブログ
    http://blogs.msdn.com/b/windowsappdev_ja/

    特に、パフォーマンス関係の記事
    Metro スタイル アプリのパフォーマンスを改善する方法
    パフォーマンス キラーに立ち向かう: Metro スタイル アプリの一般的なパフォーマンスの問題

  • 【WDD】 セッションの難易度について

    これはマイクロソフトのイベントに過去出席されて、セッションの設定をいろいろ知っている人への情報でこれを書いておきますね。一応 検討した経緯もね。

    Tech・Ed というイベントについてまずは書きましょう。Tech・Ed というイベントはインフラから開発技術にまたがって広く様々なテーマを取り上げます。これにより、セッションが数十ある場合にどういうセッションなのかが非常にわかりにくくなりますのでレベルつけという発想が生まれ、2010年の Tech・Ed において 下記リンクのような形で 野村、安納、松崎とともに再定義をいたしました。

    http://www.microsoft.com/japan/teched/2010/home/level.aspx

    http://www.microsoft.com/japan/teched/2010/session/session.aspx
    「セッション ID、レベル、ジャンルの見方はこちら」というところをクリックいただければと。

    まったく別の方向性の話として、新製品 特に OS が登場するイベントの場合についての傾向です。新しいテクノロジーが登場した時にはそもそもそれがどういうものなのか、概要レベルの情報提供なしで難易度の高いセッションを多く並べると会場にいらっしゃる多くの受講者の皆さんが困ってしまいます。特に Windows 8 は Reimagined なわけで特にアプリケーション向けにはデザイン面も含めて概要面でおさえるべき点が多いです。

    結果、今回の WDD は新技術紹介が多いので単純な技術難易度は概要レベルが多くなりつつ、でもエバンジェリストの感覚的には実は消化するのが結構大変な情報提供が多いです。というのはデザインの領域は結構みんな不得意だったり、デザインが得意な人は逆にプログラムにどう影響が出るのがわからないからです。

    こういう背景からあえて今回はレベル分けをしないことに決めました。

    ぜひセッションの概要を読んでいただき、どのセッションを受講するか選んでいただければと思います。

    来週のこの時間にはもう1日目が終わってますね。。。
    スタッフのみんな準備はいいのかな? Yeah!ウインク

  • 【WDD】 エバンジェリスト厳選 WDD の歩き方公開

    Windows Developer Days もあと12日で開催という状況まで来ました。もうお申込みになられましたでしょうか。スタッフ、講師ともどもお待ち申し上げております。

    さて今回のイベントですが、組み立てている立場でもうーん自分が受講する側だったとしたらさぞかし受講の組合せに悩むなぁという実感がありました。エバンジェリストに色々と聞いていたらみんな同意見でした。

    結果、すべての皆さんに気持ちいいプランが描けたとは到底思えていませんが、ヒントになるだろうなと思いながら、特に一緒にセッション組み立てを考えている松崎と原案を作り、そこから発展させて色々と用意してみました。

    ご参加を悩まれている方にも有用な情報だと思いまして参加登録のページにおいています。

    Windows Developer Days 参加登録ページ
    http://www.microsoft.com/ja-jp/events/wdd/regi.aspx

    ダウンロード資料のところに追加されていますのでぜひご覧いただければと思います。さきに申し上げておきますと、当日の会場ではセッション名称とかが微妙に異なるところとかが出てしまっていますが、どのいうコースで受けるといいのか、私たちが考えた筋道は見えるかなと思います。

    よろしければご参考にお使いになり、申込み済みの方は歩き方をご検討いただき、もしまだご登録を悩まれている方がいらっしゃったら参加するとどういう情報が得られるのかをこの資料の中身からもご確認いただければ幸いです。ウインク