Eclipseのアーキテクチャ

Eclipseのアーキテクチャ

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

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

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

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

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

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30