SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
Lombok ハンズオン


gishi_yama
千歳市の大学で情報システムの研究開発に従事してます

eラーニングシステムとか、地域の行政情報ポータルとか…
Apache Wicketのドキュメント翻訳

札幌のJava エンジニアコミュニティ(Java Do)
おいしいもの大好きです
などをやってます
今日の内容
3
“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っぽくない
コードにするビルドやコンパイルの方法を把握しているものだよ!
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である程度生成できるものもあるが、面倒なこともあるよ
たとえば
• Getter/Setter
• equals, hashcode
• デフォルト/引数付き 

コンストラクタ
• ToString
• null check
• Builderパターン
• Logger
• 変数定義
• Immutable Object
• 遅延初期化
• etc…
Lombokはこういったものをアノテーションで省略・設定するよ
つまり、Lombokを使うと…
定型コードが増えがちな部分

(データ・バリューオブジェクトやデザインパターン)

の記載をアノテーションで簡略化できるよ
2009年から公開されており、

日本語の情報もかなり充実しているよ
もし会場で使っている方がいればノウハウとか

使ってる感をどしどし共有してほしいよ
7
Lombokのしくみ
8
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


ハンズオン
12
進め方
13
src/main/java/javado/handsOn/vanilla 

の各クラスを開き、指示通りに書きかえていく

(現状のLombokアノテーションをおおむね網羅しています)
src/main/java/javado/handsOn/useLombok 

のクラスが模範解答的なコード
src/main/java/sample は、

実際に使うと…感の参考にしてください
60分なので
いくつか抜粋して
ハンズオンします!
14
1. Getter/Setter
(HandsOn01)
15
この他、Getterのスレッドセーフな遅延初期化Getterなども可能

(例:HandsOn14)
Getter/Setterが作成され利用できる!
2. Nullチェック
(HandsOn02a)
17
この他、パラメータのnullチェックも可能(例:HandsOn02b)
Setterでnullチェック!
3. Log
(HandsOn03)
19
logのクラス変数が暗黙的に作成される!
対応する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 な

クラス変数として初期化される
4. コンストラクタ
(HandsOn04a)
22
この他、final(@NonNull)なフィールドのための引数つきコンス
トラクタや、デフォルトコンストラクタ、ファクトリメソッドも
作成可能(例:HandsOn04b, HandsOn05)
フィールドの引数つきコンストラクタが
暗黙的に作成される!
5. toString
(HandsOn06)
24
[main] INFO javado.handsOn.useLombok.HandsOn06 -
HandsOn06(name=JavaDo, state=札幌)
toString()がフィールドの状態を文字列で返す
6. equals/hashCode
(HandsOn07)
26
オブジェクトが値一致で比較できる
(equals, hashCodeの中身が作成される)
7. FieldDefaults
(HandsOn08)
28
アクセス修飾子が無いけれども
private, final!
8. Value, Data
(HandsOn10, HandsOn11)
30
@Value
• バリューオブジェクト用のLombokアノテーションをまとめて付与

ToString

EqualsAndHashCode

AllArgsConstructor

FieldDefaults(makeFinal = true, level = PRIVATE)

Getter
31
@Data
• データオブジェクト用のLombokアノテーションをまとめて付与

ToString

EqualsAndHashCode

RequiredArgsConstructor

Getter

Setter
32
9. finalなローカル変数 val
(HandsOn12)
33
変数が参照するオブジェクト型で
finalなローカル変数を作成!
(TypeScriptのvalと同じ)

下の場合、jugsの型はList<HandsOn12>
10. Builderパターン
(HandsOn16)
35
@Builderをつけるだけで
Builderパターンを実装可能!
@SingularはCollection変数を

1個ずつ追加できるようにする
そのほか
37
•@UtilityClass

インスタンス化の抑制(HandsOn18)
•@Cleanup

Closableなオブジェクトの自動close(HandsOn22)
•@Synchronized

