Lombokについて | パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

今日はLombokについて紹介したいと思います。

最近ブログでちょくちょくJava使いの間で「Lombok」という言葉を耳にするのですが、ご存知でしょうか?

LombokはJavaBeanなどでよく見られるsetter/getterなどの冗長なコードをアノテーションによって書かなくて済むようにしてくれる便利なライブラリなんです。


例えば良くある下記の使い方。

package sample.lili;

public class SampleData {

private String data;
}

このdataのアクセサーを作るには、Eclipseなら

$ソフトウエア開発(android・iphone・windows・java等)の事なら株式会社パークにお任せください_パク太郎のソフトウエア開発者ブログ-lombok01


上記のように「フィールドのカプセル化」なんてやってアクセサーを作ると思います。

そうすると下記のようなおなじみのコードが出来上がるわけです。

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」です)

ソフトウエア開発(android・iphone・windows・java等)の事なら株式会社パークにお任せください_パク太郎のソフトウエア開発者ブログ-lombok02

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

ソフトウエア開発(android・iphone・windows・java等)の事なら株式会社パークにお任せください_パク太郎のソフトウエア開発者ブログ-lombok03

指定してあげて…

ソフトウエア開発(android・iphone・windows・java等)の事なら株式会社パークにお任せください_パク太郎のソフトウエア開発者ブログ-lombok04

無事インストールできました。

⑤そして、プロジェクトのビルドパスに「lombok.jar」を指定してください。

ソフトウエア開発(android・iphone・windows・java等)の事なら株式会社パークにお任せください_パク太郎のソフトウエア開発者ブログ-lombok05


■使い方
先ほどのクラスに「@Data」のアノテーションをつけるだけ。


package sample.lili;

import lombok.Data;

@Data
public class SampleData {

private String param;
}

すると、アウトラインにgetter/setter,hashCode(),toString()といったメソッドが自動生成されました。

ソフトウエア開発(android・iphone・windows・java等)の事なら株式会社パークにお任せください_パク太郎のソフトウエア開発者ブログ-lombok06


ここで、使用したのは「@Data」アノテーションですが用途によって絞ることも可能です。

getterのみを作成したい:@Getter
setterのみを作成したい:@Setter
equals(),canEqual(),hashCode()のみ:@EqualsAndHashCode
値取得関連(getter,equals(),toString()など):@Value

実態はコンパイル時にメソッドが生成されるようですが、「スコープがpublicになってしまう」のが少しだけ気になりましたが、アクセサーとしての余計なコードを書く手間が省けるというのは良さそうです。

ただし、Eclipse以外の環境では不安定な動作をすることもあるらしいので、今後に期待といったところでしょうか。
(Play FrameworkやIntelliJ向けも一応あるようです)