Internet Explorer のアーキテクチャ

Microsoft Internet Explorer ではモジュール構造のアーキテクチャを採用しているため、IE のコンポーネントのいくつかを再利用したり、IE の機能を拡張したりできます。 Internet Explorer の拡張の例には、カスタムのショートカット メニュー、ブラウザ ツールバー、Microsoft ActiveX コントロール、アクティブ ドキュメント、バイナリ ビヘイビアなどがあります。 ここでは、Internet Explorer のアーキテクチャの概要、そのコンポーネントの再利用についての情報、および開発者が利用できるすぐれた拡張方法のいくつかの簡単な説明を記載しています。 以下のセクションがあります。

  • COM ベースのアーキテクチャ
  • Internet Explorer の拡張

COM ベースのアーキテクチャ

最も適切な再利用メカニズムまたは拡張メカニズムを選ぶには、まず Internet Explorer のアーキテクチャを理解することが重要です。 IE のアーキテクチャで重要な点は、コンポーネント オブジェクト モデル (COM) を使用していることです。これにより、IE のすべてのコンポーネントの相互作用を制御し、コンポーネントの再利用と拡張を可能にしています。 以下の図は、Internet Explorer の主要なコンポーネントを示しています。

Internet Explorer のアーキテクチャ

これらの 6 つのコンポーネントのそれぞれについて、以下に説明します。

  • IExplore.exe は、最上位のコンポーネントで、Internet Explorer の実行可能ファイルです。 小さなアプリケーションで、Internet Explorer の他の主要コンポーネントに依存し、表示、ナビゲーション、プロトコル実装などの処理を行います。

  • Browsui.dll は、Internet Explorer のユーザー インターフェイスを提供します。 "クロム" とも呼ばれるこの DLL には、Internet Explorer のアドレス バー、ステータス バー、メニューなどが含まれています。

  • Shdocvw.dll は、ナビゲーションや履歴などの機能を提供し、一般に WebBrowser コントロール と呼びます。 この DLL は ActiveX コントロール インターフェイスを公開し、Microsoft Visual Basic、Microsoft Foundation Classes (MFC)、Active Template Library (ATL)、Microsoft .NET Windows Forms などのフレームワークを使用して、Microsoft Windows アプリケーションでこの DLL を簡単にホストできるようにしています。 アプリケーションが WebBrowser コントロールをホストしている場合、このアプリケーションには Internet Explorer のすべての機能が実装されますが、Browseui.dll が提供するユーザー インターフェイスは実装されません。したがって、独自のツールバーやメニューの実装を用意する必要があります。

  • Mshtml.dll は、Internet Explorer の中核となるもので、HTML とカスケード スタイル シート (CSS) の解析と表示の機能の処理を行います。 Mshtml.dll は、そのコード名の "Trident" と呼ばれることがあります。 Mshtml.dll は、これを アクティブ ドキュメント としてホストできるようにするインターフェイスを公開しています。 Microsoft Word、Microsoft Excel、Microsoft Visio、多くの Microsoft 以外のアプリケーションなどのアプリケーションも、アクティブ ドキュメント インターフェイスを公開しているため、shdocvw.dll によりホストすることが可能です。 たとえば、HTML ページから Word 文書にブラウズする場合、mshtml.dll に代わり Word が提供する DLL が読み込まれ、この DLL が Word 形式の文書を表示します。 スクリプト エンジン (Microsoft JScript や Visual Basic Scripting Edition (VBScript) など)、ActiveX コントロール、XML データなど、HTML ドキュメントのコンテンツに応じて、他のコンポーネントをホストするように Mshtml.dll を呼び出すこともできます。

  • Urlmon.dll は、MIME 処理とコード ダウンロードの機能を提供します。

  • WinInet.dll は、Windows Internet Protocol ハンドラです。 HTTP やファイル転送プロトコル (FTP) プロトコルのほか、キャッシュ管理機能を実装しています。

Internet Explorer の拡張

Internet Explorer のコンポーネント アーキテクチャは COM を基盤としているため、さまざまな方法で機能を拡張できます。 これらは、以下のように 3 種類の拡張に大別できます。

  • ブラウザ拡張 : エンド ユーザー拡張で、Internet Explorer コンテンツに機能を追加します。 これには、ショートカット メニュー拡張、カスタム ツールバー、エクスプローラ バー、ブラウザ ヘルパー オブジェクト (BHO) などの機能があります。

  • コンテンツ拡張 : 解析および表示できるコンテンツの種類を拡張します。ブラウザに読み込まれるコンテンツに応じて使用します。 このカテゴリには、ActiveX コントロール やアクティブ ドキュメントがあります。

  • ホストと再利用 : アプリケーションの一部として Internet Explorer コンポーネントをホストし再利用することで、独自のブラウザを開発したり、高度な表示機能やインターネット機能を追加できます。

ブラウザ拡張

