Eclipseは成長し続けています。これは、管理すべきプロジェクトやプラグインの数が増え続けていることを意味します。開発者にとっては、最新のEclipseビルドに合わせるための管理プロセスは面倒なものです。一方新しいユーザーにとっては、プロジェクトやプラグイン、ワークスペース、インストールなどの概念は、最初は途方もなく大変なものに思えてしまいます。この記事では、Eclipse環境を管理するためのベスト・プラクティスの幾つかを紹介します。

Chris Aniszczyk, Software Engineer, FIT Team, IBM China Development Lab 

Chris AniszczykChris AniszczykはIBM Lotusのソフトウェア技術者であり、IBMのExtreme Blueインターンシップ・プログラムの卒業生でもあります。オープンソースの信奉者であり、現在はGentoo Linux (http://www.gentoo.org) ディストリビューションに取り組んでいます。またEMFT(Eclipse Modeling Framework Technology)プロジェクトのコミッターでもあります。



Phil Crosby (philc@philisoft.com), Student, University of Maryland, College Park

Phil CrosbyPhil Crosbyは、University of Maryland, College Parkに在学中です。MicrosoftのVisual Studioチームのインターンとして働いたことがあり、IBMのExtreme Blueのインターンだったこともあります。現在はペン・ベースのユーザー・インターフェースに取り組んでおり、LinuxでのMono上に.NET GNOMEデスクトップ・アプリケーションを書いて楽しんでいます。



2006年 2月 14日

プラグインを管理する

プラグインとは何か、なぜプラグインを理解する必要があるのか

『プラグイン』(『バンドル』とも言われます)は、Eclipseの機能の一端です。下記に挙げるような、Eclipseの中のすべてに対してプラグインがあります。

  • パースペクティブとビュー
  • エディター
  • モデリング・ツール
  • ロギング機能や、その他のコア機能

実際のところ、Eclipse IDE全体が、正にプラグインの巨大な集合として構築されています。Eclipseベースの他の製品(IBM Rational®;; Software Architectなど)は、新しいプラグインを追加することによって、ベースとしてのEclipseを機能強化しているのです。

関連した一連のプラグインは、『フィーチャー』としてグループ分けされています。フィーチャーと、そのプラグインは、Eclipseプログラム・ディレクトリーの中にあります(この例では、Eclipseは/opt/eclipseにインストールされています)。下記はディレクトリー・レイアウトの一例です。

リスト1.  Eclipseのフィーチャーとプラグインのディレクトリー構造
/opt/eclipse/ 
   features/ 
      org.eclipse.jdt_3.1.1/
         feature.xml 
         ... 
   plugins/
      org.eclipse.jdt.ui_3.1.1.jar
      ...

Eclipseは、互いにバージョンが異なる同じプラグインを数多く持つことができます。Eclipseはプラグインの依存関係を解決することができ、またバージョン競合を回避できるため、2つのSubclipseプラグインが同時にインストールされていても、まったく心配する必要はありません。

Eclipseをしばらく使っていると、サードパーティーのプラグインをダウンロードしたり、自分独自のプラグインを作成したりすることによって、必然的に新しい機能を追加することになります。こうしたプラグインを、様々なバージョンのEclipseに渡って管理することは大変な手間です。プラグインはEclipseプログラム・ディレクトリーの中にあるため、新しいバージョンのEclipseをインストールすると失われます。これはつまり、多くのEclipseインストールがある場合には、膨大な数のプラグインを複数コピー持たなければならないことを意味します。もっと困るのは、Eclipseをアップグレードしようとする度に、こうしたプラグインのすべてを再インストールしなければならないのです。

プラグインがEclipseプログラム・ディレクトリーとは別の場所に保存されている場合には、新しいバージョンのEclipseにアップグレードする度にプラグインを再インストールする必要はなく、複数バージョンのEclipseの間でプラグインを共有することができます。

方法その1: 手動によるファイルシステム拡張

プラグインを管理するための方法には、3つがあります。第1の方法は、プラグインを保持するディレクトリー(『製品エクステンション(product extension)』と呼ばれます)を手動で作成し、そこにプラグインを移動してから、フィーチャーやプラグインに関してはこのディレクトリーを見るようにEclipseに伝える方法です。

ここでの例では、プラグインを置く場所として、/opt/eclipse-pluginsという場所を作成します。Eclipseがここにプラグインを保存するようにさせるには、まず次のようなディレクトリー構造とファイルを作ります。

リスト2.  Eclipse製品エクステンションのディレクトリー構造
/opt/eclipse-plugins/ 
   eclipse/ 
      .eclipseextension
      features/ 
      plugins/

ここで、こうしたディレクトリーを作ること以外に、eclipseディレクトリー(私達の例では/opt/eclipse-plugins/eclipse)の中に .eclipseextensionというファイルを作る必要があることに注意してください。このファイルによって、見つけるべきエクステンションがあることをEclipseに知らせるのです。このファイルは、次のような内容を含んでいる必要があります。

id=org.eclipse.platform name=Eclipse Platform
version=3.1.1

.eclipseextensionファイルの中のversionプロパティーは、この製品エクステンションを使っているEclipseのバージョンに設定します。これは(3.1.1)のように具体的な場合もあれば、もっと一般的な(3.0.0)や、非常に一般的な(1.0.0)などの場合もあります。この記事の執筆時点では、バージョン番号は製品エクステンションの機能に何の影響も与えないようです。

Windows®;;を使っている場合には、Explorerシェルからは .eclipseextensionファイルを作成できないことに注意してください。このファイルを作るには、Notepadを開いてファイルの内容を入力し、.eclipseextensionとして保存します。(保存する場合には、ファイルタイプとして必ず「すべてのファイル」を選択します。そうしないとNotepadは、ファイルに.txtという拡張子を付けてしまいます。)

次に、今後Eclipseはここでプラグインを検索するように、このプラグイン位置をEclipseに伝えます。これにはProduct Configuration Managerを使います(そこに行くためには、Help > Software Updates > Manager Configurationを選択します)。

Product Configuration Managerから、新しいEclipseエクステンションを追加することができます。上記で作成されたもの(/opt/eclipse-plugins)を使用可能にするには、これをエクステンション位置として追加する必要があります。皆さんは既にエクステンション位置を1つ持っています。それはEclipseインストールのpluginsフォルダーです。別のエクステンション位置を追加するには、Eclipse Platformで右クリックし、Add > Extension Locationを選択します。

図 1. エクステンション位置を追加する
エクステンション位置を追加する

プラグインが置かれているディレクトリーを選択すると、製品エクステンション・リストの中にプラグインが現れます。これによって、プラグインが見つかることを確認することができます。

図 2. エクステンション位置のプラグインを見る
エクステンション位置のプラグインを見る

Product Configuration画面の良いところは、すべてのプラグイン位置を簡単に使用不可にできることです。これは、プラグイン開発を行う場合や様々なコンフィギュレーションをテストする場合に、非常に便利です。

方法その2: Configuration Managerを使って製品エクステンションを追加する

ファイルシステム上にフォルダーや .eclipseextensionファイルを作成する代わりに、Eclipseに製品エクステンションを作らせることができます。

新しい製品エクステンションを作るには、Update Manager(Help > Software Updates > Find and Install)を使います。新しいプラグインをインストールすると、Eclipseはインストールすべき場所を指定するようユーザーに促します。ここでChange Locationをクリックし、製品エクステンションを選択します。

図 3. プラグインのインストール位置を選択する
プラグインのインストール位置を選択する

Add Locationを選択します。ディレクトリーを選択すると、Eclipseはそこに製品エクステンションを作成してくれます。

図 4. Update Managerを使って新しい製品エクステンションを作成する
Update Managerを使って新しい製品エクステンションを作成する

今後皆さんがプラグインをインストールする際には、自分に必要なプラグイン・エクステンション位置にプラグインがインストールされることを確認します(図3のInstall Location領域を見てください)。

方法その3: 製品エクステンションを管理するためのlinksフォルダーを作成する

ファイルシステムの中に、方法その1で作成したような製品エクステンションがある場合には、Eclipseプログラム・ディレクトリーの中に幾つか単純なファイルを作成し、これらのディレクトリーでプラグインを探すようにEclipseに知らせます。

まず、Eclipseインストール・フォルダー(例えば、/opt/eclipseなど)の中に、linksというディレクトリーを作成します。このフォルダーの中に、*.linkファイルを作ります(例えば、emfPlugins.linkなど)。各linkファイルは製品エクステンション位置を示します。Eclipseは起動すると、このlinksフォルダーをスキャンし、linkファイルの示す製品エクステンションそれぞれの中でプラグインを発見します。下記は、linksフォルダーを使ったEclipseインストールのレイアウト例です。

リスト3.  linksフォルダーを使ったEclipseインストールのレイアウト
/opt/eclipse/
     links/
          emfPlugins.link
          webtools.link
          updateManager.link
          ...
     ...

linksファイルの内容は、次のようになるはずです。

path=/opt/plugins/emf/

Windowsの場合

この記事ではLinux版のEclipseに主な焦点を当てていますが、ここに挙げているサンプル・リストはすべてWindowsでも有効です。ただし、パスは適当なWindowsパスに変更する必要があります。またWindowsの場合は、パスの指定に二重バックスラッシュが必要なことに注意してください(例えば、 path=c:\\plugins\\emfなど)。

ここで、/opt/plugins/emf/ は(リスト1と同じように)Eclipse製品エクステンションのディレクトリー構造を持っています。

この方法の良いところは、すべてのプラグイン位置が、1つのフォルダーの中にテキスト・ファイルとして保存されていることです。これはつまり、Eclipseをアップグレードする際に、このlinksフォルダーを新しいEclipseインストールに単純にコピーすることによって、製品エクステンション・フォルダーを指すようにできるということです。また(ファイルシステムがシンボリック・リンクをサポートしていれば)、各Eclipseインストールからlinksフォルダーへのシンボリック・リンクを作ることによって、すべてのEclipseインストールに対して1つの共通なlinksフォルダーを持つことができます。


Eclipseワークスペースを管理する

Eclipseでのワークスペースの概念は、単純にプラグインによってアクセスされる、リソース・コンテナーとして表現されています。ワークスペースは、エンドユーザーとEclipseプラットフォームとが対話動作を行うための重要な場所です。エンドユーザーは、ワークスペースの中でプロジェクトを作成し、その内容を操作することができます。ワークスペース自体は、ファイルシステムの中にディレクトリーとして存在し、(1つのワークスペースは)1つのEclipseインスタンスでしか使用できない、という制約があります。またワークスペースには、プライベート情報(プラグインの状態など)を保持する .metadataディレクトリーも含まれています。

なぜ複数のEclipseワークスペースが必要なのか

単純な答えとしては、パフォーマンスの問題です。ワークスペースの中にあるプロジェクトの数が多ければ多いほど、いずれ開発システムがそうしたプロジェクトを処理できなくなる可能性が高くなります。この問題を解決するためには、Eclipseのワークスペースを、-dataパラメーターを使ってパーティション分けします。このパラメーターは、Eclipse実行可能ファイル(/opt/eclipse/eclipseなど)に渡されます。

リスト4.  別々のワークスペースを規定する
/opt/eclipse-3.1/eclipse -data /opt/workspaces/web
/opt/eclipse-3.2M2/eclipse -data /opt/workspaces/web
/opt/eclipse-3.2M2/eclipse -data /opt/workspaces/dev -vmargs -Xmx512m

ワークスペースに関するヒント

Eclipse実行可能ファイルに -showlocationパラメーターを渡すと、ワークスペースの位置をEclipseのタイトル・バーに表示することができます。また、-vmargs -XmsやXmxなどの引数を使うと、ワークスペースごとに別々なパフォーマンス特性を割り当てることができます。

また、Eclipseの中でFile > Switch Workspaceを選択すると、Eclipseを再起動せずにワークスペースを切り換えることができます。

また、「research」ワークスペースも持つこともできます。このワークスペースに巨大なコードベースをロードし、EclipseのOpen Type(Ctrl+Shift+T)などを使ってコード全体に渡る検索を行うのです。これは何かの例を調べようとする場合や、あるオープンソース・プロジェクトが特定な問題にどう対処したか、などを調べる場合には非常に便利です。

複数のワークスペースを持つことによる欠点は、それらの間で開発プレファレンスを共有する必要があることです。プレファレンスはEclipse内のワークスペース単位で保持されるため、ワークスペース・プレファレンスはエクスポートして必要なワークスペースにインポートする必要があります(File > Export > Preferences)。


Eclipseインストールを管理する

なぜ複数のEclipseインストールが必要なのか

Eclipseベースの製品を1つ以上使用している場合には、必然的に複数のEclipseインストールを持つことになります。例えば、日々行うJava™言語でのコーディングにはベースEclipse V3.1を使い、IBM WebSphere®;;アプリケーションのオーサリングにWebToolsとEclipseを使う場合であれば、2つの全く別なEclipseインストールを持っていることになります。こうしたEclipseベース製品の間でプラグインやワークスペースを共有することによって、時間を節約でき、また、アップグレードにまつわる頭痛を避けることもできます。

また、Eclipse用のプラグインを開発する場合にも、複数のEclipseインストールが必要になるでしょう。複数のEclipseインストールがあれば、異なるバージョンのEclipseを使ってプラグインの機能をテストすることができます。また、様々なEclipseインストールに対して様々なプラグイン・セットを関連付けることによって、複数の環境コンフィギュレーションでプラグインをテストすることができます。

また、Eclipse IDE内でのフィーチャーを調べることによって、どのプラグインがEclipseで使われているかも管理できることに注意してください。(Eclipse IDEは、こうしたフィーチャーに属するプラグインを使用可能に、また使用不可にします。)そのためには、Eclipseの中からHelp > Software Updates > Manage Configurationを選択します。また、プラグイン開発を行っている場合、Run Configuration Managerの中からEclipseのテスト・インスタンスを実行すれば、どのプラグインが使用可能になっているかも管理することができます。私達の経験から一般的に言えることとして、(特にテスト目的などの場合)数多くのバージョンやコンフィギュレーションを管理する上で最も融通がきき、再利用も容易なのは、複数のEclipseインストールを持つことなのです。

複数のEclipseインストール

Eclipseインストールは、それぞれ独自のフォルダーの中で自己完結しています。複数のEclipseインストールを持つために必要なことは、自分が必要とするEclipse製品とバージョンをダウンロードし、それ専用のディレクトリーの中で解凍するだけです。下記は、様々なバージョンのEclipseに対してプラグインをテストするために使用するレイアウトの一例です。

/opt/eclipse-3.0
/opt/eclipse-3.1
/opt/eclipse-3.2-m1

プラグインをインストールする時間を節約し、またワークスペースの重複を避けるためには、様々なEclipseインストールの間で、できるだけ多くのものを共有するようにすべきです。上で説明した通り、共有できるものとしては次のようなものがあります。

  • プラグイン: すべてのインストールが、1つの(あるいは複数の)共通プラグイン・フォルダーを使うにします。一番良いのは、方法その3で説明したようにlinksフォルダーを作ることです。
  • ワークスペース:Eclipseワークスペースを管理するで説明した通りです。
  • ワークスペース・プレファレンス: ワークスペースにバインドされたプレファレンス。Eclipseの中からFile > Export > Preferencesを選択します。

ただし、異なるEclipseインストールの間でワークスペースやプレファレンスを共有した場合、問題が起きやすいことには注意してください。特にバージョン番号が大きく異なる場合(例えば3.1と3.2など)には注意が必要です。


まとめ

この記事には2つの目標がありました。Eclipseで最も基本的な作業単位(つまりプラグインやプロジェクト、ワークスペースなど)を紹介すること、そして、複数のEclipse環境を管理することによる利点を(欠点を含めて)示すことです。皆さんがこの記事から得た知識を生かし、Eclipse維持管理の時間を節約できることを祈っています。

参考文献

学ぶために

  • この記事を書く動機となった「Managing Plugins in Eclipse」を読んでください。
  • developerWorksの記事、「Eclipseで、未解決のプラグイン依存関係を見つける」を読んで、皆さん独自のDependency Walkerを作成し、未解決のプラグイン依存関係を見つけてください。
  • Eclipse FAQ 32には、「メインのインストール・ディレクトリーの外にプラグインをインストールできるか」という質問への答えが出ています。
  • Eclipseに関する詳細を、Eclipse.orgで入手してください。
  • Eclipse Cornerの技術記事を読んで、Eclipseについてさらに学んでください。
  • Eclipse Corner Developer Community Resourcesについても学んでください。
  • Eclipseに関する重要会議、EclipseCONに参加してください。
  • Eclipseハッカーと貢献者の世界への窓、Planet EclipseでEclipseについて学んでください。
  • 公式なEclipse wikiでEclipseについて学んでください。これとは別に、Unofficial Eclipse WikiでもEclipseについて学ぶことができます。
  • developerWorksのOpen sourceゾーンをご覧ください。オープンソース技術を使った開発や、IBM製品でオープンソース技術を使用するためのハウ・ツー情報やツール、プロジェクトの更新情報など、豊富な情報が用意されています。

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

  • 皆さんの次期オープンソース開発プロジェクトを、IBM trial softwareを使って革新してください。ダウンロードで、あるいはDVDで入手することができます。

議論するために

コメント

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=236852
ArticleTitle=Eclipse環境を管理する
publish-date=02142006