1996年に登場したInternet Explorer 3.0(IE3)は、ActiveXを本格的に採用したブラウザとして知られていますが、同時にNetscape Navigator向けのプラグインにも対応していました。そのため、「IE3ではNetscapeのNPAPIプラグインをActiveX経由で動かす仕組みが組み込まれていたのか」という疑問が生じます。
結論から整理すると、Windows版IE3にはNetscape形式のプラグインを利用するための互換機構があり、既存のNetscapeプラグインをIEから利用できました。当時のMicrosoft自身もIE3についてNetscapeのプラグインアーキテクチャとの互換性を明確に宣伝しています。一方、「IE3がNPAPIを完全にネイティブ実装していた」と単純化するより、IEのActiveX/COM系アーキテクチャとNetscape形式プラグインを橋渡しする互換レイヤーが存在した、と理解する方が実装の説明として正確です。
この記事では、IE3のNetscapeプラグイン対応、ActiveXとの違い、プラグイン検索の仕組み、その後IEからNPAPI互換機能が消えていった経緯まで整理します。
- IE3は公式にNetscapeプラグインへ対応していた
- NPAPIとActiveXは本来別の仕組み
- NPAPIプラグインとIEの間にはActiveXベースの橋渡し機構があった
- IE3はNetscapeのプラグインフォルダまで検索していた
- なぜMicrosoftはライバルのNetscapeプラグインに対応したのか
- IE3のNPAPI互換性は完全ではなかった
- 当時のShockwaveやAcrobatなども重要な背景
- Windows 95版とWindows 3.1版を同一視しないことも重要
- その後Internet ExplorerはNetscape形式プラグイン対応を廃止した
- IE3の仕組みを整理するとどうなる?
- まとめ:IE3にはNetscapeプラグインを利用する互換機構が存在した
IE3は公式にNetscapeプラグインへ対応していた
まず確認しておきたいのは、「IE3でNetscapeプラグインが使えた」という点自体は推測ではないことです。MicrosoftはIE3発売時の公式発表で、Internet Explorer 3.0がNetscape Navigatorの独自インターフェース向けに作られたプラグインと互換性を持つと説明しています。[参照] MicrosoftによるIE3正式版発表
さらにIE3開発中の1996年3月、Bill Gates氏はMicrosoftの公式記録に残る質疑の中で、IE3はNetscapeプラグインをサポートし、そのプラグインアーキテクチャとの互換性を持つという趣旨を説明しています。[参照] Microsoft 1996年3月のカンファレンス記録
したがって、「IE3はActiveXしか使えず、Netscape用プラグインは動かなかった」という理解は正しくありません。IE3はActiveXとNetscape形式プラグインの両方をサポートすることで、当時すでに存在していたWebコンテンツとの互換性を確保しようとしていました。
NPAPIとActiveXは本来別の仕組み
ここで混同しやすいのがNPAPIとActiveXです。NPAPIはNetscape Navigatorのプラグイン方式に由来するAPIで、ブラウザと外部プラグインDLLの間でデータやイベントなどをやり取りするための仕組みでした。
一方、ActiveX ControlはMicrosoftのCOM/OLE系技術を背景にしたコンポーネントです。IE3ではActiveX ControlをWebページから利用でき、MicrosoftはこれをNetscapeのプラグインより発展したアクティブコンテンツ技術として強く推進していました。
MicrosoftのIE3 Beta発表でも、ActiveX Controls、ActiveX Documents、ActiveX Script、Java Appletsなどと並び、Netscape Plug-insへの対応が別項目として扱われています。つまり「ActiveX=NPAPI」ではなく、IE3は異なる二つのプラグイン/コンポーネント方式を扱えるブラウザだったということです。[参照] Microsoft Internet Explorer 3.0 Beta発表
NPAPIプラグインとIEの間にはActiveXベースの橋渡し機構があった
では、ActiveXを中心に設計されたIEで、なぜNetscape向けのプラグインが動いたのでしょうか。Windows版Internet Explorerの旧NPAPI互換機能については、一般にActiveX Controlを介してNetscape形式のプラグインをホストする互換レイヤーとして説明されています。
この文脈で知られているのがplugin.ocxです。.ocxは一般にActiveX Controlとして利用される形式で、IE側とNetscape形式のプラグインとの橋渡しを担う仕組みが存在していました。
したがって質問を技術的に言い換えるなら、「IE3自身がNetscape Navigatorとまったく同じ内部構造を持っていた」のではなく、IE側の仕組みからNetscapeプラグインをホストできる互換層を用意していたと捉えるのが分かりやすいでしょう。
IE3はNetscapeのプラグインフォルダまで検索していた
この互換性は単に「理論上NPAPIを呼び出せる」という程度ではありませんでした。Internet Explorer 3.0 for Windows 95について残されているMicrosoft Knowledge Baseの記録では、IE3が起動時にインストール済みプラグインを検索する動作が説明されています。
その検索対象にはWindowsのSystemフォルダ内のOCX、Internet Explorerのプラグイン情報、IE自身のPlug-insフォルダに加えて、Netscape NavigatorのPlug-insフォルダも含まれていました。Netscapeの標準的なインストール先に存在するプラグインDLLをIE3が探して利用する仕組みだったわけです。[参照] Microsoft KB Archive Q157217「How Internet Explorer Installs Netscape Plug-ins」
例えばPCにNetscape Navigator 3.0と対応プラグインがインストールされていた場合、IE3からもそのプラグインを利用できるケースがありました。当時の解説資料にも、IE3がNetscapeのプラグインフォルダにある既存プラグインを利用する動作が記録されています。
なぜMicrosoftはライバルのNetscapeプラグインに対応したのか
1996年当時のWebブラウザ市場ではNetscape Navigatorが非常に大きな存在であり、すでにNetscapeのプラグイン方式を前提にしたWebコンテンツが存在していました。MicrosoftがActiveXだけをサポートしても、それらの既存コンテンツをIE利用者が閲覧できなければブラウザを乗り換える障害になります。
そこでIE3では、既存のNetscape向けコンテンツとの互換性を確保しながら、Microsoft独自のActiveXを新しい拡張技術として並行して普及させる戦略が採られました。
Microsoft自身も1996年のIE3正式版発表で、Netscape Navigatorのプラグインインターフェースとの互換性と、1,000以上のActiveX Controlsへの対応を同時にアピールしています。つまり、「既存のNetscape資産も動かせる。それに加えてActiveXも使える」ことがIE3の競争上の特徴だったのです。
IE3のNPAPI互換性は完全ではなかった
ただし、Netscape Navigator用プラグインなら100%同じようにIE3で動いた、と考えるのも正確ではありません。Microsoftの旧Knowledge Baseには、Internet ExplorerによるNetscape Plug-in対応には複数の制限があったことが記録されています。
例えばIE 3.xではプラグインを生成する際のtype=属性に関する制限があり、NPN_PostURLNotifyやNPN_GetURLNotifyなど一部のNetscape Plug-in API機能にも非対応でした。[参照] Microsoft KB Archive Q166694「Internet Explorer Support of Netscape Plug-in」
したがって「IE3はNPAPI対応」と表現すること自体は問題ありませんが、Netscape Navigatorの実装を完全再現したものではありません。実際の互換性はプラグインが使用するAPIや実装方法によって異なりました。
当時のShockwaveやAcrobatなども重要な背景
1990年代半ばのWebでは、現在のHTML5だけでは実現できなかったマルチメディア機能をブラウザプラグインで補うことが一般的でした。Shockwave、RealAudio、VRML関連、Acrobatなど、さまざまな追加コンポーネントが使われていました。
そのためブラウザ側にNetscapeプラグイン互換性があることは、ユーザーにとって実用的な意味を持っていました。すでにNetscape用としてインストールしたプラグインがIEでも動けば、IE専用品を改めて用意しなくても既存サイトを利用できる可能性があったからです。
IE3の正式版発表でもMicrosoftは、Netscape向けプラグインとの互換性に加え、RealAudio、Shockwave、VRML、ActiveMovieなど当時のマルチメディア技術への対応を大きな特徴として紹介しています。
Windows 95版とWindows 3.1版を同一視しないことも重要
「IE3」と一口に言っても、Windows 95/NT向けとWindows 3.1向けなどでは内部機能が完全に同一だったわけではありません。特にActiveXについて調べる場合は、対象となるOS・IEのビルドを区別する必要があります。
MicrosoftはWindows 3.1版IE3についてもNetscapeプラグインとの互換性を公式に説明しています。[参照] Microsoft・IE3 for Windows 3.1 Beta発表
一方でWindows 3.1版のActiveX対応にはWindows 95版とは異なる事情がありました。そのため「IE3にはこの機能があった」という情報を検証するときは、Windows 95版なのか16bit Windows版なのか、Macintosh版なのかまで確認すると歴史的・技術的な誤解を避けられます。
その後Internet ExplorerはNetscape形式プラグイン対応を廃止した
IE3で導入されたNetscapeプラグイン互換機能は、その後のInternet Explorerでもしばらく残りました。しかしMicrosoftは最終的にこの方式から離れ、Internet ExplorerではActiveX Controlが代表的なブラウザ拡張方式として残っていきます。
旧Microsoft Knowledge Baseの記録では、IE 3.01、3.02、4.x、5.0、5.5などがNetscape Plug-inサポートに関する対象製品として挙げられています。一方、後期のInternet ExplorerではNetscape形式プラグインのサポートが廃止されました。
そのため、IE6以降を知っているユーザーから見ると「Internet ExplorerでNPAPIが動く」という話は奇妙に感じられます。しかしIE3が登場したブラウザ戦争初期には、IEがNetscapeのプラグイン資産との互換性を重視していた時期が実際に存在したのです。
IE3の仕組みを整理するとどうなる?
IE3時代の関係を簡略化すると、次のように整理できます。
| 技術 | IE3での位置付け |
|---|---|
| Netscape Plug-in/NPAPI系 | 既存Netscape向けプラグインとの互換性を提供 |
| ActiveX Control | Microsoftが推進したCOM/OLE系のWebコンポーネント技術 |
| plugin.ocxなどの互換機構 | IE側からNetscape形式プラグインを扱うための橋渡し |
| NetscapeのPlug-insフォルダ | IE3が起動時に検索するプラグインの場所の一つ |
したがって、「NetscapeプラグインそのものがActiveX Controlへ変換されていた」と理解するより、ActiveX/COMベースのIE側とNetscape形式プラグインの間を互換機構が取り持っていたと考える方が適切です。
また、IE3のNetscape Plug-in API対応には実装上の制限があったため、「Netscapeで動くすべてのNPAPIプラグインがIE3でも完全に同じ動作をした」という意味ではありません。
まとめ:IE3にはNetscapeプラグインを利用する互換機構が存在した
Internet Explorer 3.0は、Netscape Navigator向けプラグインとの互換性を公式に備えていました。Microsoft自身が1996年のIE3発表資料でその対応を明記しており、旧Knowledge BaseにもIE3がNetscapeのPlug-insフォルダを検索してプラグインを検出する仕組みが記録されています。
そしてWindows版IEの内部では、plugin.ocxに代表されるActiveXベースの互換機構を介してNetscape形式のプラグインをホストする仕組みが使われました。その意味では、「NPAPIプラグインをActiveX側から利用するための橋渡しがIEに組み込まれていたのか」という問いには、おおむね「はい」と答えられます。
ただし、NPAPIとActiveXそのものは別技術です。またIE3のNetscapeプラグイン対応にはAPI上の制限もあり、完全互換ではありませんでした。「NPAPIをActiveXに変換していた」というより、「IEのActiveX/COM系環境からNetscapeプラグインをホストする互換レイヤーが用意されていた」と表現すると、当時の構造をより正確に説明できます。
IE3は、既存のNetscape向けWebコンテンツとの互換性を確保しながらMicrosoft独自のActiveXを普及させようとしていた、ブラウザ戦争初期ならではの設計を持つバージョンだったといえるでしょう。

コメント