何をEclipseにプラグインするか

EclipseはJavaコードを書く以上のことができます

Java™開発者のコミュニティーの中で、Eclipseは業界をリードするJDT(Java Development Tool)として、最もよく知られています。しかしEclipseはプラグインを使うことを奨励するように作られており、その面で非常に成功しているのです。この記事では、Eclipseプラグインの中に組み込まれた機能、例えばRubyなど他の言語でプログラムできる機能や、OpenLaszloのような環境を使って対話型のマルチメディアを構成できる機能などについて学びます。

Peter Nehrer (pnehrer@ecliptical.ca), Freelance Writer, Consultant

Peter Nehrerはオンタリオ州トロントに住むソフトウェア・コンサルタントであり、Eclipseベースのエンタープライズ・ソリューションやJ2EEアプリケーションを専門としています。専門家としての関心分野は、開発ツールやモデル・ドリブンのソフトウェア開発、情報共有などです。彼はEclipseに関連する幾つかのオープンソース・プロジェクトの作成者であり貢献者です。またXMLおよび関連技術のIBM認定のソリューション開発者(IBM Certified Solutions Developer for XML and related technologies)でもあります。マサチューセッツ大学Amherst校にてコンピューター・サイエンスで修士を取得しています。



2006年 5月 30日

はじめに

EclipseのJDTによって生産性や品質を向上できることを実感するJava開発者が次第に増えてきました。Javaコードを書く上で、正にEclipseは最先端のサポートを提供しています。EclipseのJavaエディターには、構文ハイライト機能(syntactic highlighting)やフォーマット機能、折り畳み(folding)機能、コンテンツ・アシスタンス、コード・テンプレート、等々が備わっており、今や私達は、こうした機能無しに生きて行くことなど考えられなくなっています。利用可能なリファクタリングやコード生成の機能は増え続けており、これらを使えば上位レベルでコードを操作できるだけではなく、コーディング中心で間違いやすい作業を自動化することができます。さらに、(JDTに組み込まれた)JUnitテストを書き、実行するため機能を使ってコードを開発し、ユニットテストしておけば、実行時に突き当たるどんな問題でも、Eclipseの持つ世界クラスのJavaデバッガーを使ってデバッグすることができます。

JDTの他にも、Eclipse SDK(Eclipse.orgのダウンロードで最も人気があります)にはPDE(Plug-in Development Environment)が含まれています。PDEは、Eclipseプラグインを構築するための専用機能でJDTを拡張します。Eclipseプラグインは、すべてのEclipseベース・アプリケーションにとって基本となる構成ブロックです。実際のところ、Eclipse自体が提供するツールを使って既存のEclipseアプリケーションを拡張、あるいはまったく新しいEclipseアプリケーションを作成することさえできるという機能のおかげで、Java開発をはるかに上回る世界にもEclipseを適用できるのです。


すべてのプラグインを合わせると

Eclipseをしばらく使ったことのある人は、「プラグイン」という用語に突き当たったのではないでしょうか。Eclipseは、アーキテクチャー的には小さなランタイム・レイヤーから構成されており、このレイヤーに幾つもの機能モジュール、つまりEclipseの用語で言う「プラグイン」が置かれています。プラグインは、Eclipseアプリケーションのあらゆる機能を提供するコンポーネントです。プラグインはAPIを通してお互いに協力し合い、最終的な結果を実現します。Eclipseでは、最も基本的な機能(インストールされているプラグインの発見や起動)でさえプラグインの中にカプセル化されているのです。

プラグインは、既存のEclipse機能の上に拡張、あるいは構築するために、他のプラグインが公開する『エクステンション・ポイント』に具体的な『エクステンション』を提供します。通常、ある1つのプラグインは特定な責任領域のみに焦点を当て、他の領域に関しては、1つ以上のエクステンション・ポイントを使って他のプラグインに権限委譲します。例えば、2つのファイルを視覚的に並べて比較できるようにするプラグインは、これらのファイルを読む方法には関知せず、場合によってはファイル構造の解釈にも関知しません。そうしたことは別のプラグインの仕事なのです。2つのファイルを比較する場合、このプラグインは最初に、これらのファイルの構造を解釈できる別のプラグインがないかどうかをチェックします。もしそうしたプラグインが見つかると、見つかったプラグインに対してファイルの構造を尋ね、その情報を比較の際に使用します。

以上から分かる通り、Eclipseのアーキテクチャーはモジュール構成のため、非常に柔軟であり、元々の作者達が予想もしなかった様々なアプリケーションをサポートできるプラットフォームとなっています。


