Eclipse Platformは、開発者用ツールを作成するためのオープンな汎用フレームワークを提供します。ツールを開発したり使用したりすることのある読者には、この記事が役に立つことでしょう。この記事では、Eclipse Platformの概要を紹介し、その動作方法を説明します。この記事は、http://www.eclipse.org で公開されている詳細な記事を抜粋したものです。

Marc Erickson, Project Manager, Object Technologies International Inc.

IBMに入社して28年目のMarc Ericksonは、南イリノイ大学を卒業し、データ・システム管理およびデータ処理の学位を得ています。1999年には、IBMの子会社であるObject Technology Internationalにプロジェクト・マネージャーとして加わり、組み込みコンピューティングおよびソフトウェア開発ツールの市場を担当しています。Marcは、現在、ソフトウェア開発プロセスの標準化を研究するANSI委員会の委員を務め、Java Community Process Executive Committee for J2MEにIBMの代表として参加しています。



Greg Adams, Dir. of Development Environment, Object Technologies International, Inc.

Greg Adamsは、Object Technology InternationalのDevelopment Environmentsのディレクターです。GregとObject Technologyとの関係は、その創設時から続いています。Gregは、VisualAge for JavaとEclipse Platformのユーザー・インターフェース・デザインの中心的な設計者です。彼は、UIデザイン、ユーザビリティー、アクセシビリティ、各国語サポート、およびユーザー支援 (ヘルプ) システム統合などの分野に興味を持っています。Gregは、Eclipse Project Management Committeeのメンバーです。



2001年 11月 01日

Eclipse Platformは、多くの企業が参加して新しく開発されたオープンな統合開発環境 (IDE) です。Emacsなどの従来のツールは世界中の開発者の開発ニーズをサポートしていましたが、その大部分は、市販のツールで利用できるGUIベースのIDEの高度な機能と便利さ、そして簡単な拡張性に欠けていました。Eclipseのオープン・ソース・コミュニティー・プロセスに、63か国の1,200人を超える開発者と、150以上の先進ソフトウェア・ツール・ベンダーが参画しました。そのため、Eclipseはこの状況を完全に変えていく可能性があります。

この記事では、Eclipse Platformの基本構造と動作方法を説明します。将来、さらに詳しい内容のホワイト・ペーパーが、Eclipse Development Teamから発表される予定です (参考文献を参照)。

なぜ新しいIDEプラットフォームを開発するのか?

インターネットの最近の急速な普及により登場してきた新しいテクノロジーやプログラミング言語や設計システムを利用するには、普通、専用のツールが必要です。今日では、開発者は、単一のアプリケーションをサポートするために、Javaプログラミング言語やPythonやC++ やその他の言語を使って、プロジェクト・コンポーネントを記述しなければならない場合があります。エンタープライズ・アプリケーションの場合は、Webサイトを通して顧客にサービスを提供するため、Enterprise JavaBeansテクノロジー、HTML、XML、JavaScript、JavaServer Pagesテクノロジーなどを採用する場合があります。

このような状況に対応するには、単一のツールでは機能や能力が不足していたり、ツールによって機能に差があるために、複数のプログラミング・ツールに依存しなければならないことがよくあります。ツールごとにユーザー・インターフェースが異なり、使用方法も異なるため、開発者の作業環境は複雑になる一方です。

Eclipse Platformは、一種の汎用ツール・プラットフォームであり、特定のツールではなくすべてのツールに対するオープンな拡張可能IDE (統合開発環境) です。Eclipse Platformの実際の価値は、多くのツール・プラグインによるもので、個々のプラグインは、Javaソース・コード、OOモデル、Webコンテンツ、XML、グラフィックス、ワークフロー・プロセス、ビデオなど、およそ想像できるありとあらゆるものの利用方法をEclipseに教えます。Eclipse Platformのプラグインとして作成されたツールは、プラットフォームおよび他のツールの両方と相互作用します。これにより、ユーザーにはシームレスな作業環境が提供されます。実際、ユーザーは、いつ、どのツールが起動したのかわからないこともあります。


