Eclipse実践プラグイン開発 1

Eclipseのアーキテクチャ

Eclipseのアーキテクチャ

EclipseがJavaの統合開発環境(IDE)のデファクトスタンダードと呼ばれるようになった理由のひとつに、商用・非商用・オープンソースに関わらず、多くのすばらしいプラグインが開発され、利用できることが挙げられます。

しかしEclipseは、JavaのIDEとして開発されているのではなく、様々な用途のツールを構築するためのプラットフォームとして開発されています。そのため、Eclipseの基本的な環境(Eclipseプラットフォーム)は、エンド・ユーザが使用するような機能をそれほど多く持っていません。

Eclipseプラットフォームは、ランタイムとランタイム上に構築されたいくつかのコンポーネントによって構成されています(図10)。それぞれのコンポーネントは1つ以上のプラグインによって実装され、ランタイムとリソースを併せたコンポーネントをCoreと呼び、ワークベンチとJFaceを併せたコンポーネントをUIと呼んでいます。

Eclipseプラットフォーム
図10:Eclipseプラットフォーム
 
コンポーネント名 説明
ランタイム プラグインの動的な追加や削除、ライフサイクルの管理を行います
リソース リソース(プロジェクト、フォルダ、およびファイル)の管理を行います
ワークベンチ プラグインがメニューやアクションなどを追加したり、独自のビューやエディターなどを作成したりするための場所を定義します
SWT SWT(Standard Widget Toolkit)は、OSが提供するGUIを共通のAPIで利用するためのツールキットです
JFace SWTを利用して、プラグインに共通のUIを提供するためのツールキットです
表1:Eclipseプラットフォームの主なコンポーネント
 

   それでは、JavaのIDEとして使用している機能はどこにあるのでしょうか。Eclipse SDKは、Eclipseプラットフォームと、Java開発環境であるJava Development Tools(JDT)、プラグイン開発環境であるPlug-in Development Environment(PDE)から構成されており、JDTとPDEもプラグインとして実装されています(図11)。私たちはこのJDTの機能を使い、プログラミングしています。

Eclipse SDKのアーキテクチャ
図11:Eclipse SDKのアーキテクチャ

プラグイン

プラグインは、プラットフォームに機能を追加するためのしくみであり、他のプラグインにも機能を追加することができます。機能を追加することを拡張といい、他のプラグインが拡張できる場所のことを拡張ポイントといいます。

そして、開発したプラグインをプラグインとして動作させるためには、下記の条件を満たしている必要があります。

  • プラグイン・ランタイム・クラスと呼ばれるJavaクラスがある
  • プラグインに関する情報を記述したマニフェスト・ファイルと呼ばれるplugin.xmlがある

プラグイン・ランタイム・クラス

プラグイン・ランタイム・クラスは、プラグインの起動や終了などのライフサイクルの機能を実装するJavaクラスのことで、org.eclipse.core.runtime.Plugin抽象クラスを継承しています。プラグイン・ランタイム・ク ラスのインスタンスの生成や管理は、Eclipseプラットフォームのランタイムによって行われるので、インスタンスを生成するコードを書くことはありません。

実際には、Plugin抽象クラスを継承してプラグイン・ランタイム・クラスを実装するケースは多くなく、Eclipseプラットフォームが用意し ているプラグイン・ランタイム・クラスを使用します。図12にPlugin抽象クラスとプラグイン・ランタイム・クラスの関係を示します。

Plugin抽象クラスとプラグイン・ランタイム・クラス
図12:Plugin抽象クラスとプラグイン・ランタイム・クラス
(画像をクリックすると別ウィンドウに拡大図を表示します)

 

EclipseプラットフォームのUIコンポーネントを用いるプラグインを開発するためには、AbstractUIPlugin抽象クラスを使用します。AbstractUIPlugin抽象クラスは様々な用途があるので、汎用性を持たせられるように抽象クラスになっており、プラグイン・ランタイム・クラスとして使用するためには、さらに継承する必要があります。

※注2: 「Hello プラグイン」では、ウィザードによりAbstractUIPluginクラスを継承したHelloPluginクラスが作成されています。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る