Eclipseのプラグインをインストールする

オンラインで新しいプラグインを探してみると、それらがダウンロード可能なアーカイブ(zipあるいはJARファイル)として入手できることに気がつくはずです。プラグインの公開者は、インストール方法を指示する必要があります。通常、JARファイルとして公開されているスタンドアローンのプラグインは、Eclipseをインストールした場所(eclipseディレクトリー)のプラグイン・ディレクトリーに直接保存することができます。場合によると複数のプラグインが一緒にパッケージされており、アーカイブ・ファイルは、既にプラグイン・ディレクトリーの下にそうしたプラグインを持っているかも知れません。その場合には、そのアーカイブ・ファイルをeclipseディレクトリーの中に解凍する必要があります。新しいプラグインをインストールしたら、その変更を反映させるためにワークベンチを再起動する必要があります。

注意: Eclipseワークベンチを再起動する場合には、必ずコマンドラインに -cleanを加えます(eclipse -clean)。これによって、Eclipseプラグインのコンフィギュレーションを確実に更新することができます。

複数のプラグインは、『フィーチャー』として公開することもできます。Eclipseワークベンチの一部であるEclipse Update Managerは、インストールやコンフィギュレーションを行う際に関連のプラグインをグループにまとめる方法として、フィーチャーの概念を使っています。そうした場合に唯一目に付く違いとしては、公開されたアーカイブ・ファイルには、プラグイン・ディレクトリーの他にfeaturesディレクトリーがあることです。

Update Managerは、Eclipseコンフィギュレーションを管理し、最新に保つための強力なツールです。Update Managerの使い方の詳細は、Eclipse HelpのWorkbench User Guide > Tasks > Updating features with the update managerを参照してください。


汎用のIDE

Eclipseが最初にリリースされた際、Eclipseは機能の高い一連のJava開発ツールを中核とした、汎用のツール統合プラットフォームとして宣伝されました。当時期待されていたことは、開発ツール業界のリーダー達が、彼らの提供する最高のツールのための基盤プラットフォームとして、Eclipseが採用されることだったのです。

その点では、Eclipseは期待に応えました。利用可能なEclipse IDEプラグインの数や、開発スイートの数全体も増え続けています。Eclipse Foundationの中だけでも、オリジナルのEclipse IDEを他の言語やプラットフォーム用に拡張するプロジェクトの数は増え続けています。またEclipse Foundationに参加する会社は増え続けており、そして新しいプロジェクトが作られ、貢献が行われています。

エンタープライズJavaとWebアプリケーション開発

通常、J2EEアプリケーションの開発にはJavaプログラミングを伴うものですが、他にも様々な技術が関係してきます。そのため、エンタープライズ・グレードのソフトウェアを構築するためには、まったく新しいツールセットが必要になります。

Eclipse Foundation自体も、WTP(Web Tools Project)をホストしています。このプロジェクトは、J2EE Webアプリケーションを開発するためのツールやツール・フレームワークを提供しようとしています。商用市場には、しばらく前から幾つかのEclipseベースのJ2EE開発スイートがありましたが、WTPはどちらかと言えば新参者です。実はWTPの傘下には、WST(Web Standard Tools)とJST(J2EE Standard Tools)、JSF(Java Server Faces)Toolsという3つのサブ・プロジェクトがあります。

WSTは、様々なWeb標準(HTMLやXML、CSS、JavaScript、SVG、XML Schema、XSLT、SOAP、 WSDL、SQL等々)のための、豊富な機能を持ったエディターを提供します。またWSTは、様々なHTTPサーバーに対してWeb成果物のデプロイメントとモニタリングを行うことができます。

JSTは、こうした機能セットを拡張し、完全機能を備えたマルチ階層J2EEアプリケーションの開発をサポートします。JSTを使うことによって、JSPやサーブレット、さらにはEJBコンポーネントやWebサービスを使って動的なWebアプリケーションを作成することができます。また、あらゆるコンポーネントのデプロイメント記述子を編集することができ、サポートされている様々なJ2EEアプリケーション・サーバー上で、アプリケーションをワークベンチの中で直接テスト実行することができます。

JSF Toolsは、JSFベースのWebアプリケーションを開発するためのサポートを追加しようとしています。JSF Toolsは新しいサブ・プロジェクトであり、まだリリースされたマイルストーンは1つしかありませんが、WTP V1.5リリースの中にJSF Toolsを含めるという計画があります。

