最近ブログでちょくちょくJava使いの間で「Lombok」という言葉を耳にするのですが、ご存知でしょうか?
LombokはJavaBeanなどでよく見られるsetter/getterなどの冗長なコードをアノテーションによって書かなくて済むようにしてくれる便利なライブラリなんです。
例えば良くある下記の使い方。
package sample.lili;
public class SampleData {
private String data;
}
このdataのアクセサーを作るには、Eclipseなら

上記のように「フィールドのカプセル化」なんてやってアクセサーを作ると思います。
そうすると下記のようなおなじみのコードが出来上がるわけです。
package sample.lili;
public class SampleData {
private String data;
public void setData(String data) {
this.data = data;
}
public String getData() {
return data;
}
}
お決まりと言えば、お決まりですが、ちょっと冗長ですよね。。
しかし、Lombokを使えばもっと簡潔に書けちゃいます。
■Lombokを使うには?
簡単です。
①http://projectlombok.org/ へアクセスしましょう
②するとトップに「Download!」とあるのでダウンロードしてきてください。(バージョンは8/30時点では「0.12.0」です)

③実行可能jarとしてダウンロードされるので、ダブルクリックで実行してください。
④通常は、インストールされているIDEが表示されるのですが、私の場合All in One の Eclipseを入れていたせいか、見つからなかったようです。

指定してあげて…

無事インストールできました。
⑤そして、プロジェクトのビルドパスに「lombok.jar」を指定してください。

■使い方
先ほどのクラスに「@Data」のアノテーションをつけるだけ。
package sample.lili;
import lombok.Data;
@Data
public class SampleData {
private String param;
}
すると、アウトラインにgetter/setter,hashCode(),toString()といったメソッドが自動生成されました。

ここで、使用したのは「@Data」アノテーションですが用途によって絞ることも可能です。
getterのみを作成したい:@Getter
setterのみを作成したい:@Setter
equals(),canEqual(),hashCode()のみ:@EqualsAndHashCode
値取得関連(getter,equals(),toString()など):@Value
実態はコンパイル時にメソッドが生成されるようですが、「スコープがpublicになってしまう」のが少しだけ気になりましたが、アクセサーとしての余計なコードを書く手間が省けるというのは良さそうです。
ただし、Eclipse以外の環境では不安定な動作をすることもあるらしいので、今後に期待といったところでしょうか。
(Play FrameworkやIntelliJ向けも一応あるようです)