Eclipseのカスタマイズの勧め(後編)
Eclipseの動作をカスタマイズするための
Eclipseのフィーチャーの使い方



自分独自のグローバル初期設定

 Eclipseは優れた技術だが、どのツールでも同じように、多少はカスタマイズしなければ自分にとって完ぺきなものとはならない。各ツールにはツールの動作や表示内容を変更できる初期設定ページが提供されている。本稿執筆時点でEclipseの初期設定ページは62ページあったので、新しいページを開けば変更してみたくなるオプションが必ず見つかるのではないだろうか。しかしこれは、複数のワークスペースを利用したり、いくつかのオプションのコーディネートが必要なチーム環境で作業をする場合は、ワークスペース全体、もしくはほかのユーザーとの間での最も優れた選択肢の管理方法を考える際に課題となってくる。

 Eclipseにも初期設定の書き出し/読み込みオプションがある。「Preferences」ダイアログは、どのページでも、「.epf」ファイルに初期設定を書き出すことができる。そして、別のワークスペースを使うときや、ほかのユーザーと共有するときはこのファイルを読み込むことができる。さらに、標準の初期設定を全員が利用できるよう、チームのメンバーと共有するプロジェクトにこれを登録することもできる。

 しかし、これでは単調で退屈なものとなってしまい、設定を忘れると厄介だ。EclipseやEclipseベースの製品を使っているときに覚えておきたいグローバル初期設定の定義方法はもう1つある。プライマリフィーチャーに関連付けられた「plugin_customization.ini」ファイルを修正すれば、初期設定のデフォルト値はカスタマイズできる。

 プライマリフィーチャーを見つけるには、「eclipse」ディレクトリ中にある「install.ini」ファイルを見る。例えば、Eclipseを解凍した標準の状態では「install.ini」の内容は以下のようになっている。

リスト Eclipseの標準セット中の「install.ini」の内容
# install.ini
# java.io.Properties file (ISO 8859-1 with "" escapes)
# This file does not need to be translated.

# Required property "feature.default.id" contains the id of the primary feature
# (the primary feature controls product branding, splash screens, and plug-in customization)
feature.default.id=org.eclipse.platform


# Required property "feature.default.application" contains id of the core
# application that gets control on startup. For products with a UI, this
# is always org.eclipse.ui.workbench; for "headless" products, this is product-specific.
feature.default.application=org.eclipse.ui.workbench

 「feature.default.id=」の項目は、デフォルトのプライマリフィーチャーを識別している。Eclipse起動時に「-feature」オプションを使えば別のフィーチャーをプライマリとして宣言可能なことを覚えておきたい。

 フィーチャーのコントロールおよびブランド登録プロセスの大半の部分同様に、実際の作業はフィーチャーに関連付けられるプラグインの中で行われる。Eclipseにとっては、これがフィーチャーと同じidを持つ「org.eclipse.platform」プラグインとなる。プライマリフィーチャーのブランドを登録するプラグインであるこのプラグインを見れば、「plugin_customization.ini」という名前のファイルが見つかる。このファイルには、書き出された初期設定ファイルと同じエントリが含まれる。このファイルは、プラグイン自身が定義したものの代わりに使うべきデフォルトの初期設定値の特定をEclipseが開始するときに読み込まれる。これにより、製品、もしくはユーザー自身がプラグインの動作を変更できるようになる。デフォルトの「plugin_customization.ini」ファイルにはエントリが1つしかない。

リスト デフォルトの「plugin_customization.ini」ファイル
# plugin_customization.ini
# sets default values for plug-in-specific preferences
# keys are qualified by plug-in id
# e.g., com.example.acmeplugin/myproperty=myvalue
# java.io.Properties file (ISO 8859-1 with "" escapes)
# "%key" are externalized strings defined in plugin_customization.properties
# This file does not need to be translated.

