Eclipseのおすすめワークスペース設定

jfluteおすすめの 新しいワークスペース作ったらやっておこう設定 を紹介します。

Preferencesの開き方

ワークスペース設定は、Preferences という名前で設定画面が用意されています。

Preferencesの設定画面は、以下の方法で開くことができます。

Macなら
command+,(カンマ) (メニューの Eclipse - 環境設定... と同じ)
Windowsなら
メニューの Window - Preferences

Eclipse Preferences dialog example

※ただし、ワークスペース設定として扱われても、Preferences以外の画面で設定するものもあります。

補完テンプレートを入れる

Eclipseには、Javaエディター上のコード補完をカスタマイズする機能が備わっています。

e.g. 標準のifnullの補完テンプレート @Java
String sea = ...
ifnu... // control+space, enter
 ↓↓↓
if (sea == null) {
    
}

スムーズな実装のためにDBFluteオリジナルの補完テンプレートを提供しています。 DBFlute実装だけじゃなく純粋にJava実装のためのテンプレートも用意されているので、ぜひ活用しましょう。

e.g. DBFluteオリジナルの_llの補完テンプレート、Lambda式の入力支援 _ll (あんすこえるえる) @Java
memberBhv.selectList(_ll) // control+space, enter
 ↓↓↓
memberBhv.selectList([var] -> {
    [var].[object]
})

補完テンプレートファイルの準備

「こちらのDBFluteの補完テンプレートを入れてください」と明示的に指定されている場合は、そちらの補完テンプレートファイルを使いましょう。 例えば、LastaFluteのプロジェクトなら補完テンプレートファイルがアプリ内に置いてあります。(その開発プロジェクトで独自に拡張されているかもしれませんので)

そういった指定が特にない...もしくは「よくわからない」なら、以下からテンプレートファイルをダウンロードして、Importのまるごと入れ替え方式で設定しましょう。

whole-eclipse-editor-templates.zip

Importのまるごと入れ替え方式での設定

まず、メニューの Preferences の Java - Editor - Templates で設定画面を開きます。

Eclipse EditorTemplates Settings Example

既存のテンプレートを何か一つ選択して、(Macなら)command+A で全選択します(全選択できればやり方は何でもOK)。 そして、全選択した状態で Remove を押すと既存のテンプレートがすべて消えるので、その状態で Import... を押して、ファイル選択ダイアログでimport対象のxmlファイルを選択します。

Eclipse EditorTemplates Settings Import Whole

期待されているテンプレートが設定されたことを確認して Apply すれば完了です。試しに近くのクラスで補完をしてみましょう。

入れ替え方式なので、最新版の補完テンプレートに更新する場合も手順は同じです。

使わないクラスをコード補完から除外する

コード補完時に、java.util.List を補完しようとしてるのに毎度毎度 "java.awt.Listとどっちを選ぶ?" と聞かれたりします。特に多くのライブラリを使っているとたくさん選択肢が出てきて思考の妨げにもなります。 Type Filters で使わないクラスを設定して補完ノイズを減らしましょう。

Preferences の Java - Appearance - Type Filters を選択。

Add を押して、クラス型の補完で "表示させたくない" パッケージやクラスを指定します。

Eclipse TypeFilters Settings Add

とりあえず以下を設定しておくだけでも、だいぶノイズが減りますので入れておきましょう。

java.awt.*
awtパッケージを使うことは今の開発ではまずない
com.sun.*
sunパッケージのクラスを使うことはほとんどない
sun.*
sunパッケージが意外と紛らわしい!?
java.lang.StringBuffer
文字列連結を同期化する必要性はほぼなく、StringBuilderで十分
java.sql.Date
業務のプログラムでjava.sql.Dateを使うことはまずない

.(ドット)始まりのファイルの表示

.project や .settingsディレクトリなどは、デフォルトではPackage Explorer上に表示されません。 ですが、それらは開発者にとって重要なファイルでもありますので、常に表示すると良いでしょう。

e.g. .(ドット)始まりのファイルたち @Java
PROJECT_ROOT
 |-src/main/java
 |-src/main/resources
 |-...
 |-.settings // これらがデフォルトでは表示されない...けど大事
 |-.gitignore // .gitignoreなんかは時々手で修正することもある
 |-.project

まず、Package Explorerの右上の「白下三角」のマークをクリックしてメニューを出して、Filters... を選択します。 (Eclipseのバージョンによっては、マークが縦の点点点になっているかもです)

Eclipse ClosetFile settings filters

Java Element Filtersダイアログが表示されるので、「*. resources」のチェックを外します。隠すのを止める (フィルターを止める) ということです。

Eclipse ClosetFile settings remove dotfilter

メソッド補完は引数名の列挙で

メソッドを補完したとき、メソッド引数部分の表現に2つ選択肢があります。

推測値の自動指定
"型が同じ変数" や "戻り値の型が同じメソッド" が自動的に指定される ↓
e.g. 推測値の自動指定 @Java
sea.han // ここでhangar(Integer, String, AnyBean)を補完すると...
 ↓↓↓
// 型が同じ変数、戻り値の型が同じメソッド、一致するものがなければnull
sea.hangar(showbaseNumber, getXxxString(), null);