並列処理用のsynchronizedブロック作成(HandsOn23)
•@With

immutableオブジェクト用のwithメソッド作成(HandsOn13)
•@Accessors

getter/setterのメソッドチェーン化、Fluentインターフェース
的な名称設定(HandsOn11)
38
ところで
39
Lombokを
黒魔術という人も多い……
40
個人的に黒魔術感が強いと思うもの
41
• @ExtensionMethod

変数の型をキーにしたstaticメソッドの変数への結合(HandsOn21)
• @Delegate

メソッド処理のフィールドオブジェクトへの委譲(HandsOn17)
• @SneakyThrows

チェック例外の非チェック例外化(HandsOn15)
• @Helper

ヘルパークラスのインスタンス化省略(HandsOn19)
• onHoge=@__(@Piyo)

アノテーションの付与(HandsOn20)

激辛より
中辛・辛口あたりで
制御して使った方が
オイシイ!
42
備考
43
• Lombokアノテーションで生成されるコードと

実際にプログラムされたコードが被ったときは、

原則、プログラムされたコードが優先される
• lombok.experimental パッケージに存在するものは、
公式見解にはテスト版(使えないわけではない)
• IDEとかみ合わせが悪い部分はどうしてもある

(valが特にトラブる感)
まとめ
Lombokを利用することで、Javaのボイラープレートなコード
の簡略化(コード量の減少、記法統一によるミスの軽減)を狙
える。
Beanなどのデータオブジェクトや、バリューオブジェクトの生
成、デザインパターンの実装に効果を発揮しやすい。
IDEとの相性問題、一括変換機能などとのトレードオフは必要。
安定して使えるアノテーションからの導入がオススメ。

黒魔術的な所や、混乱しそうな所は無理せずに。
44
次回予告
Spring Boot本とか
JUnit実践入門本とか

教科書にした
ハンズオンとか…?
45

Contenu connexe

Tendances

メタバースのビジネスモデルと技術限界
メタバースのビジネスモデルと技術限界メタバースのビジネスモデルと技術限界
メタバースのビジネスモデルと技術限界Ryo Kurauchi
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)NTT DATA Technology & Innovation
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春VerMasahito Zembutsu
 
オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務Yutaka Kachi
 
マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャota42y
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜Yui Ito
 
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Kazuto Kusama
 
[D12] NonStop SQLって何? by Susumu Yamamoto
[D12] NonStop SQLって何? by Susumu Yamamoto[D12] NonStop SQLって何? by Susumu Yamamoto
[D12] NonStop SQLって何? by Susumu YamamotoInsight Technology, Inc.
 
UEFIで始めるLinux From Scratch
UEFIで始めるLinux From ScratchUEFIで始めるLinux From Scratch
UEFIで始めるLinux From ScratchYuma Ohgami
 
Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Yuji Otani
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知るShuhei Fujita
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-Saki Homma
 
Azure DevOps と開発管理
Azure DevOps と開発管理Azure DevOps と開発管理
Azure DevOps と開発管理Tsukasa Kato
 
その ionice、ほんとに効いてますか?
その ionice、ほんとに効いてますか?その ionice、ほんとに効いてますか?
その ionice、ほんとに効いてますか?Narimichi Takamura
 
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?たけおか しょうぞう
 
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3日本Javaユーザーグループ
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけらAtsushi Nakamura
 
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)Masaya Tahara
 
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来Hiromasa Oka
 

Tendances (20)

メタバースのビジネスモデルと技術限界
メタバースのビジネスモデルと技術限界メタバースのビジネスモデルと技術限界
メタバースのビジネスモデルと技術限界
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
 
オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務
 
マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャ
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜
 
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Concourseで快適な自動化の旅
Concourseで快適な自動化の旅
 