J2EEアプリケーションを作成するための、商用のソフトウェア開発スイートも幾つかあります。例えばIBM® Rational® Application Developer for WebSphere® は、エンタープライズ・ソフトウェア開発のライフサイクルにおける幾つかのステージ(J2EEアプリケーションの設計や開発、テスト、デプロイメント、コンフィギュレーション管理など)を網羅しています。

BEAのWorkshop Studioは、動的Webアプリケーションの作成をサポートするために、アプリケーション成果物の状態を追跡し検証するAppXRay技術(特許申請中)を利用しています。またWorkshop StudioはHibernateからEJB3へのORMマッピング・ワークベンチを含んでおり、Springフレームワークもサポートしています。

Genuitecが開発したMyEclipse IDEは、大規模な開発スイートの代替となるローコスト版です。これには、J2EE SpringやHibernate、Tapestry、Strutsなどのオープンソース技術を中心としたJ2EEアプリケーション開発ツールが一式揃っています。


デスクトップ・アプリケーション開発

デスクトップ上でのJavaの復活には、Eclipseが大きく寄与しています。Eclipseは独占的なJavaデスクトップ・プラットフォームにはなっていませんが、Eclipseの成功によってJavaプラットフォームそのものの改善が促進され、デスクトップ・アプリケーション用の有効なプラットフォームとしてJavaが再評価されるようになったようです。

ユーザー・インターフェース(UI)を直接Javaで作成することは可能であり、実際多くの人はそうしていますが、生産性を大きく改善するためには適切なUI開発ツールが必要です。これまでEclipseの世界には、そうしたツールが(少なくともオープンソース・プロジェクトとしては)存在しませんでした。そのため多くの人は、豊富な機能を備えたクライアント・アプリケーションのプラットフォームとしてEclipseの採用が促進されるためには、それが障害であると考えていました。

Visual Editorプロジェクトは、GUIビルダー用のフレームワークを提供するために作られたものですが、このプロジェクトには完全機能のSWTビルダーやSwingビルダーも含まれています。Visual Editorでは、SWTやSwingベースのUIを、おなじみのドラッグ・アンド・ドロップを使って素早く効率的に作成することができます。この手法では、UI開発から手動プログラミングが無くなってしまいますが、プログラマーは作成されるコードをコントロールできなくなるわけではありません。Visual Editorは、UI定義フォーマットとして外部のUI記述子ファイルに頼るのではなく、実際にJavaコードを使います。つまりVisual Editorは、既存のJava UI作成コードを構文解析してそれを修正するか、あるいは開発者による視覚的な編集アクションに基づいて新しいコードを生成するのです。

UI開発を楽にすることを目的とした商用ツールも幾つか市販されています。Instantiationsの WindowBuilderは、この分野でのパイオニアです。WindowBuilderはVisual Editorが提供するベース機能の他に、Eclipse Forms APIなど、高度な機能をサポートしています。またMatisse4EclipseはMyEclipse IDEの一部であり、実質的にはSun MicrosystemsのProject Matisse Swing UIビルダーをEclipseプラットフォームに持ち込んだものです。

他のプラットフォームとプログラミング言語

Eclipseは、汎用のツール統合プラットフォームという使命に忠実に、Java言語以外のプログラミング言語でのソフトウェア開発もサポートしています。Eclipse Foundation自体は、C/C++開発者用の開発環境を提供することを目標として、CDT(C/C++ Development Tools)プロジェクトをホストしています。これは機能や能力の面で、Javaプログラマーが使用するもの以上のものです。現在CDTが提供する機能には、構文ハイライト機能を持ったC/C++ソース・エディターや、コンテンツ・アシスタンス、コード完了、GDBベースのデバッガー、C/C++アプリケーション・ランチャー、サーチ・エンジン、Makefileビルダー、その他があります。

Eclipse.orgがホストする他のプログラミング言語プロジェクトには、COBOLやFortran(プロジェクトPhotran)といったレガシー言語の他、最近の言語やプログラミング手法も含まれています。例えばAspectJ(Java技術にアスペクト指向プログラミングをもたらします)やWS-BPEL(Web Services Business Process Execution Language)、Laszlo IDE(Laszloは表現力豊かなインターネット・アプリケーションの開発や実現のためのオープンソース・プラットフォームです)、Lepido(Apache Cocoon Webアプリケーション・フレームワーク用のツール)などです。また、Ajaxアプリケーション開発用の最高のツールを作るための広範な動き(Rich Ajax Platform)も提案されています。Eclipse PHP IDEプロジェクトが新たに承認されたという最近の発表は、人気のPHPスクリプト言語の最新サポートを実現しようとする動きがあることを意味しています。

