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
110
ドメイン層×日本語プログラミング/seb_sapporo_04
gishi_yama
1
140
Javaへの新たなHello, World / yuruchitose-04
gishi_yama
0
54
JSR381、知っていますか?Javaの画像認識APIのはなし / SC4Y23-05
gishi_yama
0
240
jPeekでのクラスの凝集度計測の試行 / mild-web-sapporo#24
gishi_yama
0
390
Github CopilotとChatGPTを使って感じた使い分けの糸口 / JavaDo #22
gishi_yama
1
1.7k
子ども向けプログラミング体験教室でのHololens2利用事例 / IoTLT#97
gishi_yama
0
110
AWS Serverless Java Container, Spring Bootで試してみた / javado22
gishi_yama
1
770
Hololens2と 小中高プログラミング教育の利用にむけた試行 / XRMTG 2023-1-18
gishi_yama
0
320
Other Decks in Programming
See All in Programming
XP, Testing and ninja testing
m_seki
3
220
Is Xcode slowly dying out in 2025?
uetyo
1
240
Discover Metal 4
rei315
2
110
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
150
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
240
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
1
140
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
5
4.3k
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
160
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
170
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
710
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
0
450
「Cursor/Devin全社導入の理想と現実」のその後
saitoryc
0
690
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Faster Mobile Websites
deanohume
307
31k
Typedesign – Prime Four
hannesfritz
42
2.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
124
52k
Site-Speed That Sticks
csswizardry
10
670
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Side Projects
sachag
455
42k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
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࣮ફೖຊͱ͔ ڭՊॻʹͨ͠ ϋϯζΦϯͱ͔ʜʁ