Eclipseプラグインを作る(1)Eclipse徹底活用(8)(1/2 ページ)

» 2004年04月10日 00時00分 公開
[的場聡弘, 岡本隆史NTTデータ]

 「連載:Eclipseを使おう!」の第2回「Eclipseの統合開発環境を使いこなす」でも言及していますが、Eclipse自体はJava開発ツールではなく、さまざまなプラグインを統合するための「プラットフォーム」にすぎません。Eclipseプラットフォームが提供している「拡張ポイント(extension-point)」に、「拡張機能」を「プラグイン」することにより、Eclipseプラットフォームへ拡張機能が統合される仕組みになっています(図1)。

 「Eclipseプラグイン」とは、Eclipse開発環境に統合できる、新しい「機能」を実装したものだといえます。今回から2回に分けて、簡単なプラグインを作成しながら、自分の実装したい拡張機能をEclipseにプラグイン可能なように実装していく方法をご紹介します。

図1 Eclipseプラットフォームの構造 図1 Eclipseプラットフォームの構造

 なお、本稿の解説はEclipseのヘルプを参照しながら話を進めていきます。Eclipseには、ヘルプ・サーバという内部サーバ機能が用意されており、Webブラウザからヘルプページを参照することができます。ヘルプ・サーバを利用するためには[ウィンドウ]→[設定]の[ヘルプ]→[ヘルプ・サーバ]設定画面で、[listenするサーバのポート]に“12080”を設定してOKをクリックした後、[ヘルプ]メニューから[ヘルプ目次]を実行して、ヘルプサーバを起動しておいてください。記事中のリンクをクリックするとヘルプページを参照できるようになります(ヘルプ・サーバで参照できる記事中のリンクは< >で囲っています)。

プラグインによる拡張の仕組み

 前述したとおり、Eclipseはプラグインによって機能を拡張することのできる「プラガブル」な構造になっています。プラグインできる場所のことを、拡張ポイントといい、ここにプラグインする機能を、「拡張(extension)」といいます。

 これら拡張ポイントには、そのポイントのルールがインターフェイスとして用意されています。このインターフェイスを実装したクラスを用意し、組み込み方を記述した設定ファイルである「plugin.xml」を用意することで、Eclipseプラットフォームがこの拡張を認識します。また、既存プラグインに機能を追加する「フラグメント」、複数のプラグインをある機能単位でくくる「フィーチャー」といった拡張方法もあります。

 私たちが普段利用しているEclipse開発環境(JDTを含む)は、全部で87カ所の拡張ポイントを持っています。すべてのEclipseとJDTの拡張ポイントのリストは、ヘルプ「Platformプラグインデベロッパーガイド」の<プラットフォーム拡張ポイント>と、「JDTプラグインデベロッパーガイド」の<JDT拡張ポイント>に記述されています。

はじめてのプラグイン - アナログクロックの仕様

 それではまず、ビューを持つプラグインを作成してみましょう。ここではサンプルとして、プラットフォームとは何も関連を持たない、単純に現在時刻を表示するだけの機能、アナログ時計を表示するプラグインを作成することを目指します。このプラグインには、以下の機能を実装する必要があります。

  1. Eclipseプラットフォームにビューとして表示される
  2. 1.の表示領域に収まる、円形の文字盤に、時、分、秒をアナログ的に針で表示する
  3. 1秒に1回秒針が動く。

 では、上記の機能を実装していきましょう。

プラグイン開発環境(PDE)を使ってplugin.xmlを作成する

 Eclipse開発環境はそれ自体、PDE(Plug-in Development Environment)という、プラグインを開発するための環境を備えています。これを利用することで、拡張ポイントをウィザード形式で選択したり、設定ファイルであるplugin.xmlというファイルを効率的に編集したり、ブレークポイントを設定してデバッグすることが可能です。

 Eclipseを起動して、[ファイル]メニューから[新規]→[プロジェクト]を選択し、新規プロジェクトウィザードを起動します。左のウィンドウから[プラグイン開発]を選択した後に右側のウィンドウから[プラグイン・プロジェクト]を選択し、[次へ]をクリックします(画面1)。

