トップ OSS紹介 Lombok

Lombok

サポート対象

NRIのOpenStandiaが提供するLombok最新情報

Lombok情報

Lombokとは

Lombok(ロンボック)は、JavaのDTO(Data Transfer Object)のような単調な処理が連続するコードを簡潔に記述するためのJavaライブラリです。アノテーション1つでクラスがDTOとして機能し、getter/setterメソッドやequalsメソッドを書く必要がなくなります。

例えば、以下のようなDTOをLombokを利用して書き直してみましょう。

public public class Author {
private final int id;
private String name;
private String surname;

public Author(int id) {
this.id = id;
}

public int getId() {
return id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSurname() {
return surname;
}

public void setSurname(String surname) {
this.surname = surname;
}

@Override
public int hashCode() {
final int PRIME = 31;
int result = 1;
result = prime * result + getId();
result = prime * result +
((getName() == null) ? 0 : getName().hashCode());
result = prime * result +
((getSurname() == null) ? 0 : getSurname().hashCode());
return result;
}

@Override
public boolean equals(Object o) {
if (o == this) return true;
if (!(o instanceof Author)) return false;
Author other = (Author) o;
if (!other.canEqual((Object)this)) return false;
if (this.getId() == null ? other.getId() != null :
!this.getId().equals(other.getId())) return false;
if (this.getName() == null ? other.getName() != null :
!this.getName().equals(other.getName())) return false;
if (this.getSurname() == null ? other.getSurname() != null :
!this.getSurname().equals(other.getSurname())) return false;
return true;
}
}

50行を超えていたコードを6行で記述することができます。

@Data
public class Author {
private final int id;
private String name;
private String surname;
}

Lombokは、ビルドツールやIDE(統合開発環境)に組み込むことができます。
例えば、MavenでビルドするJavaプロジェクトにLombokを組み込む場合は、以下の依存関係をpom.xmlに記述します。


<dependencies>
・・・
<!-- 以下の依存関係を追加 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>

そしてIDE(ここではIntellij IDEA)にLombokのプラグインをインストールします。

こうすると、フィールド変数の上に「@」を入力すると、Lombokのアノテーションの候補が表示されます。

なお、このプラグインにはDelombokという機能もあり、Lombokで簡略化したコードをgetterやsetterなどのメソッドにも変換する機能もあります。

ユースケース

Lombokを導入することで以下のようなメリットがあります。

  • コードの記述量が減ることで、実装やテストの時間を短縮できる
  • コードが見やすくなる

ただし、以下のようなデメリットもあります。

  • デバッグが難しくなる場合がある

動作環境

Javaが動作する環境であれば、どのような環境でも動作します。

Lombokのライセンス

Lombokのライセンスは、MITライセンスに基づいています。ソースコード公開の有無に関わらず、自由な再利用が認められています。

製品ダウンロード

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Java

    Java

    ジャバ。サンマイクロシステムズ社(2010年にオラクル社に吸収合併)により開発されたプログラミング言語、及びその動作環境である Java VM(ジャバ仮想マシン) です。

オープンソースに関するさまざまな課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。