Hebikuzure's Tech Memo

2014年12月18日

Internet Explorer とエンタープライズと HTML5

Filed under: Internet Explorer — hebikuzure @ 7:54 PM


この記事は HTML5 Advent Calendar 2014 の 18日目の記事として投稿しています。
Internet Explorer をターゲット ブラウザーとして開発されるようなエンタープライズ環境の Web システム / Web アプリケーションで HTML5 対応はどのように進められるのか、を考えてみました。


「HTML5」というキーワードが多くの人の話題に上るようになってもうずいぶん経ちます。今年は W3C の Recommendation にもなり、ある意味もはや「枯れた技術」化してきているのかもしれません。とは言え、HTML5 の仕様で実現できる機能をフルに使った Web サイト / Web アプリケーションからは程遠い世界もまだまだ世の中には少なくありません。その代表的なものとしてよく挙げられるのは、企業内 (エンタープライズ) 、特に日本のエンタープライズ環境があります。どうしてそうなのかと言えば、これはひとえに Internet Explorer の存在が大きいと言えるでしょう。Internet Explorer は Windows に標準コンポーネントとして含まれるため別途ライセンスやサポートの契約をする必要もありませんし、導入も Windows と一緒にできる、運用管理も Windows の Active Directory や System Center を利用して他の機能と一体的に行える、当然運用・保守・サポートの面倒を見てくれる SIer も多い (というかレベルはともかくできない所はまずない) ……とエンタープライズには都合の良い事が少なくなかったため、多くの場合「業務上の標準ブラウザー」として利用されてきました。

そのためエンタープライズの (イントラネットやエクストラネット) の Web システム / Web アプリケーションは Internet Explorer をターゲット ブラウザーとして開発されました。その傾向は、Netscape Navigator のシェアが急落した 1990 年代末から、Firefox や Chrome が信頼するに足るブラウザーとしての評価を確立する 2010 年頃までの間、特に顕著だったと言えるでしょう。そして非常に不幸な事に、それ以降の時期は日本のエンタープライズでは色々な事情で IT 投資が抑制される傾向にあり、Internet Explorer (特に Internet Explorer 6) をターゲットにした Web システム / Web アプリケーションは現時点でも延命している物が非常に多くなっています。

ところがそうした保守的な (特に日本の) エンタープライズの思惑とは異なり、Microsoft は Internet Explorer の開発方針を転換していきます。Windows Vista に含まれた Internet Explorer 7、Windows 7 に含まれた Internet Explorer 8 までは (タブ ブラウズなどの) 一定の機能強化は行うものの基本仕様は大きく変更されていません。しかしその後、Internet Explorer 9 の開発で方針が大きく変わります。世の中で言えば iPhone がヒットして、Android もそれに続き、(Windows Mobile などで Microsoft がやろうとしてもなかなか実現しなかった) モバイル デバイスの普及が大きく進み、当然そうしたモバイル デバイスからの Web アクセスが急増し、PC の世界でも Chrome や Firefox のシェアが増え、そして Web の新しいテクノロジーについて HTML5 を含めて標準化の機運が大きく盛り上がっていたタイミングです。

Internet Explorer 9 では、技術的な課題として「相互運用性 (interoperability)」が大きく取り上げられます (もちろんそれ以外にパフォーマンスや堅牢性、セキュリティも大きな課題でしたが)。そこでの「相互運用」の対象となるのは当然 Chrome や Firefox や Safari といった他のブラウザーであり、HTML5 を始めとする Web 標準です。IEBlog に "Web standards" や "interoperability" というキーワードが頻繁に登場するようになるのもこの頃からです。実際に 2011 年 3 月にリリースされた Internet Explorer 9 は HTMLのレンダリングや CSS の解釈、JavaScript の動作などでそれまでのバージョンとの後方互換性より、Web 標準に基づく相互運用性に重きが置かれた作りになりました。また今までの例とは異なり Windows に含まれない独立したバージョンとなったのも、Microsoft の意欲をうかがわせています。

その方向性はその後の Internet Explorer 10 (Windows 8 の標準ブラウザー)、Internet Explore 11 (Windows 8.1 の標準ブラウザー) でも加速されており、Web 標準に沿った動作は他のブラウザーとの相互運用性がより高くなっています

このように Microsoft は Internet Explorer を他のブラウザーと同等に動作し機能する Modern ブラウザーとして強化していく方向であるのに対して、先に述べたような古い Web システム / Web アプリケーションを延命させているようなエンタープライズではそうした方向は歓迎されていないようにも見えます。Internet Explorer のバージョンが更新されるごとに、動かなくなる Web システム / Web アプリケーションが発生し、それにどう対処させるのか苦慮している所は確かに少なくないでしょう。

(後ほど続きを書きます)

広告

2014年12月11日

12月の Office 更新プログラムインストール後、VBA でエラーが発生する

Filed under: Microsoft Office — hebikuzure @ 5:02 PM

2014年12月にリリースされた Office の更新プログラム MS14-082 をインストールした後、例えばマクロが有効な Excel ブックを開いた時に「Microsoft Visual Basic」の実行時エラーダイアログが表示され、シート上に挿入されているコントロールが操作できない状態になる場合があります。

手元ではエラーが発生しなかったので、どのようなエラー ダイアログが出るのか確認したい方は「山市良のえぬなんとかわーるど」の記事を参照してください

この現象は、次のようなシナリオで発生します。

  1. シートにフォームのコントロールを挿入した Excel ブックを作成します
  2. フォームのコントロールが挿入されると、コントロールのモジュール (MSForms、プログラム名としては fm20.dll) が呼び出されます
  3. 次回の挿入に備えてコントロールのモジュールのキャッシュが作成されます。このキャッシュは %temp%\Excel8.0 フォルダーに、拡張子 .exd で作成されます
  4. 更新プログラム MS14-082 をインストールすると、MSForms (fm20.dll) が更新されます。しかし作成済みのフォームのキャッシュは削除も更新もされません
  5. MSForms のコントロールを操作する VBA が呼び出されると、実際のコントロール (更新済み) とキャッシュ (未更新) の間でバージョン不整合となり、エラーが発生します

回避策

コントロールのキャッシュは手動で安全に削除する事ができるので、フォームを利用できる Office アプリケーションをすべて終了してから .exd ファイルを削除すれば、問題は回避できます。以下の手順で削除してください。また更新プログラムのインストール前に事前にこの手順を行っておくことで、エラーの発生を予防できます。

  1. フォームを利用できる Office アプリケーションをすべて終了します。またはコンピューターを一度再起動します
  2. [Win キー] + R で [ファイル名を指定して実行] を呼び出します
  3. [名前] ボックスに %temp% と入力して [OK] をクリックします
  4. %USERPROFILE%\AppData\Local\Temp\ フォルダーが開くので、Excel8.0 フォルダーを探します
  5. 見つかったら Excel8.0 フォルダーを開き、その中のファイルをすべて削除します (Excel8.0 フォルダーごと削除しても問題ありません)

参考

WordPress.com Blog.

%d人のブロガーが「いいね」をつけました。