SlideShare a Scribd company logo
1 of 45
Download to read offline
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

More Related Content

What's hot

Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Etsuji Nakai
 
SPAのルーティングの話
SPAのルーティングの話SPAのルーティングの話
SPAのルーティングの話ushiboy
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングTomoya Hibi
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!kwatch
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料Hironori Miura
 
Riverpodでテストを書こう
Riverpodでテストを書こうRiverpodでテストを書こう
Riverpodでテストを書こうShinnosuke Tokuda
 
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...Shohei Okada
 
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)Akihiko Matuura
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうDevTakas
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話ichirin2501
 
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話NipponAlgorithm
 
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信ryo_mm2d
 
T119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターンT119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターン伸男 伊藤
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話Yoshitaka Kawashima
 
PHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったことPHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったことksimoji
 
サーバーレスの常識を覆す Azure Durable Functionsを使い倒す
サーバーレスの常識を覆す Azure Durable Functionsを使い倒すサーバーレスの常識を覆す Azure Durable Functionsを使い倒す
サーバーレスの常識を覆す Azure Durable Functionsを使い倒すYuta Matsumura
 
Goで実装した UPSIDERの決済金額リミット機能
Goで実装した UPSIDERの決済金額リミット機能 Goで実装した UPSIDERの決済金額リミット機能
Goで実装した UPSIDERの決済金額リミット機能 Miki Masumoto
 

What's hot (20)

Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
 
SPAのルーティングの話
SPAのルーティングの話SPAのルーティングの話
SPAのルーティングの話
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料
 
Riverpodでテストを書こう
Riverpodでテストを書こうRiverpodでテストを書こう
Riverpodでテストを書こう
 
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
 
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
 
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
 
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
 
T119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターンT119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターン
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
 
PHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったことPHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったこと
 
サーバーレスの常識を覆す Azure Durable Functionsを使い倒す
サーバーレスの常識を覆す Azure Durable Functionsを使い倒すサーバーレスの常識を覆す Azure Durable Functionsを使い倒す
サーバーレスの常識を覆す Azure Durable Functionsを使い倒す
 
Goで実装した UPSIDERの決済金額リミット機能
Goで実装した UPSIDERの決済金額リミット機能 Goで実装した UPSIDERの決済金額リミット機能
Goで実装した UPSIDERの決済金額リミット機能
 

Similar to 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
 
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
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトTaketo Sano
 

Similar to 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
 
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勉強会
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
 

More from 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
 

More from 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 ハンズオン