この種の拡張は、ブラウザのユーザー インターフェイス (UI) を拡張するもので、Web ページに表示可能なコンテンツには直接関係がありません。 これには、ブラウザ エクスペリエンスを拡張するためにユーザーがインストールできるアドオン機能が含まれます。

  • ショートカット メニュー拡張 : ショートカット メニューにオプションを追加して、Internet Explorer を拡張することができます。 それには、実行する作業にメニュー コマンドを関連付けるレジストリ キーを追加します。 詳細については、 「Controlling the Context Menus」(英語) を参照してください。

  • ツールバー : カスタムのツールバーを追加して、Internet Explorer の標準ツールバーを補完できます。 MSN ツールバー は、この一例です。 詳細については、「Creating Custom Explorer Bars, Tool Bands, and Desk Bands」(英語) を参照してください。

  • エクスプローラ バー : エクスプローラ バーを使用すると、ブラウザ ウィンドウの横または下部に、ブラウザ ウィンドウの一部を保持できます。 詳細については、「Creating Custom Explorer Bars, Tool Bands, and Desk Bands」(英語) を参照してください。

  • ブラウザ ヘルパ オブジェクト : ブラウザ ヘルパ オブジェクト (BHO) は Internet Explorer 内で実行され、追加のサービスを提供します。ユーザー インターフェイスを持たないことが多い拡張です。 たとえば、BHO により、アドレスなどユーザーの興味のある語句を強調表示します。 詳細については、 「Browser Helper Objects: The Browser the Way You Want It」(英語) を参照してください。

コンテンツ拡張

この種の拡張は、Internet Explorer コンテンツにより明示的に呼び出されます。 このカテゴリには、ActiveX コントロールや、バイナリ ビヘイビア、アクティブ ドキュメントがあります。

  • アクティブ ドキュメント : アクティブ ドキュメントは、Doc オブジェクトと呼ばれることがあります。 HTML を特定のコンテンツの表示に置き換える場合は、アクティブ ドキュメントが適している可能性があります。 たとえば、HTML ページから Word 文書にナビゲートする場合、mshtml.dll のアクティブ ドキュメントに代わり Word のアクティブ ドキュメント ビューアが読み込まれます。 Internet Explorer のアクティブ ドキュメント サポートには、メニューを統合し、Internet Explorer のメニューに新しいアクティブ ドキュメントで利用できる機能を反映させる機能が含まれます。 詳細については、 「Active Documents」(英語) を参照してください。

  • ActiveX コントロール : ActiveX コントロールは、HTML の機能を拡張する非常に強力なメカニズムです。 詳細については、 「Introduction to ActiveX Controls」(英語) を参照してください。

  • ビヘイビア : Internet Explorer のビヘイビア テクノロジは、ActiveX コントロールよりもさらに深いレベルで HTML 表示エンジンとの統合を可能にします。 ビヘイビアには 2 種類あります。 1 つは、.htc ファイルを使用するスクリプトベースのビヘイビアです。 これは便利ですが、厳密にはブラウザ機能の拡張ではありません。 ただし、このビヘイビアでは、HTML コンテンツをコンポーネント化し、再利用できるため、完全なブラウザ拡張を使用する前に .htc ファイルによるスクリプトベースのビヘイビアの利用を検討することも一案です。

    2 つ目のビヘイビア拡張は、バイナリ ビヘイビアです。 バイナリ ビヘイビアは、COM オブジェクトであるという点では ActiveX コントロールと似ていますが、HTML パーサーやレンダラとより深いレベルで統合されます。 バイナリ ビヘイビアの例としては、MathML および スケーラブル ベクタ グラフィックス (SVG) の拡張があります。これらは、Math グラフィックとベクター グラフィックのマークアップを容易に HTML に埋め込めるようにします。 詳細については、「Binary Behaviors Overviews and Tutorials」(英語) を参照してください。

  • Windows Forms コントロール : マネージ コードおよび .NET Framework が将来の開発フレームワークとして確立されていることから、Internet Explorer 用のコントロールの開発用にも提供されています。 詳細については、「Windows Form Controls」(英語) を参照してください。

  • プラグ可能プロトコル : プラグ可能プロトコルは Internet Explorer でカスタムの通信プロトコルをサポートできるようにするもので、通常はサポートするデータ固有のプロトコルになります。 詳細については、 「Asynchronous Pluggable Protocols」(英語) を参照してください。

ホストと再利用

COM ベースのアーキテクチャが採用されているため、Internet Explorer のコンポーネントは、簡単に再利用できます。 shdocvw.dll (WebBrowser コントロール) と mshtml.dll ("Trident") の 2 つのコンポーネントがよく使用されます。

多くの場合は、mshtml.dll ではなく shdocvw.dll を直接ホストする方法が適しています。これは、shdocvw.dll はインプレース ナビゲーションや履歴など、ブラウザの全機能をサポートします。 mshtml.dll を直接ホストする場合は、HTML とカスケード スタイル シート (CSS) パーサーおよびレンダラを使用できるようになりますが、ブラウザの他の機能は利用できません。 mshtml.dll を直接ホストする状況としては、電子メール アプリケーションや HTML ベースの電子メールなどのシナリオが考えられます。 これは、電子メールがアプリケーション内で表示されますが、電子メール内のハイパーリンクをクリックすると、操作中の電子メール アプリケーション内ではなく、ブラウザ インスタンスが別途開かれてリンク先のページを表示するようなシナリオです。 これは、Microsoft Outlook や Outlook Express などのアプリケーションが HTML ベースの電子メールを処理する際の動作です。

ホストと再利用の詳細については、 「Programming and Reusing the Browser」(英語) を参照してください。

まとめ

Internet Explorer の COM ベースのアーキテクチャでは、さまざまな拡張メカニズムがサポートされます。 アプリケーションの要件に最適な拡張を使用するには、このアーキテクチャと、利用できる拡張メカニズムについて理解することが重要です。