Eclipseプラグイン実践テクニック(6)
Eclipse開発の効率をアップするために
NTTデータ先端技術 竹添直樹
NTTデータ 基盤システム事業本部 岡本隆史
2007/2/13
Javaオブジェクトをコントリビュートするには?
前節の例では、文字列をコントリビュートしましたが、これまでの連載でも見てきたとおり、実際の拡張ポイントでは、何らかの機能を提供するJavaオブジェクトをコントリビュートしたいというケースの方が多いことでしょう。ここでは、次のようなインターフェイスを実装したJavaオブジェクトをコントリビュート可能な拡張ポイントを作成してみます。
リスト4 IMessageProviderインターフェイス |
public interface IMessageProvider { |
先ほどと同じ手順で新たな拡張ポイントを追加します。Javaオブジェクトをコントリビュートできるようにするには、属性のタイプを「java」に指定します。拡張欄に基底クラス名、実装欄に実装インターフェイス名を指定しておくこともできます。
図6 Javaオブジェクトをコントリビュート可能な拡張ポイント |
この拡張ポイントに対して、以下のようにコントリビュートします。class属性には、IMessageProviderインターフェイスを実装したクラスを指定します。
リスト5 jp.sf.amateras.extension.messageProviderへのコントリビュート例 |
<extension point="jp.sf.amateras.extension.messageProvider"> |
コントリビュートされた拡張を読み取るコードは以下のようになります。前節の例と異なるのは下記リスト6の(1)でIConfigurationElementからcreateExecutableExtension()メソッドでclass属性で指定されたJavaクラスのインスタンスを取得している部分です。
リスト6 コントリビュートされたJavaオブジェクトを取得するコード例 |
IExtensionRegistry registry = Platform.getExtensionRegistry(); |
プラグイン内のリソースもコントリビュートできる
拡張ポイントのスキーマで属性をresourceとしておくと、プラグイン内のリソースをコントリビュートすることが可能になります。Eclipseプラットフォームが提供している拡張ポイントでも、ビューやエディタ、アクションなどのアイコンを指定できますが、これと同じと考えるとよいでしょう。
図7 属性のタイプをresourceに指定 |
PlatformからコントリビュータであるプラグインのBundleを取得し、そのgetEntry()メソッドによってプラグイン内のリソースをURLオブジェクトとして参照できます。以下は、icon属性で指定された画像ファイルをSWT(Standard Widget Kit)のImageオブジェクトとして読み込む場合の例です。
編集部注:SWTそのものについて詳しく知りたい読者は、連載米持先進技術工房−@IT分室の第2回「EclipseのVEでSWTアプリを作る(前編)」をご参照ください。
IConfigurationElement element = |
最後に…「Eclipse開発の効率をアップするために」
今回作成したサンプルはここからダウンロードできます。
さて、冒頭でも述べたとおり、本連載も今回で終了となります。長らくお付き合いいただきありがとうございました。
EclipseはJava開発者にとって、もはやなくてはならない道具となっています。もちろん、Eclipseが標準で提供している機能だけでも十分に便利なのですが、プラグインを開発できれば、自分の必要とする機能を自由に追加できます。普段使い込んでいるツールだからこそ、より自分の作業がしやすいようカスタマイズすることで、より一層開発効率も向上するというものです。本連載では、そんな思いを込めてEclipseの拡張方法についてできるだけ多くのトピックを取り上げてきました。
もちろん、Eclipseの提供しているAPIや拡張ポイントは膨大ですから、本連載では、それらのうち特に重要なものをごく一部取り上げたにすぎません。それでも、Eclipseプラグイン開発の一端に触れていただくことはできたのではないか、と思っています。
本連載が少しでも皆さんのEclipseライフの手助けとなったのであれば幸いです。
2/2 |
INDEX | ||
第6回 拡張ポイントを作成してレッツ、コントリビュート! | ||
Page1 拡張ポイントで「Hello, World!!」 まずは、拡張ポイントを追加する 拡張ポイントのスキーマ定義はどうなっているか? コントリビュートされた内容を読み取る |
||
Page2 Javaオブジェクトをコントリビュートするには? プラグイン内のリソースもコントリビュートできる 最後に…「Eclipse開発の効率をアップするために」 |
ご意見、ご感想はJava Solution 会議室へどうぞ |
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|