Lombok の使い方
Java を使った開発では、便利な機能を提供しているライブラリを必要に応じて使用します。 よく使われるライブラリとして、Java のボイラープレートコードを減少させることを目的とした Lombok があります。
このレクチャーでは、Lombok の基本的な使い方や、Spring Bootプロジェクトでの導入方法、主要なアノテーションについて解説します。 Lombok を使って Java 開発や Spring 開発の効率を上げましょう。
目次
Lombok とは
Lombok は冗長なコードを大幅に削減することを目的とした Java のライブラリです。 getter、setter、コンストラクタ、equals、hashCode といったメソッドをアノテーションのみで自動生成できます。
Lombok のメリット
Lombok を使うことで、以下のようなメリットがあります:
- コード量の削減: 手動で getter や setter を書く必要がなくなり、書かなければいけないコードの量が減ります
- コードの可読性向上: ボイラープレートコードが減ることで、意味のあるコードだけが記述され、重要なロジックがより明確に伝わるようになります
- 保守性の向上: 人間が手動でコードを書く必要がなくなり、バグが混入するリスクが低下します
Lombok を Spring Boot プロジェクトで使うための設定
Gradle でプロジェクトを管理している場合、Lombok を使用するには以下の設定が必要です。
依存関係の追加
build.gradle
に Lombok の依存関係を追加します。
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
IDE の設定
IDE に Lombok プラグインをインストールします。 IntelliJ IDEA では、プラグインセクションから Lombok を検索してインストールします。
IntelliJ では、Settings > Build, Execution, Deployment > Compiler > Annotation Processors で、Annotation Processing を有効にします。
使い方 ①:コンストラクタを生成するアノテーション
Lombok には、クラスに付与することによってコンストラクタを自動生成するアノテーションがあります。 アノテーションによって、生成するコンストラクタが以下のように異なります:
@NoArgsConstructor
: 引数なしのコンストラクタを生成します@AllArgsConstructor
: すべてのフィールドを引数に持つコンストラクタを生成します@RequiredArgsConstructor
:final
または@NonNull
で宣言されたフィールドのみを引数に持つコンストラクタを生成します
ここからは、Spring 開発で頻繁に使用する @RequiredArgsConstructor
について詳細を見ていきましょう。
このアノテーションは final
または @NotNull
で宣言されたフィールドのみを引数に持つコンストラクタを生成します。
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class ExampleClass {
private final String requiredField;
private String nonFinalField;
// 以下のコンストラクタが自動で生成されます。
// public ExampleClass(String requiredField) {
// this.requiredField = requiredField;
// }
}
Spring では、このアノテーションをコンストラクタインジェクションを実現するために使用します。
使い方 ②:クラスのボイラープレートコードを削減するアノテーション
クラスに @Data
や @Value
アノテーションを付与することで、ほとんどのクラスに対して用意しなければいけないコードを自動生成できます。
@Data
アノテーション
イミュータブルオブジェクトとして設計されたクラスに付与します。
@Data
アノテーションを付与すると、以下のコードが自動で生成されます。
toString
hashCode
/equals
- getter / setter
@Value
アノテーション
イミュータブルオブジェクトとして設計されたクラスに付与します。
@Value
アノテーションを付与すると、以下のコードが自動で生成されます。
@Data
アノテーションと比べると、setter が生成されないことが特徴です。
toString
hashCode
/equals
- getter
@Value
public class ImmutableExample {
String name;
int age;
// getter, equals, hashCode, toString が自動で生成されます。
}
まとめ:Lombok でコードを簡潔に
Lombok は Javaの開発をよりシンプルにし、生産性を向上させる強力なツールです。 適切なアノテーションを使い分けることで、効率的で品質の高いコードを実現できます。
人間の手で書くコードが減ると不具合が混入するリスクが減ります。 積極的に活用して、不具合の少ないコードを書いていきましょう。