[D12] NonStop SQLって何? by Susumu Yamamoto
[D12] NonStop SQLって何? by Susumu Yamamoto[D12] NonStop SQLって何? by Susumu Yamamoto
[D12] NonStop SQLって何? by Susumu Yamamoto
 
UEFIで始めるLinux From Scratch
UEFIで始めるLinux From ScratchUEFIで始めるLinux From Scratch
UEFIで始めるLinux From Scratch
 
Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知る
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
Azure DevOps と開発管理
Azure DevOps と開発管理Azure DevOps と開発管理
Azure DevOps と開発管理
 
その ionice、ほんとに効いてますか?
その ionice、ほんとに効いてますか?その ionice、ほんとに効いてますか?
その ionice、ほんとに効いてますか?
 
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?
 
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
 
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
 

Similaire à Lombok ハンズオン

20160422_lombokについて
20160422_lombokについて20160422_lombokについて
20160422_lombokについてHidaka Kazutaka
 
20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuriYoshifumi Yamaguchi
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開Hideki Takase
 
What's new in 4.0 of LibreOffice / LibreOffice 4.0の新機能
What's new in 4.0 of LibreOffice / LibreOffice 4.0の新機能What's new in 4.0 of LibreOffice / LibreOffice 4.0の新機能
What's new in 4.0 of LibreOffice / LibreOffice 4.0の新機能Naruhiko Ogasawara
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集terurou
 
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについてNobukazu Hanada
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugYuji Kubota
 
DockerHubを活用してAnsibleのPlaybookを自動ビルドする
DockerHubを活用してAnsibleのPlaybookを自動ビルドするDockerHubを活用してAnsibleのPlaybookを自動ビルドする
DockerHubを活用してAnsibleのPlaybookを自動ビルドするKoji Shiraishi
 
Goで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろうGoで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろうEsehara Shigeo
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデルYuta Kashino
 
PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014Yuuki Takezawa
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key泰 増田
 
Terraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as CodeTerraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as CodeTakahisa Iwamoto
 
TypeScript x Bot Framework
TypeScript x Bot FrameworkTypeScript x Bot Framework
TypeScript x Bot FrameworkKazumi IWANAGA
 
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~Developers Summit
 
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~拓将 平林
 
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化幸雄 村上
 
COBOL技術者のためのJava勉強会
COBOL技術者のためのJava勉強会COBOL技術者のためのJava勉強会
COBOL技術者のためのJava勉強会naka hide
 

Similaire à Lombok ハンズオン (20)

20160422_lombokについて
20160422_lombokについて20160422_lombokについて
20160422_lombokについて
 
20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri
 
Net fringejp2016
Net fringejp2016Net fringejp2016
Net fringejp2016
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
 
What's new in 4.0 of LibreOffice / LibreOffice 4.0の新機能
What's new in 4.0 of LibreOffice / LibreOffice 4.0の新機能What's new in 4.0 of LibreOffice / LibreOffice 4.0の新機能
What's new in 4.0 of LibreOffice / LibreOffice 4.0の新機能
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集
 
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
 
DockerHubを活用してAnsibleのPlaybookを自動ビルドする
DockerHubを活用してAnsibleのPlaybookを自動ビルドするDockerHubを活用してAnsibleのPlaybookを自動ビルドする
DockerHubを活用してAnsibleのPlaybookを自動ビルドする
 
Goで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろうGoで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろう
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
 
PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
 
Pbox on softlayer
Pbox on softlayerPbox on softlayer
Pbox on softlayer
 
Terraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as CodeTerraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as Code
 
TypeScript x Bot Framework
TypeScript x Bot FrameworkTypeScript x Bot Framework
TypeScript x Bot Framework
 
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
 
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
 
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
 
COBOL技術者のためのJava勉強会
COBOL技術者のためのJava勉強会COBOL技術者のためのJava勉強会
COBOL技術者のためのJava勉強会
 

Plus de Hiroto Yamakawa