サードパーティーのプロバイダーも、他の言語をサポートしています。Omondo UMLは一連のUML(Unified Modeling Language)モデリング・ツールを提供しており、これはJDTとうまく統合することができます。しかしUMLはプログラミング言語に依存しないため、必ずしもJava技術とは関係のないプロジェクトにも使用することができます。PyDevプロジェクトは、Pythonプログラミング言語用の一連のオープンソース開発ツールです。xored softwareはTruStudio Professionalの中で、Pythonプログラミングを商用としてサポートしています(TruStudio FoundationはEPLの条件でライセンスされています)。また別のオープンソース・プロジェクトであるRDT(Ruby Development Tools)は、Rubyでのプログラミング用の完全なツールセットを提供しています。そして最後に、ANTLR Studioを使えば、独自のプログラミング言語やドメイン固有言語を設計することができます。ANTLR StudioはPlacid Systemsが開発した商用製品であり、ANTLRフレームワークに基づいて、コンテキストに依存しない文法定義を作成することができます。

中核となるツールと技術

Eclipseコミュニティーの重要な一部として、他の製品や開発ツールの基礎、あるいは補完として使われているソフトウェアがあります。こうしたプラグインやエンドユーザー・ツールを皆さんがダウンロードしたり使用したりすることはないかも知れませんが、これらは共通な標準に基づいて高品質なソフトウェアを作成する上で、あるいは既存製品の機能を補強する上で役立つのです。

Eclipse Foundationは、こうしたカテゴリーで幾つかのプロジェクトをホストしています。EMF(Eclipse Modeling Framework)は、自動コード生成が可能なソフトウェア・モデリング・フレームワークです。このフレームワークは、モデル・ドリブンのソフトウェア開発を活用する他の多くのプロジェクトで使用されています。EMFはUMLツールのサブセットしか使っていませんが、UML2プロジェクトはこれを拡張し、UML2標準を完全にサポートしています。

GEF(Graphical Editor Framework)は、任意のオブジェクト・モデルに対して表現力豊かなグラフィカル・エディターを作成するためのフレームワークです。このフレームワークも、視覚的な編集機能(UML図や図形、ワークフロー・エディターなど)を提供する他の多くのプロジェクトで使われています。GMF(Graphical Modeling Framework)はGEFとEMFを拡張したものであり、任意のEMFモデルに視覚的な編集機能を追加します。

DTP(Data Tools Platform)プロジェクトは、様々なリレーショナル・データソースを使うための共通ツールを作ることを目標にしています。このプロジェクトでは、データベース接続性(database connectivity)の管理や、SQLスクリプトの作成や実行の管理のためのツールを提供しています。

TPTP(Eclipse Test and Performance Tools Platform)は、4つのサブ・プロジェクトから構成されています。つまり共通のTPTP Platformと、アプリケーションの監視とロギング用のMonitoring Tools、Tracing and Profiling Tools、そして最後にTestingツール、という4つです。これらのツールを使うことによって、様々な実行環境でJavaアプリケーションを監視し、プロファイリングし、テストすることができます。

BIRT(Business Intelligence and Reporting Tools)は、既存のアプリケーションにビジネス・レポート機能を追加します。BIRTは、HTMLやPDFを含め、様々なメディアをサポートしています。

DSDP(Device Software Development Platform)は、埋め込みデバイスのソフトウェア開発用に一連のツールを提供することを目標としています。関連のプロジェクトであるeRCPは、RCP(Rich Client Platform)を埋め込みデバイス用に拡張しようとしています。

STP(SOA Tools Platform)の使命は、SOA(service-oriented architecture)に基づくソフトウェアの設計やコンフィギュレーション、アセンブリー、デプロイメント、監視、管理を可能とするフレームワークと模範的な拡張可能ツールを構築することです。このプロジェクトは、幾つかのサブ・プロジェクト(Core FrameworksやSOA System、Service Creation、BPEL2Java、BMPNなど)から構成されています。

またEclipse Technologyプロジェクトの傘下で、幾つかのサブ・プロジェクトがホストされています。これらのプロジェクトは、他の新しいプロジェクトや既存プロジェクトに利益をもたらす可能性を持った興味深い概念に対して、保育器の役割を果たしています。その他に、ここまでに触れなかったプロジェクトとして、ECF(Eclipse Communication Framework、リアルタイムのコミュニケーションやコラボレーションのアプリケーションを構築するための共通APIセットやコンポーネントを提供します)や、Higgins Trust Framework(様々なグループ・コンテキストでのIDやプロファイル、リレーションシップ・データなどを仮想的に統合するための拡張可能なフレームワーク)、Voice Tools Project(音声認識アプリケーションを作成できるようにWTPを拡張します)などがあります。