Eclipse Platform

Eclipse Platformは、次の基本要件を満たすように設計および作成されています。

  • アプリケーション開発用のさまざまなツールの作成をサポートする。
  • 独立系ソフトウェア・ベンダーを含むすべてのツール・ベンダーをサポートする。
  • 任意のコンテンツ・タイプを操作するためのツールをサポートする。
  • 同じコンテンツ・タイプやツール・ベンダーのツールだけでなく、異なるコンテンツ・タイプまたはツール・ベンダーのツールについても、シームレスな統合を容易にする。
  • GUIベースおよび非GUIベースのアプリケーション開発環境をサポートする。
  • Windows® やLinuxTMを含む広範なオペレーティング・システムで動作する。
  • 広く普及しているJavaプログラミング言語をツールの記述に利用する。

Platformの最大の役割は、Platformを使用するためのメカニズムと従うべきルールをツール・プロバイダーに提供し、ツール群をシームレスに統合することです。このようなメカニズムは、明確に定義されたAPIインターフェース、クラス、およびメソッドを通して公開されます。また、Platformには、新しいツールの開発を容易にする便利なBuilding Blockとフレームワークも用意されています。

Eclipse Platformは、いずれの分野についても具体的な知識は持たず、Java言語アプリケーションに限定されてもいません。ただし、Eclipse SDKには、Eclipse Platform、Java Development Tool (JDT)、およびPlug-in Development Environment (PDE) が含まれています。JDTとPDEは、Platformに対するプラグインです。

Eclipse Platformは、プラグインを発見し、統合し、実行するためのメカニズムに基づいて構築されています。プラグインは、個別に開発して配布できる、機能の最小単位です。普通、小さなツールは単一のプラグインとして記述されますが、複雑なツールの機能は複数のプラグインに分割されます。JDTは、5つの機能プラグインと2つの文書プラグインで構成されています。

Platformを起動すると、利用できるプラグインで構成された統合開発環境 (IDE) が表示されます。Platform Runtimeと呼ばれる小さなカーネルを除き、Eclipse Platformのすべての機能はプラグインで実現されています。つまり、Platform自体も他のすべてのプラグインとまったく同じルールに従って動作しています。これは、魔法でもまやかしでもありません。

プラグインは、Javaプログラミング言語でコーディングされます。各プラグインには、他のプラグインとの相互接続を宣言したマニフェスト・ファイルがあります。相互接続モデルはシンプルです。プラグインは、任意の数の名前付き拡張ポイントと、他のプラグイン内にある拡張ポイントに対する任意の数の拡張機能を宣言します。拡張ポイントには、対応するAPIインターフェースを割り当てることができます。簡単に言うと、拡張ポイントは「新しい動作を提供してもらうためのスロットがあること」を示し、拡張機能は「他のプラグインに提供する新しい動作がある」ことを示します。

プラグインは、拡張ポイントを宣言し、それに対して拡張機能を提供することで、両方の役割を担うことができます。実際、Eclipse Platform自体のユーザー・インターフェースの大部分は、この方法で実行されています。プラグインとその拡張ポイントおよび拡張機能は、Platformの明確に定義されたAPIと連係することで、本当の意味での優れた拡張性を備えたオープン・システムを、ツールの作成者に提供します。JDTとPDEを利用すれば、独自のプラグイン、拡張ポイント、および拡張機能を簡単に作成できます。

Javaプログラミング言語でEclipse Platformのプラグインとして記述されたツールは、Platformとの統合を最高のレベルで実現します。Eclipse Platformは柔軟に設計されているため、外部のツールを起動して統合するプラグインを作成することさえ可能です。外部のツールであっても、WindowsのOLEやActiveXのような機能を通して、Eclipse Platformと統合できます。もちろん、この方法で記述されたツールは、このようなサービスを提供する基盤オペレーティング・システムに依存します。外部ツールは、それら固有の独立したGUIウィンドウを管理する必要があります。


Eclipse Platformのコンポーネント

