はじめに
Java のクラスを書くときに、
「getter / setter が多すぎる」
「コンストラクタを書くのが面倒」
「DTO がボイラープレートだらけになる」
そんな悩みを一気に解決してくれるのが
Lombok(ロンボック)
です。
この記事では、Lombok の基本を
やさしく・実務で役立つ形 で整理していきます。
まずはコードを見て、そこから少しずつ理解していきましょう。
まずはコードを確認
Lombok を使わない場合
public class User {
private String name;
private int age;
public User() {}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}Lombok を使う場合
@Data
public class User {
private String name;
private int age;
}このように、
アノテーションを付けるだけで大量のコードを自動生成
してくれるのが Lombok の魅力です。
コードのしくみを解説
Lombok とは
一言でいうと、
「Java のボイラープレートコードを自動生成してくれるライブラリ」
です。
- getter / setter
- equals / hashCode
- toString
- コンストラクタ
- Builder パターン
などを自動で作ってくれます。
どうして便利なのか
理由はシンプルで、
「書かなくていいコードを書かなくて済む」
からです。
コードが短くなり、 読みやすく、 メンテナンスしやすくなります。
よく使う Lombok アノテーション
@Getter / @Setter
@Getter
@Setter
public class User {
private String name;
}getter と setter を自動生成します。
@Data
@Data
public class User {
private String name;
private int age;
}以下をまとめて生成します。
- getter
- setter
- equals
- hashCode
- toString
DTO に最適です。
@NoArgsConstructor / @AllArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String name;
private int age;
}引数なし・全引数ありのコンストラクタを生成します。
@Builder
@Builder
public class User {
private String name;
private int age;
}Builder パターンを自動生成します。
User user = User.builder()
.name("taro")
.age(20)
.build();読みやすく、変更に強いコードになります。
あわせて知っておきたいポイント
Lombok はコンパイル時にコードを生成する
実際の .java ファイルには書かれませんが、
コンパイル時に自動でメソッドが追加されます。
IDE のプラグインが必要
IntelliJ や VSCode では
Lombok プラグインを入れると補完が効きます。
@Data は便利だが使いすぎ注意
- equals / hashCode が自動生成される
- すべてのフィールドに setter が付く
などの理由で、 Entity には @Data を使わないことが多いです。
DTO にはとても相性が良いです。
使うときに気をつけたいこと
Entity に @Data を付けない
予期しない equals / hashCode が生成されるため、
JPA と相性が悪いことがあります。
必要なアノテーションだけ使う
@Data は便利ですが、
@Getter + @Setter のほうが安全な場面もあります。
Builder は不変オブジェクトと相性が良い
setter を使わず、
コンストラクタや Builder で値を固定する設計に向いています。
まとめ
Lombok は、
「Java のボイラープレートコードを自動生成してくれる便利なライブラリ」
です。
- getter / setter を自動生成
- コンストラクタや Builder も簡単
- DTO と相性が良い
- Entity には慎重に使う
難しく聞こえますが、
「書かなくていいコードを減らすための道具」
と理解できれば十分です。

Lombok を使いこなすと、コードが一気にスッキリします。
DTO や設定クラスが読みやすくなり、開発スピードも上がります。
あなたの開発が、今日より少しだけ楽になりますように。

書かなくていいコードをそっと減らしてくれるなんて…Lombok さん、気がきくね。

コメント