Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Lombokハンズオン Javado #02
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Hiroto YAMAKAWA
October 04, 2015
Programming
410
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Lombokハンズオン Javado #02
Java Doでしょう #02 (10/04,札幌)
Hiroto YAMAKAWA
October 04, 2015
More Decks by Hiroto YAMAKAWA
See All by Hiroto YAMAKAWA
Beyond Coding: Empowering the Next Generation through Community-Supported Programming Education / CIF26
gishi_yama
0
60
1password で 開発環境の環境変数を安全に管理したい / mild-web-sap #31
gishi_yama
0
55
新しいJavaを学んで・使っていこう! / osd26do
gishi_yama
0
250
Hokkaido JUGのJCP Annual Awards授賞式 / JJUG CCC 2026 Spring LT
gishi_yama
0
100
カンファレンスのCFPを 試しに書いてみよう! / JavaDo32
gishi_yama
0
370
開発環境構築の共通要素:必要なものを手元に持ってきて使えるようにする/JavaDo28
gishi_yama
0
210
ドメイン層×日本語プログラミング/seb_sapporo_04
gishi_yama
1
240
Javaへの新たなHello, World / yuruchitose-04
gishi_yama
0
120
JSR381、知っていますか?Javaの画像認識APIのはなし / SC4Y23-05
gishi_yama
0
360
Other Decks in Programming
See All in Programming
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
180
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
160
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
460
Building an Out-of-Order CPU
latte72
1
740
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
190
業務時間外もAIに働いてもらう話
colorful12
3
10k
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
130
What We Talk About When We Talk About XP
m_seki
2
440
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.8k
AIと壁打ちしながら進めるコスト管理
fufuhu
2
2k
MIZARU@SPAJAM2026 第二回予選
1901drama
0
110
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
760
Featured
See All Featured
Fireside Chat
paigeccino
42
4k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The SEO identity crisis: Don't let AI make you average
varn
0
550
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Typedesign – Prime Four
hannesfritz
42
3.2k
BBQ
matthewcrist
89
10k
Abbi's Birthday
coloredviolet
3
9.9k
A Soul's Torment
seathinner
7
3.6k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
We Are The Robots
honzajavorek
0
350
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
600
Transcript
-PNCPLϋϯζΦϯ !HJTIJ@ZBNB IUUQTHJUIVCDPNKBWBEP @TFNJOBS
HJTIJ@ZBNB ઍࡀࢢͷେֶͰใγεςϜͷݚڀ։ൃʹैࣄͯ͠·͢ FϥʔχϯάγεςϜͱ͔ɺҬͷߦใϙʔλϧͱ͔ʜ "QBDIF8JDLFUͷυΩϡϝϯτ༁ ࡳຈͷ+BWBΤϯδχΞίϛϡχςΟʢ+BWB%Pʣ ͓͍͍͠ͷେ͖Ͱ͢ ͳͲΛͬͯ·͢
ࠓͷ༰
“Project Lombok makes java a spicier language by adding 'handlers'
that know how to build and compile simple, boilerplate-free, not- quite-java code.” 1SPKFDU-PNCPL IUUQTHJUIVCDPNS[XJUTFSMPPUMPNCPL LombokJavaʹ’ϋϯυϥ’ΛՃ͢Δ͜ͱͰɺ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; } // ҎԼུ… ຖճ࡞͢Δ ͓͖·Γͷίʔυ ʢϘΠϥʔϓϨʔτʣ *%&Ͱ͋ΔఔੜͰ͖Δͷ͋Δ͕ɺ໘ͳ͜ͱ͋ΔΑ
ͨͱ͑ w (FUUFS4FUUFS w FRVBMT IBTIDPEF w σϑΥϧτҾ͖ ίϯετϥΫλ w
5P4USJOH w OVMMDIFDL w #VJMEFSύλʔϯ w -PHHFS w มఆٛ w *NNVUBCMF0CKFDU w ԆॳظԽ w FUDʜ -PNCPL͜͏͍ͬͨͷΛΞϊςʔγϣϯͰলུɾઃఆ͢ΔΑ
ͭ·Γɺ-PNCPLΛ͏ͱʜ ఆܕίʔυ͕૿͕͑ͪͳ෦ ʢσʔλɾόϦϡʔΦϒδΣΫτσβΠϯύλʔϯʣ ͷهࡌΛΞϊςʔγϣϯͰ؆ུԽͰ͖ΔΑ ͔Βެ։͞Ε͓ͯΓɺ ຊޠͷใ͔ͳΓॆ࣮͍ͯ͠ΔΑ ͠ձͰ͍ͬͯΔํ͕͍Εϊϋͱ͔ ͬͯΔײΛͲ͠Ͳ͠ڞ༗ͯ͠΄͍͠Α
-PNCPLͷ͘͠Έ
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; } -PNCPLΛ͏ͱʜ
ˑ؝ٝػ؎ٕ儗ךؙٓأػأח-PNCPLָろתגְהծ؝ٝػ؎ ٕ儗ח-PNCPLָⰅ⸂ا٦أؿ؋؎ٕ鍑匿׃ג㹀㘗؝٦س欰 䧭׃䖓ծ؝ٝػ؎ٓח床׃תׅկ⚥殛䖞גծا٦أ؝٦سٖ كٕדכHFUUFSTFUUFSָ㶷㖈׃זֻגծؙٓأؿ؋؎ٕغ ؎ز؝٦سٖكٕדכHFUUFSTFUUFSָ㶷㖈ׅךדׅկ˒ )"46/6.",FOKJ 铩侄ִגֻזַ-PNCPLךֿה IUUQXXXDPQQFSNJOFKQEPDTQSPHSBNNJOHMPNCPLIUNM
None
ϋϯζΦϯ
ਐΊํ TSDNBJOKBWBKBWBEPIBOET0OWBOJMMB ͷ֤ΫϥεΛ։͖ɺࢦࣔ௨Γʹॻ͖͔͍͑ͯ͘ ʢݱঢ়ͷ-PNCPLΞϊςʔγϣϯΛ͓͓ΉͶཏ͍ͯ͠·͢ʣ TSDNBJOKBWBKBWBEPIBOET0OVTF-PNCPL ͷΫϥε͕ൣղతͳίʔυ TSDNBJOKBWBTBNQMFɺ ࣮ࡍʹ͏ͱʜײͷࢀߟʹ͍ͯͩ͘͠͞
ͳͷͰ ͍͔ͭ͘ൈਮͯ͠ ϋϯζΦϯ͠·͢ʂ
(FUUFS4FUUFS ʢ)BOET0Oʣ
!(FUUFS !4FUUFS QVCMJDDMBTT)BOET0O\ QSJWBUFTUBUJDOBM-PHHFSMPH -PHHFS'BDUPSZHFU-PHHFS )BOET0ODMBTT QSJWBUF4USJOHJOGP QVCMJDTUBUJDWPJENBJO 4USJOH<>BSHT
\ )BOET0OUBSHFUOFX)BOET0O UBSHFUTFU*OGP 䧭⸆ MPHJOGP UBSHFUHFU*OGP ^ ^ ͜ͷଞɺ(FUUFSͷεϨουηʔϑͳԆॳظԽ(FUUFSͳͲՄೳ ʢྫɿ)BOET0Oʣ (FUUFS4FUUFS͕࡞͞Εར༻Ͱ͖Δʂ
/VMMνΣοΫ ʢ)BOET0OBʣ
!(FUUFS !4FUUFS QVCMJDDMBTT)BOET0OB\ QSJWBUFTUBUJDOBM-PHHFSMPH -PHHFS'BDUPSZHFU-PHHFS )BOET0OBDMBTT !/PO/VMM QSJWBUF4USJOHJOGP QVCMJDTUBUJDWPJENBJO
4USJOH<>BSHT \ )BOET0OBUBSHFUOFX)BOET0OB UBSHFUTFU*OGP 䧭⸆ MPHJOGP UBSHFUHFU*OGP USZ\ UBSHFUTFU*OGP OVMM ^DBUDI /VMM1PJOUFS&YDFQUJPOF \ MPHJOGP OVMMثؑحؙ䧭⸆ ^ ^ ^ ͜ͷଞɺύϥϝʔλͷOVMMνΣοΫՄೳʢྫɿ)BOET0OCʣ 4FUUFSͰOVMMνΣοΫʂ
-PH ʢ)BOET0Oʣ
!4MGK !(FUUFS !4FUUFS QVCMJDDMBTT)BOET0O\ QSJWBUF4USJOHJOGP QVCMJDTUBUJDWPJENBJO 4USJOH<>BSHT \ )BOET0OUBSHFUOFX)BOET0O
UBSHFUTFU*OGP 䧭⸆ MPHJOGP UBSHFUHFU*OGP ^ ^ MPHͷΫϥεม͕҉తʹ࡞͞ΕΔʂ
ରԠ͢Δ-PHHFSͷछྨ w !$PNNPOT-PH PSHBQBDIFDPNNPOTMPHHJOH-PH w !-PH KBWBVUJMMPHHJOH-PHHFS w !-PHK PSHBQBDIFMPHK-PHHFS
w !-PHK PSHBQBDIFMPHHJOHMPHK-PHHFS w !4MGK PSHTMGK-PHHFS w !94MGK PSHTMGKFYU9-PHHFS ͯ͢ɺQSJWBUFTUBUJDpOBMͳ Ϋϥεมͱͯ͠ॳظԽ͞ΕΔ
ίϯετϥΫλ ʢ)BOET0OBʣ
!4MGK !"MM"SHT$POTUSVDUPS !(FUUFS QVCMJDDMBTT)BOET0OB\ QSJWBUF4USJOHJOGP QVCMJDTUBUJDWPJENBJO 4USJOH<>BSHT \ )BOET0OBUBSHFUOFX)BOET0OB 䧭⸆
MPHJOGP UBSHFUHFU*OGP ^ ^ ͜ͷଞɺpOBM !/PO/VMM ͳϑΟʔϧυͷͨΊͷҾ͖ͭίϯε τϥΫλɺσϑΥϧτίϯετϥΫλɺϑΝΫτϦϝιου ࡞Մೳʢྫɿ)BOET0OC )BOET0Oʣ ϑΟʔϧυͷҾ͖ͭίϯετϥΫλ͕ ҉తʹ࡞͞ΕΔʂ
UP4USJOH ʢ)BOET0Oʣ
!4MGK !"MM"SHT$POTUSVDUPS !5P4USJOH QVCMJDDMBTT)BOET0O\ QSJWBUF4USJOHOBNF QSJWBUF4USJOHTUBUF QVCMJDTUBUJDWPJENBJO 4USJOH<>BSHT \ )BOET0OUBSHFUOFX)BOET0O
+BWB%P 劦䌽 MPHJOGP UBSHFUUP4USJOH ^ ^ <NBJO>*/'0KBWBEPIBOET0OVTF-PNCPL)BOET0O )BOET0O OBNF+BWB%P TUBUFࡳຈ UP4USJOH ͕ϑΟʔϧυͷঢ়ଶΛจࣈྻͰฦ͢
FRVBMTIBTI$PEF ʢ)BOET0Oʣ
!4MGK !"MM"SHT$POTUSVDUPS !&RVBMT"OE)BTI$PEF !(FUUFS QVCMJDDMBTT)BOET0O\ QSJWBUF4USJOHOBNF QSJWBUF4USJOHTUBUF QVCMJDTUBUJDWPJENBJO 4USJOH<>BSHT \
)BOET0OUBSHFUOFX)BOET0O +BWB%P 劦䌽 )BOET0OUBSHFUOFX)BOET0O +BWB%P 劦䌽 MPHJOGP UBSHFU UBSHFUUP4USJOH MPHJOGP UBSHFU UBSHFUUP4USJOH MPHJOGP DPOUBJOT UBSHFUFRVBMT UBSHFU ^ ^ ΦϒδΣΫτ͕ҰகͰൺֱͰ͖Δ FRVBMT IBTI$PEFͷத͕࡞͞ΕΔʣ
'JFME%FGBVMUT ʢ)BOET0Oʣ
!4MGK !"MM"SHT$POTUSVDUPS !&RVBMT"OE)BTI$PEF !(FUUFS !5P4USJOH !'JFME%FGBVMUT NBLF'JOBMUSVF MFWFM"DDFTT-FWFM13*7"5& QVCMJDDMBTT)BOET0O\
4USJOHOBNF 4USJOHTUBUF QVCMJDTUBUJDWPJENBJO 4USJOH<>BSHT \ )BOET0OUBSHFUOFX)BOET0O +BWB%P 劦䌽 )BOET0OUBSHFUOFX)BOET0O +BWB%P 劦䌽 MPHJOGP UBSHFU UBSHFUUP4USJOH MPHJOGP UBSHFU UBSHFUUP4USJOH MPHJOGP DPOUBJOT UBSHFUFRVBMT UBSHFU ^ ^ ΞΫηεम০ࢠ͕ແ͍͚ΕͲ QSJWBUF pOBM
7BMVF %BUB ʢ)BOET0O )BOET0Oʣ
!7BMVF w όϦϡʔΦϒδΣΫτ༻ͷ-PNCPLΞϊςʔγϣϯΛ·ͱΊͯ༩ 5P4USJOH &RVBMT"OE)BTI$PEF "MM"SHT$POTUSVDUPS 'JFME%FGBVMUT NBLF'JOBMUSVF MFWFM13*7"5&ʣ (FUUFS
!%BUB w σʔλΦϒδΣΫτ༻ͷ-PNCPLΞϊςʔγϣϯΛ·ͱΊͯ༩ 5P4USJOH &RVBMT"OE)BTI$PEF 3FRVJSFE"SHT$POTUSVDUPS (FUUFS 4FUUFS
pOBMͳϩʔΧϧมWBM ʢ)BOET0Oʣ
!4MGK !"MM"SHT$POTUSVDUPS !%BUB QVCMJDDMBTT)BOET0O\ QSJWBUF4USJOHOBNF QSJWBUF4USJOHTUBUF QVCMJDTUBUJDWPJENBJO 4USJOH<>BSHT \ WBMKVHT4USFBNPG
OFX)BOET0O +BWB%P 劦䌽 OFX)BOET0O 幪靼+BWB 匌❨ OFX)BOET0O +BWB⹈䓼⠓JO猧衝⾱ 匌❨ OFX)BOET0O ꟼآٍغ 㣐ꢻ OFX)BOET0O 䀤㿊+BWBِ٦ؠ⠓ 䀤㿊 OFX)BOET0O 䎢䃊+6( 䎢䃊 OFX)BOET0O 擓劤+BWB⹈䓼⠓ 擓劤 DPMMFDU $PMMFDUPSTUP-JTU KVHTTUSFBN GPS&BDI JUFNMPHJOGP JUFNUP4USJOH ^ ม͕ࢀর͢ΔΦϒδΣΫτܕͰ pOBMͳϩʔΧϧมΛ࡞ʂ ʢ5ZQF4DSJQUͷWBMͱಉ͡ʣ Լͷ߹ɺKVHTͷܕ-JTU)BOET0O
#VJMEFSύλʔϯ ʢ)BOET0Oʣ
!4MGK !5P4USJOH !#VJMEFS QVCMJDDMBTT)BOET0O\ QSJWBUF4USJOHOBNF !4JOHVMBS QSJWBUF-JTU4USJOHTFNJOBST QVCMJDTUBUJDWPJENBJO 4USJOH<>BSHT \
)BOET0O#VJMEFSCVJMEFS)BOET0OCVJMEFS )BOET0OUBSHFSCVJMEFSOBNF +BWB%P TFNJOBS "QBDIF8JDLFU TFNJOBS 4USFBN-BNCEB TFNJOBS XBLF TFNJOBS MPNCPL CVJME MPHJOGP UBSHFSUP4USJOH ^ !#VJMEFSΛ͚ͭΔ͚ͩͰ #VJMEFSύλʔϯΛ࣮Մೳʂ !4JOHVMBS$PMMFDUJPOมΛ ݸͣͭՃͰ͖ΔΑ͏ʹ͢Δ
ͦͷ΄͔
w !6UJMJUZ$MBTT ΠϯελϯεԽͷ੍ʢ)BOET0Oʣ w !$MFBOVQ $MPTBCMFͳΦϒδΣΫτͷࣗಈDMPTFʢ)BOET0Oʣ w !4ZODISPOJ[FE ฒྻॲཧ༻ͷTZODISPOJ[FEϒϩοΫ࡞ʢ)BOET0Oʣ w
!8JUI JNNVUBCMFΦϒδΣΫτ༻ͷXJUIϝιου࡞ʢ)BOET0Oʣ w !"DDFTTPST HFUUFSTFUUFSͷϝιουνΣʔϯԽɺ'MVFOUΠϯλʔϑΣʔε తͳ໊শઃఆʢ)BOET0Oʣ
ͱ͜ΖͰ
-PNCPLΛ ࠇຐज़ͱ͍͏ਓଟ͍ʜʜ
ݸਓతʹࠇຐज़ײ͕ڧ͍ͱࢥ͏ͷ w !&YUFOTJPO.FUIPE มͷܕΛΩʔʹͨ͠TUBUJDϝιουͷมͷ݁߹ʢ)BOET0Oʣ w !%FMFHBUF ϝιουॲཧͷϑΟʔϧυΦϒδΣΫτͷҕৡʢ)BOET0Oʣ w !4OFBLZ5ISPXT
νΣοΫྫ֎ͷඇνΣοΫྫ֎Խʢ)BOET0Oʣ w !)FMQFS ϔϧύʔΫϥεͷΠϯελϯεԽলུʢ)BOET0Oʣ w PO)PHF!@@ !1JZP Ξϊςʔγϣϯͷ༩ʢ)BOET0Oʣ
ܹਏΑΓ தਏɾਏޱ͋ͨΓͰ ੍ޚͯͬͨ͠ํ͕ ΦΠγΠʂ
උߟ w -PNCPLΞϊςʔγϣϯͰੜ͞ΕΔίʔυͱ ࣮ࡍʹϓϩάϥϜ͞Εͨίʔυ͕ඃͬͨͱ͖ɺ ݪଇɺϓϩάϥϜ͞Εͨίʔυ͕༏ઌ͞ΕΔ w MPNCPLFYQFSJNFOUBMύοέʔδʹଘࡏ͢Δͷɺ ެࣜݟղʹςετ൛ʢ͑ͳ͍Θ͚Ͱͳ͍ʣ w
*%&ͱ͔Έ߹Θ͕ͤѱ͍෦Ͳ͏ͯ͋͠Δ ʢWBM͕ಛʹτϥϒΔײʣ
·ͱΊ -PNCPLΛར༻͢Δ͜ͱͰɺ+BWBͷϘΠϥʔϓϨʔτͳίʔυ ͷ؆ུԽʢίʔυྔͷݮগɺه๏౷ҰʹΑΔϛεͷܰݮʣΛૂ ͑Δɻ #FBOͳͲͷσʔλΦϒδΣΫτɺόϦϡʔΦϒδΣΫτͷੜ ɺσβΠϯύλʔϯͷ࣮ʹޮՌΛൃش͍͢͠ɻ *%&ͱͷ૬ੑɺҰׅมػೳͳͲͱͷτϨʔυΦϑඞཁɻ ҆ఆͯ͑͠ΔΞϊςʔγϣϯ͔Βͷಋೖ͕Φεεϝɻ ࠇຐज़తͳॴɺࠞཚͦ͠͏ͳॴແཧͤͣʹɻ
࣍ճ༧ࠂ 4QSJOH#PPUຊͱ͔ +6OJU࣮ફೖຊͱ͔ ڭՊॻʹͨ͠ ϋϯζΦϯͱ͔ʜʁ