Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
アジェンダ
 はじめに
 Javaの冗長コード
 Lombokを使った冗長コードの排除
 Lombokを使ってBuilderを追加
 Maven依存関係
 IntelliJのPlugin
 まとめ
はじめに
 ここでは、Javaの冗長コードを排除するLombokを説明する
https://projectlombok.org/
Javaの冗長コード
 Javaの昔から抱える問題に「冗長コード」がある。
たとえば、以下のようなフィールドがあったとする。
/** productテーブルのEntity */
public class Product {
/** 商品コード...
Javaの冗長コード (1つ目)
 フィールドはprivate宣言が原則なので、
そのフィールドにアクセスするsetter/getterを書くのが冗長。
/** productテーブルのEntity */
public class Produ...
Javaの冗長コード (2つ目)
 コンストラクタを書くのが冗長。
/** productテーブルのEntity */
public class Product {
/** 商品コード */
private Integer productCo...
Javaの冗長コード (3つ目)
 クラスの文字列表現を返すtoStringメソッドを書くのが冗長。
/** productテーブルのEntity */
public class Product {
/** 商品コード */
private ...
Javaの冗長コード (4つ目)
 各フィールドが等価かを返すequalsメソッドを書くのが冗長。
/** productテーブルのEntity */
public class Product {
/** 商品コード */
private I...
Javaの冗長コード (5つ目)
 各フィールドの値に応じたハッシュ値を返す
hashCodeメソッドを書くのが冗長。
/** productテーブルのEntity */
public class Product {
/** 商品コード */...
Lombokを使った冗長コードの排除
 これら冗長コードを、Lombokを使って排除する。
/** productテーブルのEntity */
public class Product {
/** 商品コード */
private Integ...
Lombokを使った冗長コードの排除
 getter/setter、toString、
equals、hashCodeメソッドの追加
/** productテーブルのEntity */
@Data
public class Product {...
Lombokを使った冗長コードの排除
 デフォルトコンストラクタの追加
/** productテーブルのEntity */
@Data
@NoArgsConstructor
public class Product {
/** 商品コード *...
Lombokを使った冗長コードの排除
 フィールド初期化用コンストラクタの追加
/** productテーブルのEntity */
@Data
@NoArgsConstructor
@AllArgsConstructor
public cla...
Lombokを使った冗長コードの排除
 以上
/** productテーブルのEntity */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Product {
/** ...
Lombokを使ってBuilderを追加
 Bulderを追加する。
/** productテーブルのEntity */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public...
Lombokを使ってBuilderを追加
 Bulderを使う。
Product product = Product.builder()
.productCode(1)
.productName(“ガム”)
.build(); 任意のフィール...
Maven依存関係
 Maven依存関係に下記を追加する。
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifa...
IntelliJのPlugin
 IntelliJのPluginを追加する。
設定画面を開いて
「Plugins」を選択 キーワードに
「lombok」を入力
リストに出ない場合は
「Browse」をクリック
IntelliJのPlugin
 IntelliJのPluginを追加する。
「Lombok Plugin」を選択
ダウンロードと
インストールをする
IntelliJのPlugin
 IntelliJのPluginを追加する。
IntelliJを
再起動して完了
まとめ
 Lombokを使って定型的なコードをなるべく排除し、
それで浮いた時間を使って本来やるべき実装に集中しましょう。
Lombokのススメ
Upcoming SlideShare
Loading in …5
×

Lombokのススメ

780 views

Published on

Lombokの簡単な使い方

Published in: Technology
  • DOWNLOAD THI5 BOOKS 1NTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THI5 BOOKS 1NTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Lombokのススメ

  1. 1. アジェンダ  はじめに  Javaの冗長コード  Lombokを使った冗長コードの排除  Lombokを使ってBuilderを追加  Maven依存関係  IntelliJのPlugin  まとめ
  2. 2. はじめに  ここでは、Javaの冗長コードを排除するLombokを説明する https://projectlombok.org/
  3. 3. Javaの冗長コード  Javaの昔から抱える問題に「冗長コード」がある。 たとえば、以下のようなフィールドがあったとする。 /** productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; } フィールド宣言はprivateが原則
  4. 4. Javaの冗長コード (1つ目)  フィールドはprivate宣言が原則なので、 そのフィールドにアクセスするsetter/getterを書くのが冗長。 /** productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** 商品コードの取得 */ public Integer getProductCode() { return productCode } /** 商品コードの設定 */ public void setProductCode(Integer productCode ) { this.productCode = productCode } } フィールドごとに setter/getterを書く
  5. 5. Javaの冗長コード (2つ目)  コンストラクタを書くのが冗長。 /** productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** デフォルトコンストラクタ */ public Product() { } /** フィールド初期化をするコンストラクタ */ public Product(Integer productCode, String productName) { this.productCode = productCode; this.productName = productName; } } デフォルトコンストラクタ以外に、 フィールド初期化用コンストラクタを書く
  6. 6. Javaの冗長コード (3つ目)  クラスの文字列表現を返すtoStringメソッドを書くのが冗長。 /** productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** クラスの文字列表現 */ public String toString() { StringBuilder sb = new StringBuilder(); sb.append(“productCode:”).append(productCode); sb.append(“ productName:”).append(productName); return sb.toString(); } } フィールドの内容を 文字列にして返却する
  7. 7. Javaの冗長コード (4つ目)  各フィールドが等価かを返すequalsメソッドを書くのが冗長。 /** productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** 等価かを返す */ public boolean equals(Object o) { if (!(o instanceof Product)) { return false; } Product p = (Product)o; if ((this.productCode != null && p.productCode == null) || (this.productCode == null && p.productCode != null) || ・・・ 以下略 同じクラスかのチェック フィールド1つずつ、 nullチェック、値チェックをする
  8. 8. Javaの冗長コード (5つ目)  各フィールドの値に応じたハッシュ値を返す hashCodeメソッドを書くのが冗長。 /** productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** ハッシュ価を返す */ public int hashCode() { ・・・ 以下略
  9. 9. Lombokを使った冗長コードの排除  これら冗長コードを、Lombokを使って排除する。 /** productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; }
  10. 10. Lombokを使った冗長コードの排除  getter/setter、toString、 equals、hashCodeメソッドの追加 /** productテーブルのEntity */ @Data public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; } @Dataアノテーションを付ける
  11. 11. Lombokを使った冗長コードの排除  デフォルトコンストラクタの追加 /** productテーブルのEntity */ @Data @NoArgsConstructor public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; } @NoArgsConstructor アノテーションを付ける
  12. 12. Lombokを使った冗長コードの排除  フィールド初期化用コンストラクタの追加 /** productテーブルのEntity */ @Data @NoArgsConstructor @AllArgsConstructor public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; } @ AllArgsConstructor アノテーションを付ける
  13. 13. Lombokを使った冗長コードの排除  以上 /** productテーブルのEntity */ @Data @NoArgsConstructor @AllArgsConstructor public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; }
  14. 14. Lombokを使ってBuilderを追加  Bulderを追加する。 /** productテーブルのEntity */ @Data @NoArgsConstructor @AllArgsConstructor @Builder public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; }
  15. 15. Lombokを使ってBuilderを追加  Bulderを使う。 Product product = Product.builder() .productCode(1) .productName(“ガム”) .build(); 任意のフィールドのみを初期化した インスタンスを作成できる
  16. 16. Maven依存関係  Maven依存関係に下記を追加する。 <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.14.0</version> <scope>provided</scope> </dependency> </dependencies>
  17. 17. IntelliJのPlugin  IntelliJのPluginを追加する。 設定画面を開いて 「Plugins」を選択 キーワードに 「lombok」を入力 リストに出ない場合は 「Browse」をクリック
  18. 18. IntelliJのPlugin  IntelliJのPluginを追加する。 「Lombok Plugin」を選択 ダウンロードと インストールをする
  19. 19. IntelliJのPlugin  IntelliJのPluginを追加する。 IntelliJを 再起動して完了
  20. 20. まとめ  Lombokを使って定型的なコードをなるべく排除し、 それで浮いた時間を使って本来やるべき実装に集中しましょう。

×