引数名の列挙
単純にメソッドの引数名が列挙される ↓
e.g. 引数名の列挙 @Java
sea.han // ここでhangar(Integer, String, AnyBean)を補完すると...
 ↓↓↓
// シンプルに引数名が列挙される
sea.hangar(stageNumber, areaName, anyBean);

デフォルトでは推測値の自動指定になっています。 型ですべて解決するような実装スタイルなら良いですが、やはりStringやIntegerなどが混ざる世界で推測されると誤った引数指定を起こしがちです。 (実際のレビューで、本人の意図していない変数指定やメソッド呼び出しなどのミスをよく見かけます。危ない...)

引数名が列挙される方が間違いが少なく、引数仕様をその場で理解できるのでオススメです。

Preferences の Java - Editor - Content Assist にて、Insert parameter names の方を選択しましょう。

Eclipse ContentAssist settings insert-parameter-names

※ただ、推測値を管理できていて好きな方は別にそのままで

パッケージの見た目を階層構造へ

Package Explorer上のパッケージ表現がデフォルトでフラットになりますが、特に大きなプロジェクトになると細かいパッケージがズラッとたくさん並んでしまい、逆に探しづらくなってしまいます。

特にDBFluteを使っている場合は自動生成クラスがたくさんのパッケージを使っているので、階層構造に変更すると良いでしょう。

Eclipse PackagePresentation flat to hierarchical

Package Explorerの右上の「白下三角」のマークをクリックしてメニュー (View Menu) を出して... (Eclipseのバージョンによっては、マークが縦の点点点になっているかもです)

Package Presentation の Hierarchical を選択します。

Eclipse PackagePresentation settings hierarchical

※ただ、フラットに慣れていて好きな方は別にそのままで

Find/Replace は Case sensitive, Incremental に

command+F の Find/Replace (開いているファイルのテキストを検索) は、デフォルトでは大文字小文字を区別しません。 Javaなど大文字小文字を区別するプログラミング言語を扱っている場合、大文字小文字を意識して検索・置換したいことが多いので、Case sensitive にチェックを付けておくと良いでしょう。 (特に、文字列置換に関しては、大文字小文字で事故も起きやすいので気を付けましょう)

Eclipse FindReplace settings case-sensitive

また、Incremental にチェックを付けておくと、検索文字列を入力しながら検索できると打ち間違いとかもすぐにわかるので便利です。

Eclipse FindReplace settings incremental

コンソールのバッファサイズをデカく

開発中はアプリのログを主にコンソールで見ることになるでしょう。

「動きがおかしい、ログを見よう、もっと前の操作でどんな挙動してたか?エラーや警告とか出てなかったか?スクロールして上の方に.....もう切れちゃってるー(><」

コンソールに表示される文字量の限界が、意外にデフォルトだと少ないです(メモリ対策?)。切れて見えないのでは全く意味がないので、デカくしましょう。

Preferences の Run/Debug - Console にて、Console buffer size に 0 (ぜろ) を一つ追加しましょう。 (8万を80万に)

Eclipse Console settings buffer-size large

リミットがあるようなので、まあ80万くらいで十分です。(雑に決めてます)

fast view使ってコードの縦表示を長く

デフォルトだと、Problemsなどの View が下に配置されていて、コードエリアが短くなっています。プログラムは縦に積み重なっていくものなので、できるだけ縦の領域を稼ぎたいです。 なので、Fast View を使うと良いでしょう。

Eclipse ViewLocation short code-area so fast-view

Viewは必要なときに登場しますし、見たいViewのアイコンをクリックすればいつでも見られます。

Eclipse ViewLocation long code-area by fast-view

このような感じでViewの配置は簡単にカスタマイズできます。

エディターの背景色を設定して気持ちよく

好きな色で実装するのが一番です。

Preferences の General - Editors - Text Editors にて、background color を選択して Color を指定しましょう。

Eclipse TextEditor settings background-color

※文字が見えづらくならない色にしましょう。

これ毎回やるのか?

って思いますよね。ぜひやってください。 まあワークスペースを新しく作るのって年に何度もあるようなものでもないので、そのときこのページを思い出して頂ければと。

ちなみに、jfluteはMacBook内にEclipseのワークスペースが二桁を超えるほどあります。 結構な頻度で新規ワークスペース作るので、みなさんに「やってください」と言いつつ自分でやるのはちょっとしんどいなと...m(_ _)m

本ページに書いてあることだけじゃなく、Keys設定とかもっともっとたくさんあるんです。

一応、Preferences の Export の機能があります。Packaeg Explorer上の適当ところで右クリック Export... で選択できます。ただ、出力範囲が決まっているようで(?)、本当に隅々まで引き継げるかどうかはわかりません。 (あまり検証していません)

なので、ちょっと裏技をやっています。

  1. cp -R [既存workspace]/.metadata [新規workspace]/.metadata
  2. 新規workspaceでEclipseを起動
  3. (この時点では、起動workspaceは新規でも、プロジェクトが既存workspaceのものを参照している)
  4. Package Explorer上のプロジェクトをすべて論理削除 (物理削除だと既存側が削除されちゃう)
  5. Preferences の Team - Git の Default repository folder を新規workspaceに変更
  6. エディター背景色も引き継がれるので見分けるために変える
  7. これで完全に引き継ぎOK (のはず)

操作を一つ間違えると既存workspaceが壊れて大混乱するので真似しないでください。