RCPとしてのEclipse

Eclipseが勢いを増している背景には、多くの会社や開発者が、Eclipseが単に統合ツール用の素晴らしいプラットフォームであるばかりではなく、ビジネス・アプリケーションやコラボレーション・アプリケーションなど、他のタイプの機能豊富なクライアント側アプリケーションにも使用できることに気付き始めていることが挙げられます。そのためバージョン3.0からはツールの範囲を超えて拡張が行われ、今やEclipseは、RCP(Rich Client Platform)として正式にサポートされています。

RCPアプリケーションも、プラグインで構成されている、という意味で、ツール指向のアプリケーションと同様な柔軟性と拡張性を備えています。しかし、一般的なRCPプラグインはずっと小さく、(アプリケーションが特別にサポートしていない限り)RCPアプリケーションの中に別のプラグインを単純に入れ込むことはできません。

IBMのWorkplace Client Technologyは、完全にEclipse RCPベースのプラットフォームの商用例です。アーキテクチャー的な面から考えると、このプラットフォームは、Eclipse IDEが開発ツールであるのと同様な意味でクライアント側のコラボレーション・ツールです。IBM Workplaceは、中央管理の表現力豊かなクライアント技術を使用して情報管理やチーム協力管理が行える製品ファミリーであり、インスタント・メッセージングやWeb会議、共有カレンダーによるスケジュール管理などの機能を持っています。

Eclipse RCPに基づくオープンソース・アプリケーションとして人気のある2つの例が、Azureusと RSSOwlです。Azureusは強力なBitTorrentクライアントであり、BitTorrent技術を使って配布された巨大なファイルをダウンロードすることができます。独自のプラグイン・セットを持っており、その数は次第に増えています。RSSOwlは、豊富な機能を持った配信ニュース・リーダーでありアグリゲーターです。RSSOwlを使うと、公開されているニュースやブログを、数多くある一般的な配信フォーマット(RSSやRDF、Atomなど)を使って検索し、購読し、読むことができます。

またEclipse RCPは、学術界や研究分野でのアプリケーションでも一般的になりつつあります。例えばNASAのJPL(Jet Propulsion Laboratory)は、Maestroプロジェクトの基盤としてEclipse RCPを選択しました(Maestroプロジェクトは、NASAの火星探査機Roverの上位レベル・オペレーションを管理するためのツールの集まりです)。このソフトウェアは、Roverの火星表面上での活動(どこに行くべきか、何枚写真を撮るべきか、など)を計画するために使われています。

その他にも、Eclipse RCPに基づく商用やオープンソースのアプリケーションが数多くあります。それらは無数の分野に広がっており、生物医学研究(BioclipseやSequence Scanner Softwareなど)や、数学や物理学用のモデリング(BrainBoxやGumTree、Kalypsoなど)、コミュニケーションやコラボレーション(WiredReachなど)、ビジネスや金融(Eclipse TraderやBSI CRM、eClarus、Logic MindGuideなど)、その他様々な用途に使われています。


まとめ

Eclipseはプラグインに基づく構成をとっているため、非常に多用途なプラットフォームであり、統合開発ツールとしての用途以外にも、数多くの様々なアプリケーションに使用することができます。IDEとしてのEclipseは、Javaコードを書くためだけではなく、他のプログラミング言語で開発を行うためにも使用することができます。またRich Client Platformとして、プログラミング以外の様々な課題を行うためにも使用することができます。Eclipseを利用した、様々な目的のための商用アプリケーションやオープンソース・アプリケーションの数は、今後も増え続けるでしょう。

参考文献

学ぶために

製品や技術を入手するために

  • alphaWorksに用意された、最新のEclipse technology downloadsをご覧ください。
  • 皆さんの次期オープンソース開発プロジェクトを、IBM trial softwareを使って構築してください。ダウンロード、あるいはDVDで入手することができます。

議論するために

  • Eclipse newsgroupsには、Eclipseを使用し、拡張することに関心を持つ人達のために豊富な資料が用意されています。
  • developerWorks blogsからdeveloperWorksのコミュニティーに加わってください。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source
ArticleID=236859
ArticleTitle=何をEclipseにプラグインするか
publish-date=05302006