uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

Groovy Eclipse Plugin 2.0所感

2.0になって良くなったと言われるGroovy-Eclipse plugin 2.0.0.xxをしばらく使ってました。前バージョンを使ってたわけではありませんので、以下で書いてることは2.0の機能なのか1.0から引き続きなのかは不明。

うれしい点

  • クラスを使用したとき、対応するimport文の生成ができる。最初Ctrl-1(Quick Fix)でできないのでできないのかと思ったら、クラス名直後でCtrl-SPCの補完*1をしてパッケージから選ぶと、それに対応したimport文が自動生成されます(Javaエディタでもそうなのね知らんかった)。import文の面倒を見るのはEmacsとかで編集する祭の苦痛の1つだったからこれはうれしい。[ソース]-[インポートの編成]も可能。
  • テストコードをGroovyでかける。(やりたければ)対象クラスのprivate変数やフィールドにもアクセスできる。Groovyだからね。
  • 定義にジャンプとかもできる。
  • リファクタリングはたいした物は無いが、リネームがあるのはいい!Javaから呼び出しているならGroovy側のリネームと連動するらしいし。良く考えると、個人的にはリネーム以外の他のリファクタリングJavaで多用するでもないし、これで十分かも。eachをforに変換(あるいはその逆)とかもあればいいかもね。
  • メソッド名補完は候補の絞りが甘いような・・。でも、currnetTimeMillisとか「うろ覚えのメソッド名で最初の方がわかっている場合」には有効だ。

つらい点。

  • QuickFix(Ctrl-1)が出ない(厳密には、出るときが全く無いわけじゃないけど、ほとんどでないし出ても有効なものであるケースを見たこと無い)。これは痛いよ。
    • groovy1.7の「もしかしてエラーメッセージ」にしたがって修正候補を出して欲しいものだよ。

場合によってはつらいかもな点

  • EclEmmaでカバレッジを取るときに、Groovyコード自身のカバレッジは値としてはとれているが、Groovyエディタの色で緑・赤とか色が変わらない。つまり、Groovyでテストコードを書くにはいいが、カバレッジ取得対象の試験対象のコードとするには支障がある(どこが通ってないかわからない)。

留意点など

他に、はまった点をいくつか。

  • EclipseMavenとの併用の際に、maven eclipse:eclipseで.classpathファイルを生成したとして、そのなかにGMavenで使用するGroovyのMavenモジュールが含まれているとEclipseで設定したGroovyプラグインと衝突します。当たり前なんだけど。具体的には以下ね。

gmaven関係のは除去しておきましょう。

まとめ

感想として言うと、Javaに最適化されたEclipse環境内では、相対的にGroovy編集機能がちと非力であることは否めない。Emacsで編集してるときにはできなくても気にならなかった機能が、Eclipse中でできないと不満が出てくるのはなぜだろう・・・。人というものの弱さか。

ただ、使い慣れたエディタが別にあるわけではないなら、使って損は無いとは思います。業務だったら使わざるを得ないケースも多々あるでしょうしね。

id:nobeansさんは、「ことEclipse内で編集するに際しては、テストコードだろうと何だろうとJavaで書いた方が効率がいい」とおっしゃってましたが、まあそういう見方もあろうかと思います(私もテストコードの半分ぐらいは結局Javaで書いた)。

次回はSpockとかも使ってみよっと。

*1:私はemacsキーバインディングなのでCtrl-/ですが。