# Property "org.eclipse.ui/defaultPerspectiveId" controls the
# perspective that the workbench opens initially
org.eclipse.ui/defaultPerspectiveId=org.eclipse.ui.resourcePerspective

 この項目は、新しいワークスペース向けに開かれた、もしくはすべてのパースペクティブを閉じてEclipseを停止したときのパースペクティブを識別する。Eclipseベースの製品を使っているときは、このエントリが異なる場合もある。

 インクルードしたい初期設定を特定する作業はやや面倒だが、基本的には次のようになる。

  1. 全く新しいワークスペースで作業を開始する
  2. 変更したい初期設定値を修正する
  3. 初期設定を「.epf」ファイルに書き出す
  4. ファイルを検査して新しいキーを特定し、新たに加えたばかりの変更に対応するかどうか判断する。
  5. ブランド登録するプラグイン(Eclipse使用時はorg.eclipse.platform)中の「plugin_customization.ini」ファイルにキーエントリーを1つ以上コピーする
  6. 結果をテストし、新しいキーを使うか、最初からやり直す
メモ
製品の「plugin_customization.ini」ファイルをアップデートする自信がない場合は、このファイルのコピーを別の場所に作成し、EclipseやEclipseベースの製品を起動する際にこのファイルを識別する起動パラメータを使うことができる。

eclipse -plugincustomization myCustomDefaults.ini



グローバル初期設定の例

 前述のテクニックと、自分でカスタマイズした「plugin_customization.ini」ファイルに含める値を示すため、初期設定の上書き例をここに示す。

 ここでは、筆者がカスタマイズを行ったときの目的を考えて、これらをまとめて論理的に見ていきたい。「plugin_customization.ini」ファイルは全体をダウンロードすることができる。

・デフォルトで最下部表示のタブを最上部表示にする:
# View tabs at the bottom
org.eclipse.ui.workbench/VIEW_TAB_POSITION=128

・新しいワークスペースで歓迎ページを表示せず、ワークベンチを閉じたときのプロンプトも出さない:
# No welcome dialog at open and no confirm on close
org.eclipse.ui.workbench/WELCOME_DIALOG=false
org.eclipse.ui.workbench/EXIT_PROMPT_ON_CLOSE_LAST_WINDOW=false

・プロンプトや新しいプロジェクトのウィザードが認識するパースペクティブを開く動作を無効にする:
# Never change to perspective required by new project wizard (no prompt)
org.eclipse.ui.workbench/
SWITCH_PERSPECTIVE_ON_PROJECT_CREATION=never

・代替デフォルトテキストフォントを定義する:
# Default text font (leaks into Java editor)
# Note: you have to touch the font page and say OK/Apply (probable bug)
org.eclipse.ui.workbench/org.eclipse.jface.textfont=
1|Lucida Console|9|1|WINDOWS|1|-15|0|0|0|700|0|0|0|0|3|2|1|49|Lucida Console;

メモ
フォント初期設定エントリは特殊で、即座には反映されない。フォントページに行くと上記で定義されたフォントが見え、これらは「OK」もしくは「Apply」を選択すると使えるようになる。 筆者にはJavaテキストフォントのキーを保存して使えるようにすることができなかった。


・Javaエディタタスクのタグをあらかじめもう1つ定義する:
# Add to the default JDT task tags (TODO should probably be left)
org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.taskTags=TODO,Edu-Sol

・「Package」エクスプローラを「Go Into」アクションと同じにするためダブルクリックをデフォルトにする:
# Package Explorer GoInto on Double click
org.eclipse.jdt.ui/packageview.doubleclick=packageview.gointo

 変更するのが初期設定ページで定義されていたオプションでなくても、ある程度のカスタマイズは可能だ。筆者自身がいつも行う一連のUI修正を行ってから書き出された「.epf」の内容をちょっと見ると、JDTに関する一部の判断が初期設定として保存されていることに気付いた。

