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.

Lombok ハンズオン

1,265 views

Published on

Java Doでしょう #02(10/04 札幌)
http://javado.connpass.com/event/20011/

Published in: Engineering
  • DOWNLOAD THAT BOOKS/FILE INTO AVAILABLE FORMAT - (Unlimited) ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes Christian, Classics, Comics, Contemporary, Cookbooks, Art, Biography, Business, Chick Lit, Children's, Manga, Memoir, Music, Science, Science Fiction, Self Help, History, Horror, Humor And Comedy, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THAT BOOKS/FILE INTO AVAILABLE FORMAT - (Unlimited) ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes Christian, Classics, Comics, Contemporary, Cookbooks, Art, Biography, Business, Chick Lit, Children's, Manga, Memoir, Music, Science, Science Fiction, Self Help, History, Horror, Humor And Comedy, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance,
       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
  • 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 THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. 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. Lombok ハンズオン 

  2. 2. gishi_yama 千歳市の大学で情報システムの研究開発に従事してます
 eラーニングシステムとか、地域の行政情報ポータルとか… Apache Wicketのドキュメント翻訳
 札幌のJava エンジニアコミュニティ(Java Do) おいしいもの大好きです などをやってます
  3. 3. 今日の内容 3
  4. 4. “Project Lombok makes java a spicier language by adding 'handlers' that know how to build and compile simple, boilerplate-free, not- quite-java code.” Project Lombok 4 https://github.com/rzwitserloot/lombok LombokはJavaに’ハンドラ’を追加することで、Javaを気の利いた 言語にするよ! ハンドラは ・シンプルで ・ボイラープレート(おきまりの書き方)をまぬがれる ・Javaっぽくない コードにするビルドやコンパイルの方法を把握しているものだよ!
  5. 5. public  class  Cat  {      private  static  final  Logger  log  =  LoggerFactory.getLogger(Cat.class);      private  String  name;      private  String  voice;      private  int  age;      public  Cat()  {          this(null,  null,  0);      }    public  Cat(String  name,  String  voice,  int  age)  {          this.name  =  name;          this.voice  =  voice;          this.age  =  age;      }      public  void  setName(String  name)  {          this.name  =  name;    }    public  String  getName()  {        return  name;    }   //  以下略… 毎回作成する おきまりのコード (ボイラープレート) IDEである程度生成できるものもあるが、面倒なこともあるよ
  6. 6. たとえば • Getter/Setter • equals, hashcode • デフォルト/引数付き 
 コンストラクタ • ToString • null check • Builderパターン • Logger • 変数定義 • Immutable Object • 遅延初期化 • etc… Lombokはこういったものをアノテーションで省略・設定するよ
  7. 7. つまり、Lombokを使うと… 定型コードが増えがちな部分
 (データ・バリューオブジェクトやデザインパターン)
 の記載をアノテーションで簡略化できるよ 2009年から公開されており、
 日本語の情報もかなり充実しているよ もし会場で使っている方がいればノウハウとか
 使ってる感をどしどし共有してほしいよ 7
  8. 8. Lombokのしくみ 8
  9. 9. public  class  Cat  {      private  String  name;      public  void  setName(String  name)  {          this.name  =  name;      }      public  String  getName()  {          return  name;      }   } import  lombok.Getter;   import  lombok.Setter;   @Getter   @Setter   public  class  Cat  {      //  アノテーションをつけるとgetName(),  setName(String  name)  が実装される      private  String  name;   } Lombokを使うと…
  10. 10. 10 

  11. 11. ハンズオン 12
  12. 12. 進め方 13 src/main/java/javado/handsOn/vanilla 
 の各クラスを開き、指示通りに書きかえていく
 (現状のLombokアノテーションをおおむね網羅しています) src/main/java/javado/handsOn/useLombok 
 のクラスが模範解答的なコード src/main/java/sample は、
 実際に使うと…感の参考にしてください
  13. 13. 60分なので いくつか抜粋して ハンズオンします! 14
  14. 14. 1. Getter/Setter (HandsOn01) 15
  15. 15. この他、Getterのスレッドセーフな遅延初期化Getterなども可能
 (例:HandsOn14) Getter/Setterが作成され利用できる!
  16. 16. 2. Nullチェック (HandsOn02a) 17
  17. 17. この他、パラメータのnullチェックも可能(例:HandsOn02b) Setterでnullチェック!
  18. 18. 3. Log (HandsOn03) 19
  19. 19. logのクラス変数が暗黙的に作成される!
  20. 20. 対応するLoggerの種類 • @CommonsLog
 org.apache.commons.logging.Log • @Log
 java.util.logging.Logger • @Log4j
 org.apache.log4j.Logger • @Log4j2
 org.apache.logging.log4j.Logger • @Slf4j
 org.slf4j.Logger • @XSlf4j
 org.slf4j.ext.XLogger 21 すべて、private static final な
 クラス変数として初期化される
  21. 21. 4. コンストラクタ (HandsOn04a) 22
  22. 22. この他、final(@NonNull)なフィールドのための引数つきコンス トラクタや、デフォルトコンストラクタ、ファクトリメソッドも 作成可能(例:HandsOn04b, HandsOn05) フィールドの引数つきコンストラクタが 暗黙的に作成される!
  23. 23. 5. toString (HandsOn06) 24
  24. 24. [main] INFO javado.handsOn.useLombok.HandsOn06 - HandsOn06(name=JavaDo, state=札幌) toString()がフィールドの状態を文字列で返す
  25. 25. 6. equals/hashCode (HandsOn07) 26
  26. 26. オブジェクトが値一致で比較できる (equals, hashCodeの中身が作成される)
  27. 27. 7. FieldDefaults (HandsOn08) 28
  28. 28. アクセス修飾子が無いけれども private, final!
  29. 29. 8. Value, Data (HandsOn10, HandsOn11) 30
  30. 30. @Value • バリューオブジェクト用のLombokアノテーションをまとめて付与
 ToString
 EqualsAndHashCode
 AllArgsConstructor
 FieldDefaults(makeFinal = true, level = PRIVATE)
 Getter 31
  31. 31. @Data • データオブジェクト用のLombokアノテーションをまとめて付与
 ToString
 EqualsAndHashCode
 RequiredArgsConstructor
 Getter
 Setter 32
  32. 32. 9. finalなローカル変数 val (HandsOn12) 33
  33. 33. 変数が参照するオブジェクト型で finalなローカル変数を作成! (TypeScriptのvalと同じ)
 下の場合、jugsの型はList<HandsOn12>
  34. 34. 10. Builderパターン (HandsOn16) 35
  35. 35. @Builderをつけるだけで Builderパターンを実装可能! @SingularはCollection変数を
 1個ずつ追加できるようにする
  36. 36. そのほか 37
  37. 37. •@UtilityClass
 インスタンス化の抑制(HandsOn18) •@Cleanup
 Closableなオブジェクトの自動close(HandsOn22) •@Synchronized
 並列処理用のsynchronizedブロック作成(HandsOn23) •@With
 immutableオブジェクト用のwithメソッド作成(HandsOn13) •@Accessors
 getter/setterのメソッドチェーン化、Fluentインターフェース 的な名称設定(HandsOn11) 38
  38. 38. ところで 39
  39. 39. Lombokを 黒魔術という人も多い…… 40
  40. 40. 個人的に黒魔術感が強いと思うもの 41 • @ExtensionMethod
 変数の型をキーにしたstaticメソッドの変数への結合(HandsOn21) • @Delegate
 メソッド処理のフィールドオブジェクトへの委譲(HandsOn17) • @SneakyThrows
 チェック例外の非チェック例外化(HandsOn15) • @Helper
 ヘルパークラスのインスタンス化省略(HandsOn19) • onHoge=@__(@Piyo)
 アノテーションの付与(HandsOn20)

  41. 41. 激辛より 中辛・辛口あたりで 制御して使った方が オイシイ! 42
  42. 42. 備考 43 • Lombokアノテーションで生成されるコードと
 実際にプログラムされたコードが被ったときは、
 原則、プログラムされたコードが優先される • lombok.experimental パッケージに存在するものは、 公式見解にはテスト版(使えないわけではない) • IDEとかみ合わせが悪い部分はどうしてもある
 (valが特にトラブる感)
  43. 43. まとめ Lombokを利用することで、Javaのボイラープレートなコード の簡略化(コード量の減少、記法統一によるミスの軽減)を狙 える。 Beanなどのデータオブジェクトや、バリューオブジェクトの生 成、デザインパターンの実装に効果を発揮しやすい。 IDEとの相性問題、一括変換機能などとのトレードオフは必要。 安定して使えるアノテーションからの導入がオススメ。
 黒魔術的な所や、混乱しそうな所は無理せずに。 44
  44. 44. 次回予告 Spring Boot本とか JUnit実践入門本とか
 教科書にした ハンズオンとか…? 45

×