Java9直前!最近のJava復習ハンズオン
Java9直前!最近のJava復習ハンズオンJava9直前!最近のJava復習ハンズオン
Java9直前!最近のJava復習ハンズオンHiroto Yamakawa
 
Wio Nodeを使った
高校生のIoTプログラミング体験
Wio Nodeを使った
高校生のIoTプログラミング体験Wio Nodeを使った
高校生のIoTプログラミング体験
Wio Nodeを使った
高校生のIoTプログラミング体験Hiroto Yamakawa
 
Apache Wicketのユニットテスト機能
Apache Wicketのユニットテスト機能Apache Wicketのユニットテスト機能
Apache Wicketのユニットテスト機能Hiroto Yamakawa
 
Wicket with Spring Boot on Azure
Wicket with Spring Boot on AzureWicket with Spring Boot on Azure
Wicket with Spring Boot on AzureHiroto Yamakawa
 
地方私立大の助教が Apache Wicketの勉強会を
開いたら
地方私立大の助教が Apache Wicketの勉強会を
開いたら地方私立大の助教が Apache Wicketの勉強会を
開いたら
地方私立大の助教が Apache Wicketの勉強会を
開いたらHiroto Yamakawa
 
プログラミング言語に関する学生へのアンケート
プログラミング言語に関する学生へのアンケートプログラミング言語に関する学生へのアンケート
プログラミング言語に関する学生へのアンケートHiroto Yamakawa
 
札幌のJavaコミュニティ Java Doを立ち上げた話
札幌のJavaコミュニティ Java Doを立ち上げた話札幌のJavaコミュニティ Java Doを立ち上げた話
札幌のJavaコミュニティ Java Doを立ち上げた話Hiroto Yamakawa
 
60分で体験する Stream / Lambda
 ハンズオン
60分で体験する Stream / Lambda
 ハンズオン60分で体験する Stream / Lambda
 ハンズオン
60分で体験する Stream / Lambda
 ハンズオンHiroto Yamakawa
 

Plus de Hiroto Yamakawa (9)

Java9直前!最近のJava復習ハンズオン
Java9直前!最近のJava復習ハンズオンJava9直前!最近のJava復習ハンズオン
Java9直前!最近のJava復習ハンズオン
 
Wio Nodeを使った
高校生のIoTプログラミング体験
Wio Nodeを使った
高校生のIoTプログラミング体験Wio Nodeを使った
高校生のIoTプログラミング体験
Wio Nodeを使った
高校生のIoTプログラミング体験
 
Apache Wicketのユニットテスト機能
Apache Wicketのユニットテスト機能Apache Wicketのユニットテスト機能
Apache Wicketのユニットテスト機能
 
Wicket with Spring Boot on Azure
Wicket with Spring Boot on AzureWicket with Spring Boot on Azure
Wicket with Spring Boot on Azure
 
地方私立大の助教が Apache Wicketの勉強会を
開いたら
地方私立大の助教が Apache Wicketの勉強会を
開いたら地方私立大の助教が Apache Wicketの勉強会を
開いたら
地方私立大の助教が Apache Wicketの勉強会を
開いたら
 
プログラミング言語に関する学生へのアンケート
プログラミング言語に関する学生へのアンケートプログラミング言語に関する学生へのアンケート
プログラミング言語に関する学生へのアンケート
 
札幌のJavaコミュニティ Java Doを立ち上げた話
札幌のJavaコミュニティ Java Doを立ち上げた話札幌のJavaコミュニティ Java Doを立ち上げた話
札幌のJavaコミュニティ Java Doを立ち上げた話
 
60分で体験する Stream / Lambda
 ハンズオン
60分で体験する Stream / Lambda
 ハンズオン60分で体験する Stream / Lambda
 ハンズオン
60分で体験する Stream / Lambda
 ハンズオン
 
Wicket体験談
Wicket体験談Wicket体験談
Wicket体験談
 

Lombok ハンズオン