・この初期設定キーは、デフォルトのUIの動作を変更するために読み込むべき初期設定が存在していることをJDT UIに対して伝えている:
# Tells JDT it does have some prefs to use (forces a read of these values)
org.eclipse.jdt.ui/CustomFiltersActionGroup
.org.eclipse.jdt.ui.PackageExplorer.
TAG_DUMMY_TO_TEST_EXISTENCE=storedViewPreferences

メモ
もし上記のキーが見つからない場合は、次の2つのエントリは処理されない。

・アクティブな「Package」エクスプローラフィルタは初期設定値として保存される。
# Package Explorer filter - standard JDT defaults
+ library filter
org.eclipse.jdt.ui/org.eclipse.jdt.ui
.PackageExplorer.LibraryFilter=true
org.eclipse.jdt.ui/org.eclipse.jdt.ui
.PackageExplorer_patternFilterId_.*=true
org.eclipse.jdt.ui/org.eclipse.jdt.ui
.PackageExplorer.PackageDeclarationFilter=true
org.eclipse.jdt.ui/org.eclipse.jdt.ui
.PackageExplorer_patternFilterId_*$*.class=true
org.eclipse.jdt.ui/org.eclipse.jdt.internal.ui.PackageExplorer
.EmptyInnerPackageFilter=true

・「Outline」ビューには、ビューがアクティブなJDT Javaエディタのコンテンツを表示する際にツリー構造の階層を減らすという表示オプションがある。ホバーヘルプの「Go Into Top Level Type」はこのトグルオプションで表示される。この初期設定エントリはこの判断をコントロールする:
# Outline view GoInto Toggle when using JDT editor
org.eclipse.jdt.ui/GoIntoTopLevelTypeAction.isChecked=true

 新しいデフォルトを特定するための初期設定キーについては、もっといろいろと試し、解説したプロセスを使って結果をチェックしてほしい。その際は、一時的なワークスペースを使うと良いだろう。そして、いろいろ試して満足できたらアクティブなプライマリフィーチャーの「plugin_customization.ini」ファイルを修正する(ただしこのやり方が筆者の案であることは内密に願いたい)。また筆者のように、JDTが使うはずだったフォント用で無視されてしまうキーがほかにも見つかるかもしれない。このエントリが「plugin_customization.ini」ファイル中にあっても初期設定ページは全く変わらないのだ。

まとめ

 フィーチャーはEclipseの縁の下の力持ちだ。Eclipseのコンフィグレーションを管理するための一単位であり、製品へのブランド登録をサポートし、製品がEclipse Platform上にカスタマイズされたソリューションを構築するときの一部であるなど、重要なものだ。フィーチャーを使うことで次のようなことが可能になる。

  • フィーチャーへのブランド登録により、Eclipseベースの製品で作業をする際に利用できるさまざまなファンクションの提供者を識別する
  • 製品へのブランド登録フィーチャーを土台にしてEclipseのカスタマイズをさらに進める
  • プラグイン 開発環境のタスクを自動化する
  • ルートフィーチャー、あるいはほかのユーザーによってインクルードされたもののオプションとして定義されたフィーチャーについて、その有効/無効のステータスを「Install/Update」パースペクティブを使って管理することにより、所定のワークスペースのコンフィグレーションをダイナミックに変更する

 プラグインビルドプロセスの一部を自動化する、あるいは本稿で解説したカスタマイズインストール/リンクファイルビルドアプローチによって自分独自のEclipse環境を改良するようなときはフィーチャーを活用したい。


本記事は「IBM developerWorks」に最初に掲載された「Put Eclipse features to work for you “How to use Eclipse features to customize Eclipse behavior”」 をアットマーク・アイティが翻訳したものです。


2/2  

 INDEX

Eclipseのカスタマイズの勧め(後編)
  Page1
リンクファイルを使ったEclipseインストールの管理
  Page2
自分独自のグローバル初期設定
グローバル初期設定の例

 

Java Solution全記事一覧





Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間