Eclipse Platformの主要なコンポーネントは、図1 に示すとおりです。

  • Platform Runtime。
  • Workbench。Eclipseに対するグラフィカル・インターフェースおよびサブコンポーネントのJFaceとStandard Widget Toolkit (SWT) を実装します。
  • Workspace。開発環境を「保持」します。
  • Helpシステム。
  • Version and Configuration Management (VCM) システム。
図1: Eclipse Platformのアーキテクチャー
Eclipse Platformのアーキテクチャー

Eclipse PlatformのGUIバージョンでは、これらのコンポーネントがすべて必要です。テキスト・バージョンでは、Workbenchのグラフィカル機能は必要ありませんが、Workspace内に格納されているユーザー環境はGUIバージョンと同じものを提供できます。図2 は、Linux® で実行されているGUI版Eclipse Workbenchの画面表示です。図3 は、Windowsで実行されている同様のWorkbenchの表示です。VCMは、単一ユーザー環境でもチーム開発環境でも必要です。

図2: Linuxで実行されているEclipse Workbench
Linuxで実行されているEclipse Workbench
図3: Windowsで実行されているEclipse Workbench
Windowsで実行されているEclipse Workbench

Eclipse Platformの起動

Platform Runtimeは、起動時に、利用可能なプラグインを発見し、プラグイン・レジストリーを作成します。プラグインのマニフェスト・ファイルは、XMLで定義されています。拡張ポイントに対しては、拡張機能で使用する特別なXMLの要素タイプを追加して宣言できます。これにより、プラグインは、対応する拡張ポイントが宣言されているプラグインとの間で任意の情報を通信する拡張機能を提供できます。

マニフェスト情報は、関係するプラグインをアクティブにしなくても、またはプラグインのコードをロードしなくても、プラグイン・レジストリーから取得できます。普通、特定のユーザー・セッションの中で必要になるプラグインは少数なので、インストールされている大量のプラグインをサポートするには、この特徴が重要です。プラグインのコードがアクティブになるまでは、プラグインがメモリーに占める領域はわずかであり、起動時間にもほとんど影響を与えません。

プラグインは、いったんアクティブになると、プラグイン・レジストリーを使って自己の拡張ポイントに関係のある拡張機能を発見し、アクセスします。XMLベースのプラグイン・マニフェストを使うことで、プラグインの作成をサポートするツールも簡単に記述できます。Eclipse SDKに含まれるPlug-In Development Environment (PDE) はこのようなツールです。


パフォーマンス指向の新しいグラフィックス: JFaceとStandard Widget Toolkit (SWT)

開発者は大部分の時間をワークステーションの前で過ごすので、ツールは、軽快に動作し、応答性のよいルック・アンド・フィールを備えている必要があります。Eclipse Platformは、新しくて非常に効率の良いGUI構成ウィジェット群で設計されています。これらのウィジェットは、Eclipse Platform上にツールを実装する際にも自由に利用できます。Standard Widget Toolkit (SWT) のウィジェット・セットおよびグラフィックス・ライブラリーは、ネイティブなウィンドウ・システムのOSには依存しないAPIと可能な限り統合されます。JFaceは、SWTを使って実装されたさらに高レベルのユーザー・インターフェース構築用ツールキットです。JFaceを利用すると、一般的なUIプログラミング作業が大幅に簡素化されます。

Eclipse PlatformのUI全体およびEclipse Platformに組み込まれるツールは、SWTを使ってユーザーに対する情報を表示します。Linux、Microsoft Windows、グラフィカル環境を備えたその他のオペレーティング・システムをプラットフォームに持つワークステーションなど、すべてのツール実行環境において、この方法が使用されます。したがって、レイヤー化されたエミュレーションによる効率の悪いユーザー・インターフェース手法を使わずに、高いパフォーマンスとプラットフォームの移植可能性を実現できます。

SWTを使用することによる重要な副次的効果として、Linux上で開発したユーザー・インターフェースは、Windowsに適用しても最高のインターフェースになります。逆の関係も成り立ちます。


