Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Java特有の冗長なコードを簡潔に記述する「Lombok」

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2013/08/20 14:00

 Javaは言語仕様上の制約により、ボイラープレートコード(自明だが省略できないお決まりのコード断片)がいくつかあります。例えば、メンバ変数を読み書きするだけのgetterメソッドやsetterメソッドがこれにあたります。Lombokを使えば、これらJava特有の冗長なコードを、見やすく簡潔なものにすることができます。本記事ではLombokを利用して、ボイラープレートコードをシンプルに記述する方法について解説します。

目次

はじめに

 今やJava開発に必要不可欠となったものの一つに、IDEの存在があります。例えばEclipseではメンバ変数さえ定義すれば、getter/setterの自動生成や、equalsメソッドやhashCodeメソッド、toStringメソッドなどの自動生成などさまざまな場面でコーディングを強力にサポートしてくれます。

 これは大変便利な機能ですが、裏を返せばJavaの言語仕様はボイラープレートコード(決まりきったコード)が豊富に存在することを意味します。つまり、本質的なロジック以外の冗長なコードが多いということであり、決して読みやすいコードとは言えません。

 その後のメンテナンスも考えれば、IDEの自動生成がボイラープレートコードに対する完全な解決策とはなっていないことは確かです。

Lombokとは

 LombokはMITライセンスで作られた、Java特有のボイラープレートコードを解消するためのライブラリです。

 LombokではEclipseのような自動生成ではなく、アノテーションを付与することによりボイラープレートコードを実装したのと同じ効果を得ることができます。

インストール

 Lombokを使った開発は、Javacによる直接コンパイルはもちろんのこと、EclipseやNetBeansなどの開発環境に対応しています。今回はEclipseを利用した開発を説明致します。

  • Project LombokのサイトよりLombok.jarをダウンロードします(2013年8月現在、最新版は0.12.0です)。
  • Lombok.jarをダブルクリックし、インストーラを起動します。
Lombokインストーラー
Lombokインストーラー
  • お使いのIDEチェックし、Install/Updateボタンを押下します。
  • Eclipseを起動し、Lombokを使いたいプロジェクト選択します。
  • プロジェクトの参照ライブラリにLombok.jarを追加します。
ビルドパスへの追加
ビルドパスへの追加

アクセスメソッド

 まずは、2つのメンバ変数をもつ会員クラスを例に挙げます。

 Lombokを利用しない通常のJavaの場合、2つのメンバ変数、idとnameに対する、他のクラスからアクセスためのgetterメソッドやsetterメソッドが必要になるため、下記のようにコードが肥大化しているのが分かります。

会員クラスのコード Lombok未使用版
public class Member {
    private String id;
    private String name;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 五座 淳一(株式会社DTS)(ゴザ ジュンイチ)

    株式会社DTS 金融企画部所属。 主に大規模・金融機関向けシステム開発のアーキテクト担当しています。ウォーターフォール型の開発に、CIなどアジャイル開発のプラクティスを取り入れ、開発プロセスの改善を試みています。 Twitter https://twitter.com/to...

おすすめ記事

All contents copyright © 2006-2016 Shoeisha Co., Ltd. All rights reserved. ver.1.5