このページはNetscape Navigator 2.0以降及びMicrosoft Internet Explorer 3.0以降で正常に見られます。
Solly,Japanese only

★ BB研究所 ★
Netscape プラグインの作成法(概要)


 Netscapeプラグインは、Netscape Navigatorを拡張するバイナリです。 Navigatorは、データタイプ(MIME)に応じた、プラグインを呼び出し、Navigatorのサポートしていないデータを扱うことができるようになります。 Netscapeプラグインを作成するためには、先ずNetscape社ホームページよりプラグインガイドとSDK(Software Development Kit=ソフトウェア開発キット)をダウンロードする必要があります。
【注意】 


プラグインの働き

 プラグインは、NavigatorのAPIを使って、以下の操作を行います。  あなたが使用しているNavigator上でヘルプメニューに行き、「プラグインについて」をクリックすると、インストールされているプラグインの一覧が表示されます。このとき、対応するデータのMIMEタイプとファイル拡張子が一緒に表示されます。


Navigator側の動作(概要)

 Navigatorは、プラグインディレクトリをチェックしプラグインモジュールを探します。
Webページをオープンしたとき、メディアタイプのデータがはめ込まれていたとき、プラグインを呼び出します。
そのときのシーケンスは以下のようになります。  Navigatorは、同じページや別のページに拘わらず、同じプラグインで複数のインスタンスを扱うことができます。
詳細な動作は次章で説明します。


動作(詳細)

 プラグインは一つ又は複数のMIMEタイプに関連づけられた、動的コードモジュールです(ここでいう”動的(dynamic)”は、Navigatorの起動後にモジュールの読込み、解放ができることを指します。いわゆるDLLです)。
 MIMEタイプはWindowsの場合、プラグインのリソース(VBで言えば、form?)に記述します。
 以下にプラグインのロード(読込み)からアンロード(解放)までの一生を示します。


プラグインの書式

Navigatorやプラグインの書式は以下のように決定されています(ポーランド記号のようなものですね) 。

ディスプレイモード

プラグインの表示方法の種類(ディスプレイモード)には以下の3種類があります。 「embed(はめ込み)の表示」は、HTML文章の一部の指定された資格内に表示されます。マクロメディア社のShowckWaveプラグインがこれに当たります。これは、HTML文書内に<EMBRED>タグで表記します。そしてデータはSRC属性で指定し、サイズはHEIGHTとWIDTHで表します。
【例】 「embedの隠し」は、HIDDEN属性を追加します。
【例】 「フルページ」は、HTMLではなく、直接データを指定します。Adobe社のAcrobat Readerがこれにあたります。

プラグイン開発の流れ

  1. 開発するプラグインに必要な機能のプランを立てる。
  2. MIMEタイプとファイル拡張子を決定する。
  3. SDKをダウンロードする
  4. プラグインプロジェクトを作成する。これは、SDKのサンプルソースを元に作成するのが望ましい
  5. テンプレートから必要な機能を盛り込んでいく
  6. ビルトする
  7. インストーラをつくる
  8. テスト・デバックを行う。

プラグインの登録

 Navigatorは、MIMEタイプ又はファイル拡張子から、対応するプラグインをロードします。
HTMLファイルでは、EMBEDタグのTYPE属性でMIME属性を指定します。
【例】  このMIMEタイプはメジャータイプ(applicationやimage等)とマイナータイプから構成されます(image/jpeg等)。
MIMEタイプはRFC 1521"MIME:Mechanisms for Specifying and Describing the Forms of Internet Message Bodies"とRFC 1590"Media Type Registration Procedure"で規定されています。もし、あなたが新しいMIMEタイプを定義したい場合は、IETF(Internet Engineering Task Force)に登録する必要があり、登録されるまでは、"x-"を頭に付けます。たとえば、"image/x-nwin"等です。

  Windowsでは、プラグインはNavigatorアプリケーションと同じディレクトリに格納します。そして「プラグインの書式」で述べたように、ファイルネームは、8.3文字,NPではじまる,拡張子はDLLである必要があります。
 また、プラグインのMIMEタイプは、リソース(*.rcファイル)のバージョン情報に以下の2行を追加します。
※リソースエディタではこの2項目は追加できないので、テキストエディタで追加する必要があります。

複数のMIMEタイプを指定したい場合は、"|"で区切ってMIME文字列を追加します。
【例】 ※詳しくはSDKのサンプルを参照して下さい。

尚、バージョン情報には必ずLanguage項目があることを確認して下さい。


プラグインによる描画とメモリのハンドリング

 プラグインは描画前に、描画のための情報を設定し、更に再描画などのイベントのハンドルを行わなければなりません。
その為、Navigatorは以下のプラグインメソッドを呼び出します。 プラグインはNavigatorの情報取得及び設定の為にNetscapeメソッドを呼び出すことができます。 プラグインでメモリのアロケーションを行う場合、WindowsのAPIではなく、NavigatorのAPIを使用しなければなりません。

ストリームの送受信

 ストリームは、URLから供給されるデータです。ストリームはプラグインのインスタンスと関連づけられますが、一つのインスタンスで複数のストリームを扱うことができます。ストリームはNavigatorによって作成されてプラグインインスタンスにより消費されるか、プラグインインスタンスにより作成されてNavigatorによって消費されます。いずれのストリームフォーマットも、関連づけられたMIMEタイプにより指定されます。
 ストリームはNavigatorから自動的に生成されてプラグインに送られる場合とプラグインの要求により送られる場合があります。プラグインは以下の2つの転送モード(transmission modes)から一つを選ぶことができます。 プラグインで作られNavigatorへ渡されるストリームは、転送方向を除いて上記のノーマルモードに似ています。ノーマルモードでは、Navigatorはストリームがあるとプラグインを呼出して、それをプラグインへ通知し残りのデータを送ります。対照的にプラグインによって作られたストリームの場合、プラグインはストリームがあることをNavigatorを呼び出してデータを書き込み、その後データを破棄します。

プラグインのビルド

Win32の場合プラグインSDKは、VC++4.2用に作成されています。以下にサンプルのビルド方法を記述します。

おわりに

実は、コレはプラグインガイドを拾い読みしてまとめたものなので、これを読んだだけでは、なにがなんだかわからないと思います。
次の実習で実際のプラグインを作成します。両方を読めば、ある程度感じがつかめるようになると思います。

[ホームへ戻る]


Copyright (c) 1997-1999, BearBeetle, Allrights reserved.