Eclipseは今や統合開発環境としてデファクトスタンダードの地位を確立しています。対応言語はJava、C/C++、PHPなど多岐に渡っている上、統合開発環境という枠を超えてリッチクライアントのプラットフォームとしても利用することができます。
連載第1回目となる今回は、Eclipseとそのプラグインアーキテクチャについて理解していただこうと思います。
Eclipseとは?
統合開発環境、リッチクライアントプラットフォームなど、さまざまな側面を持つEclipseですが、そもそもEclipseとは一体何なのでしょうか? その答えはEclipseのサイトのトップページに端的に記されています。
Eclipse - an open development platform
(Eclipseはオープンな開発プラットフォームである)
さらに続く文章でも、Eclipseはビルドやデプロイを含む開発環境を構築するためのオープンソースコミュニティであるとされています。
つまりEclipseとは、さまざまなプラットフォームを構築するための基盤技術とコミュニティのことを意味しています。皆さんが普段使われている統合開発環境としてのEclipseも、その基盤技術を使ったひとつの実装であると言えます。そしてこの基盤技術の根幹を成すものがプラグインアーキテクチャです。
Eclipseのプラグインアーキテクチャ
プラグインやアドオンと呼ばれる、拡張可能なアーキテクチャを備えたアプリケーションは数多くあります。これらのアプリケーションとEclipseのプラグインアーキテクチャの最大の違いは、「プラグインを拡張するプラグインを作ることができる」という点です。一般的なアプリケーションではアプリケーション自体が高度な機能を備えており、プラグインはそれを補完する意味合いが強いのですが、Eclipseではほとんどの機能がプラグインとして提供されています。
OSGiとEquinox
3.0より前のバージョンまで、Eclipseには独自のプラグインアーキテクチャが使われていましたが、3.0からOSGi Allianceが定義したフレームワークに準拠したアーキテクチャに変更されました。
OSGiフレームワークはJavaベースの動的なモジュールシステムを定義しており、バンドルと呼ばれるアプリケーションに対してインストール・アンインストールや起動・停止といったライフサイクルの管理を行います。バンドルの開発者はOSGiフレームワークの仕様に準拠することで、インストールや起動・終了処理といった煩雑な処理から開放され、本質的な問題に注力することができます。
EquinoxはOSGiを実装したEclipseのサブプロジェクトであり、EclipseはEquinoxを使ってプラグインを管理しています。OSGiのバンドルがEclipseのプラグインに相当します。
ちなみにEclipseでは、Eclipseプラグインだけでなく、このOSGiに準拠したバンドルを開発することもできます。
プラグインを開発するメリット
Eclipse Plugin Central(EPIC)には、この原稿の執筆時点(2007年10月現在)で1,000近いプラグインが登録されています。StrutsやSpringなどの著名なフレームワークをサポートするプラグインも数多く存在し、自分でプラグインを開発する必要はないようにも思われます。
確かにEclipseのプラグイン環境は充実していますが、必ずしも自分の目的に合うプラグインが見つかるとも限りません。また、見つかったとしても使い勝手が悪いということも考えられます。そういったときに、プラグインの中の仕組みがわかっていれば修正することもできますし、ない場合には自作することもできます。
別の側面としてはEclipse RCPへの展開が上げられます。JavaFXやAIR、Flashなどのリッチクライアントプラットフォームは今後も注目されると考えられます。EclipseのリッチクライアントプラットフォームであるEclipse RCPのアプリケーション開発手法は、プラグイン開発の手法とほとんど同じなので、これを学ぶことでEclipse RCPの開発をスムーズに始めることができます。
Eclipseプラグイン開発における情報源
いざEclipseプラグインの開発を始めると、情報量の少なさに困惑されると思います。Googleで「Eclipse プラグイン開発」で検索すると、いろいろなサイトが出てきますが、まとまった情報を載せているサイトは多くはありません。ここではEclipseプラグインを開発するにあたり、有効な情報源を挙げてみます。
ヘルプ
Eclipseのヘルプにはプラグイン開発のガイドが詳しく紹介されています。Eclipse 3.3ではデフォルトインストールでプラグイン開発環境ガイド、プラットフォームプラグイン開発者ガイド、JDTプラグイン開発者ガイドが用意されています。このうちプラットフォームプラグイン開発者ガイドにはさまざまなプラグインの概要が記載されていますので、一読されることをおすすめします。
サンプルプログラム
Eclipseプラグイン開発用にさまざまなサンプルプログラムが用意されています。自分が実装したい機能を持つプラグインを参照することで実装方法がわかりますし、実行可能なので動作確認にも役立ちます。Eclipseが提供しているサンプルは、更新サイトからプラグインとして一括ダウンロードすることが可能です。また、GEF(Graphical Editing Framework)など別途用意されている場合もあります。
ソースコード
サンプルプログラムと同様に、Eclipse自体のソースコードも実装方法の参考になります。Eclipse自体のソースコードとはいってもそれほど深いところではなく、使用しているフレームワークのレベルで十分な場合がほとんどです。ソースコードはGEF(Graphical Editing Framework)など別途インストールが必要な場合もありますが、そういったフレームワーク以外はEclipse3.3の場合はEclipse for RCP/Plug-in Developersに含まれています。Eclipseはソースコードのアシスタント機能が充実しているので、呼出元やスーパークラスを容易に参照することができ、ソースコードを読む環境として申し分ありません。またCVSのプラグインも含まれているので、EclipseのCVSリポジトリーにアクセスして開発中のソースコードを参照することも可能です。
ヘルプを見る、サンプルプログラムを動かす、ソースコードを読む、といった極めて基本的なことですが、情報の少ないEclipseプラグインの開発では有効な手段です。サンプルプログラムやソースコードの参照方法は本連載の中で必要に応じて紹介していきます。
おわりに
今回の記事ではEclipseとそのプラグインアーキテクチャについて説明しました。Eclipseプラグイン開発は敷居が高いように感じられますが、サンプルやウィザードも充実しており、十分開発していくことが可能です。
次回は、Eclipseをインストールし、本連載で開発するプラグインのプロジェクトを作成します。