Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lombokハンズオン Javado #02
Search
Hiroto YAMAKAWA
October 04, 2015
Programming
0
360
Lombokハンズオン Javado #02
Java Doでしょう #02 (10/04,札幌)
Hiroto YAMAKAWA
October 04, 2015
Tweet
Share
More Decks by Hiroto YAMAKAWA
See All by Hiroto YAMAKAWA
JSR381、知っていますか?Javaの画像認識APIのはなし / SC4Y23-05
gishi_yama
0
39
jPeekでのクラスの凝集度計測の試行 / mild-web-sapporo#24
gishi_yama
0
200
Github CopilotとChatGPTを使って感じた使い分けの糸口 / JavaDo #22
gishi_yama
1
1.1k
子ども向けプログラミング体験教室でのHololens2利用事例 / IoTLT#97
gishi_yama
0
63
AWS Serverless Java Container, Spring Bootで試してみた / javado22
gishi_yama
0
150
Hololens2と 小中高プログラミング教育の利用にむけた試行 / XRMTG 2023-1-18
gishi_yama
0
250
小学生がmicro:bitを用いて行える課題解決を意識した自由研究事例 /SC4Y '22#4
gishi_yama
0
250
あなたもこだわろう!Web開発環境 (物理編)'22 / mild-web-sapporo#22
gishi_yama
0
240
Records の使い方はこれでいいの? をみんなで考えたい / Java DO #20
gishi_yama
1
1k
Other Decks in Programming
See All in Programming
Ruby GitHub Packages
bkuhlmann
0
620
Changed Rules: Architectures with Lightweight Stores
manfredsteyer
PRO
0
220
Javaエンジニアのための Nodejs/Nuxt3入門
hidekatsu_izuno
0
280
今の SmartHR にエンジニアで入社するとどうなるの?
daisukeshinoku
5
4.6k
脱・初心者!脱・マネコン!AWS CDKを使ってみませんか!?
har1101
0
300
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.6k
코틀린으로 멀티플랫폼 만들기
pangmoo
0
120
コーンフレークから始める モデリング会話入門
ogurotakayuki
0
270
オブジェクト指向のリ・オリエンテーション~歴史を振り返り、AI時代に向きなおる~
hanyudaeiiti
9
5.6k
1BRC--Nerd Sniping the Java Community
gunnarmorling
0
300
大規模Reactアプリのリアーキテクチャ~8万行のTanStack Query移行の軌跡~
kj455
3
490
AWS Application Composerで始める、 サーバーレスなデータ基盤構築 / 20240406-jawsug-hokuriku-shinkansen
kasacchiful
1
250
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
237
11k
GitHub's CSS Performance
jonrohan
1023
450k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
8
8.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
Agile that works and the tools we love
rasmusluckow
323
20k
For a Future-Friendly Web
brad_frost
171
8.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
124
32k
Scaling GitHub
holman
457
140k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
5
1.5k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Art, The Web, and Tiny UX
lynnandtonic
288
19k
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࣮ફೖຊͱ͔ ڭՊॻʹͨ͠ ϋϯζΦϯͱ͔ʜʁ