画面1 [新規プロジェクト]ダイアログから[プラグイン開発]-[プラグイン・プロジェクト]を選択 画面1 [新規プロジェクト]ダイアログから[プラグイン開発]-[プラグイン・プロジェクト]を選択

 [プラグイン・プロジェクト名]ダイアログが開きます。[プロジェクト名]にプロジェクト名を入力しますが、本稿では「org.ocharake.matobaa.analogClock」と入力します(この名前はプラグインIDとしても用いられるので、<プラグインIDの命名規約>に沿った名前を付けてください)。[次へ]をクリックします。次に表示される[プラグイン・プロジェクト構造]ダイアログでは、特に変更する項目はないので、そのまま[次へ]をクリックします(画面2)。

画面2 プロジェクト名に「org.ocharake.matobaa.analogClock」と入力 画面2 プロジェクト名に「org.ocharake.matobaa.analogClock」と入力

 次に開く[プラグイン・コード生成プログラム]ダイアログでは、コード生成ウィザードを選択します。[選択可能なコード生成ウィザード]から[デフォルト・プラグイン構造]を選択します(すなわち、最小限のコード作成を行います)(画面3)。

画面3 コード生成ウィザードとして[デフォルト・プラグイン構造]を選択 画面3 コード生成ウィザードとして[デフォルト・プラグイン構造]を選択

 [次へ]をクリックすると、[単純なプラグイン・コンテンツ]ダイアログが開きます。[プロバイダー名]に開発者の名前を入力(画面4)し、[終了]をクリックすることで、Javaソース、プロパティファイル、plugin.xmlという3つのファイルを含むプロジェクトが生成されます。

画面4 プラグイン生成に必要な情報を入力 画面4 プラグイン生成に必要な情報を入力

 それではいよいよ、ワークスペースにビューを追加してみましょう。このときに用いる拡張ポイントは、org.eclipse.ui.viewsです。まず、plugin.xmlに必要な設定を、ウィザードを使って追加していきます。いまエディタ領域には、「AnalogClockプラグイン」というタイトルのエディタが表示されています(表示されていない場合は、パッケージエクスプローラービューでplugin.xmlをダブルクリックしてください)。これがplugin.xmlの編集を支援してくれる、「プラグインのマニフェストエディタ」です。

画面5 「AnalogClockプラグイン」というタイトルのエディタが表示されている 画面5 「AnalogClockプラグイン」というタイトルのエディタが表示されている

 エディタの下部の[拡張]タブをクリックし、[追加]をクリックすると、[新規拡張]ウィザードが現れます。左側のウィンドウから[汎用ウィザード]を選択した後、右側のウィンドウから[スキーマ・ベースの拡張]を選択して[次へ]をクリックします(画面6)。

画面6 [汎用ウィザード]-[スキーマ・ベースの拡張]を選択 画面6 [汎用ウィザード]-[スキーマ・ベースの拡張]を選択

 [拡張ポイント選択]ダイアログが開くので、[org.eclipse.ui.views]を選択して[終了]をクリックします(画面7)。

画面7 [org.eclipse.ui.views]を選択 画面7 [org.eclipse.ui.views]を選択

 「org.eclipse.ui.views」という「拡張」が生成され、エディタ上に表示されます。これを右クリックし、[新規]→[View]を選択します(画面8)。すると、「org.ocharake.matobaa.analogClock.view1」というエレメントが追加されます(画面9)。

画面8 「org.eclipse.ui.views」を右クリックし、[新規]→[View]を選択 画面8 「org.eclipse.ui.views」を右クリックし、[新規]→[View]を選択
画面9 「org.ocharake.matobaa.analogClock.view1」というエレメントが追加される 画面9 「org.ocharake.matobaa.analogClock.view1」というエレメントが追加される
       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。