マニフェスト・ファイルplugin.xml
マニフェスト・ファイルplugin.xml
マニフェスト・ファイルplugin.xmlは、プラグイン・ランタイム・クラスの情報やJavaクラスを格納しているJarファイルの情報、依存 しているプラグインの情報、拡張した機能、他のプラグインに公開する拡張ポイントの情報を、プラグインの管理を行うEclipseプラットフォームのランタイムに教える役割を担っています。マニフェスト・ファイルplugin.xmlの要素と属性について、図13と表2を使用して説明します。

図13:plugin.xmlの要素の構造
| 要素名 | 属性名 | 説明 |
| plugin | プラグインの定義 | |
| id | プラグインのID (命名法はJavaのパッケージの命名法と同じです。例えば、jp.co.thinkit.eclipse.hello) |
|
| name | プラグインの表示可能な名前 | |
| version | プラグインのバージョン番号 | |
| provider-name | プラグインを開発した会社名や開発者の名前 | |
| class | プラグイン・ランタイム・クラスの完全修飾クラス名 (org.eclipse.core.runtime.Pluginクラスのサブクラス) |
|
| runtime | プラグインを構成するライブラリの指定 | |
| library | ライブラリの指定 | |
| name | ライブラリのパス | |
| type | 指定したライブラリに実行可能なコードまたはリソースだけのどちらが含まれるかを指定 ("code"か"resource"のみ指定できます) |
|
| export | ライブラリのどの部分がエクスポートされるかの指定 | |
| name |
エクスポートするクラスの名前規則を指定(以下の値を指定することができます)
|
|
| requires | 依存しているプラグインの指定 | |
| import | 依存しているプラグインの指定 | |
| plugin | 依存しているプラグインのID | |
| version | バージョンの指定 | |
| match |
バージョンのマッチング規則(version属性が指定されていない場合は、無視されます)
|
|
| export | ユーザに依存しているプラグインのクラスを可視にするかどうかを指定(デフォルトは、不可視) | |
| optional | この依存性が、厳密に強制されるかどうかを指定 | |
| extension-point | 公開する拡張ポイントの定義 | |
| id | 拡張ポイントのID | |
| name | 拡張ポイントの表示可能な名前 | |
| schema | 拡張ポイントのスキーマ仕様を定義しているファイル | |
| extension | 拡張する機能の定義 | |
| point | 拡張する拡張ポイントのID(このプラグインまたは他のプラグインで定義されているextension-point要素のid) | |
| id | 拡張のID | |
| name | 拡張の表示可能な名前 | |
それでは、既存のプラグインがどのようにplugin.xmlを記述しているか見てみましょう。ここでは、Java開発環境JDT(org.eclipse.jdt.ui)のplugin.xmlを取り上げます。
はじめに、プラグイン開発・パースペクティブのプラグイン・ビューを表示します(図14)。

図14:プラグイン開発・パースペクティブのプラグイン・ビュー
次に、プラグイン・ビューから「org.eclipse.jdt.ui(3.0.x)」を選択します(図15)。「org.eclipse.jdt.ui(3.0.x)」には、Javaクラスを格納しているJarファイル(jdt.jar)とplugin.xmlがあります。 plugin.propertiesファイルは、plugin.xmlで使える定数を定義しています。定数名の前に%を付け("%定数名")てplugin.xmlに記述すると、ランタイムが自動的にplugin.propertiesを読み込み、定数の値に置換します。

図15:「org.eclipse.jdt.ui (3.0.x)」
次に、plugin.xmlをマニフェスト・エディターで表示します。プラグイン・ビューから「org.eclipse.jdt.ui (3.0.x)」 - 「plugin.xml」をダブルクリックします(図16)。

図16:マニフェスト・エディター
マニフェスト・エディターは、「概要」、「依存関係」、「ランタイム」、「拡張」、「拡張ポイント」ページを使用してplugin.xmlを簡単に参照することができますが、今回は「plugin.xml」ページを使用し、plugin.xmlの構造を見てください。
plugin.xmlの拡張ポイントorg.eclipse.jdt.ui.classpathContainerPage を拡張している部分を見てみると、extension要素に子要素があります。extension要素の子要素の記述方法は、拡張する拡張ポイントによっ て異なります。
point="org.eclipse.jdt.ui.classpathContainerPage">
name="%defaultClasspathContainerPage"
class="org.eclipse.jdt.internal.ui.wizards.buildpaths.
ClasspathContainerDefaultPage"
id="*">
(
マークの部分は実際には1行で記述します)
extension要素の子要素の記述方法を参照するには、マニフェスト・エディターの「拡張ポイン ト」ページを開き、「拡張ポイント記述を開く」をクリックすると、ブラウザで確認することができます(図17)。また、拡張ポイントの内容なども確認することができます。
まとめ
今回は、テンプレートを使用したプラグインの開発方法と、プラグインを開発するうえで知らなければいけないことであるEclipseのアーキテクチャ、プラグイン・ランタイム・クラス、マニフェスト・ファイルplugin.xmlについて説明しました。
ポイントは、以下のとおりです。
- プラグイン開発の大きな流れは、プロジェクト作成・plugin.xml編集・Javaクラス作成
- プラグインには、プラグイン・ランタイム・クラスとplugin.xmlが必要
- プラグイン・ランタイム・クラスは、org.eclipse.core.runtime.Pluginのサブクラスで、ランタイムによって管理されている
- plugin.xmlは、プラグインの情報をランタイムに教える役割を持っていて、extension要素の子要素は拡張する拡張ポイントによって異なる
今回、Eclipseに組み込む機能を実装するJavaクラスの作成については説明していませんが、拡張ポイントや機能の実装で必要なAPIのボキャブラリを増やしていくことにより、イメージどおりのプラグインを作ることができるようになります(第3回以降に説明します)。
次回は、プラグインの配布とインストールについて説明します。