開発環境を「保持する」Workspace

Eclipse Platformのユーザー・インターフェースは、エディター、ビュー、およびパースペクティブが基になっています。ユーザーから見た視覚的なWorkbenchウィンドウは、複数のビューとエディターで構成されています。パースペクティブは、画面に表示されるエディターとビューの選択と配置として表されます。

エディターでは、オブジェクトやファイルを開いて、編集し、保存できます。ビューには、ユーザーがWorkbenchで作業しているオブジェクトについての情報が表示されます。ビューは、編集中のドキュメントについての情報を提供することでエディターを補助します。Workbenchウィンドウには複数の独立したパースペクティブを配置できますが、実際に表示されるのは一度に1つだけです。パースペクティブを使って、画面に表示するエディターのグループを整理します。

Eclipse Platformには、「ワークスペース」の概念が組み込まれています。ワークスペースは、開発者がプロジェクトの開発とテストを行うために必要なものをすべて保持します。ワークスペースは、開発者のワークステーションにローカルに保持され、ツール・プラグインの構成設定、編集中のデータ・オブジェクト、開発中のコンポーネントの中間形式や完成形式などが収められます。ローカルのワークスペースを使うことで、LAN経由ではなくインターネット経由でアクセスできるリポジトリーを介した、効率のよいチーム・コラボレーションが可能になります。

チーム・サポート・モデルの中心になるのは、バージョン管理されたリソースを共用サーバーに格納するリポジトリーです。Eclipse Platformは、独自のリポジトリー・システムを備えてはいませんが、異なる種類のリポジトリーを並行してサポートするように設計されています。1つのワークスペースから、異なる種類のリポジトリーに同時にアクセスできます。Eclipse Platformのチーム開発サポート・コンポーネントは、バージョン/構成管理 (VCM) の機能を、ワークスペース内のプロジェクトに付加します。チーム・コラボレーション・サポート・モデルにより、開発者は、複数の独立したリポジトリーおよびリソースの複数のバージョンを並行して利用できます。大部分のツールはワークスペース内にあるリソースだけを使用し、バージョン/構成管理についての問題はチーム・サポート・コンポーネントが扱います。


まとめ

Eclipse Platformは、汎用的なBuilding BlockとAPIの強固な基盤を備え、新しい開発機能の統合に利用できるさまざまな拡張ポイントを提供します。このような拡張ポイントを利用すれば、独立したプラグインとして作成したツールでEclipse Platform自体を拡張できます。

Eclipseは、異なる企業や独立系ソフトウェア・ベンダーが開発者に必要なツールを作成する際の基礎を築くというアイデアの下に開発されています。つまり、関係する各企業が開発者向けのツールを新しく開発する際に要する時間を大幅に短縮するだけでなく、他の企業が開発したツールを統合することもできるようにします。

結果として、開発者は、異なるベンダーから提供されるツールを使って個人的な開発ニーズを満たすようにカスタマイズできるIDEを手に入れ、単に共同で作業するのではなく、効果的な連携作業を行うことができるようになります。

参考文献

  • Eclipse.org サイトでは、Eclipseコミュニティーに加わり、この新しいオープン・ソースIDEをダウンロードすることができます。Eclipse Platformのソース・コードは、Common Public Licenseの下でライセンス供与されています。EclipseのCPLは、IBM Public License Version 1.0に基づいています。このライセンスは、Open Source Initiativeによって使用を許可されました (「OSI Certified」マークを付与)。
  • Eclipse.orgでは、用語集Eclipseプロジェクトの説明、技術記事ニュースグループなども提供されています。
  • Eclipse Platformホワイト・ペーパーでは、Eclipseの主要なコンポーネントと機能が詳しく解説されています。
  • Eclipse Projectの支援を担当するIBMのプロジェクト・マネージャーMarc Ericksonとのインタビューでは、Eclipseの目標がさらに詳しく説明されています。

コメント

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=237186
ArticleTitle=Eclipse Platformの利用
publish-date=11012001