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
400
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
開発環境構築の共通要素:必要なものを手元に持ってきて使えるようにする/JavaDo28
gishi_yama
0
130
ドメイン層×日本語プログラミング/seb_sapporo_04
gishi_yama
1
160
Javaへの新たなHello, World / yuruchitose-04
gishi_yama
0
65
JSR381、知っていますか?Javaの画像認識APIのはなし / SC4Y23-05
gishi_yama
0
270
jPeekでのクラスの凝集度計測の試行 / mild-web-sapporo#24
gishi_yama
0
420
Github CopilotとChatGPTを使って感じた使い分けの糸口 / JavaDo #22
gishi_yama
1
1.7k
子ども向けプログラミング体験教室でのHololens2利用事例 / IoTLT#97
gishi_yama
0
130
AWS Serverless Java Container, Spring Bootで試してみた / javado22
gishi_yama
5
860
Hololens2と 小中高プログラミング教育の利用にむけた試行 / XRMTG 2023-1-18
gishi_yama
0
350
Other Decks in Programming
See All in Programming
Six and a half ridiculous things to do with Quarkus
hollycummins
0
170
Railsだからできる 例外業務に禍根を残さない 設定設計パターン
ei_ei_eiichi
0
800
bootcamp2025_バックエンド研修_WebAPIサーバ作成.pdf
geniee_inc
0
110
技術的負債の正体を知って向き合う / Facing Technical Debt
irof
0
170
After go func(): Goroutines Through a Beginner’s Eye
97vaibhav
0
390
アメ車でサンノゼを走ってきたよ!
s_shimotori
0
220
CSC509 Lecture 05
javiergs
PRO
0
300
2分台で1500examples完走!爆速CIを支える環境構築術 - Kaigi on Rails 2025
falcon8823
3
3.6k
GraphQL×Railsアプリのデータベース負荷分散 - 月間3,000万人利用サービスを無停止で
koxya
1
1.3k
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
310
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
170
Android16 Migration Stories ~Building a Pattern for Android OS upgrades~
reoandroider
0
110
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Producing Creativity
orderedlist
PRO
347
40k
Six Lessons from altMBA
skipperchong
28
4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
32
2.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Code Reviewing Like a Champion
maltzj
526
40k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Music & Morning Musume
bryan
46
6.8k
Fireside Chat
paigeccino
40
3.7k
Bash Introduction
62gerente
615
210k
Side Projects
sachag
455
43k
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࣮ફೖຊͱ͔ ڭՊॻʹͨ͠ ϋϯζΦϯͱ͔ʜʁ