Slide 1

Slide 1 text

-PNCPLϋϯζΦϯ !HJTIJ@ZBNB 
 IUUQTHJUIVCDPNKBWBEP @TFNJOBS

Slide 2

Slide 2 text

HJTIJ@ZBNB ઍࡀࢢͷେֶͰ৘ใγεςϜͷݚڀ։ൃʹैࣄͯ͠·͢
 FϥʔχϯάγεςϜͱ͔ɺ஍Ҭͷߦ੓৘ใϙʔλϧͱ͔ʜ "QBDIF8JDLFUͷυΩϡϝϯτ຋༁
 ࡳຈͷ+BWBΤϯδχΞίϛϡχςΟʢ+BWB%Pʣ ͓͍͍͠΋ͷେ޷͖Ͱ͢ ͳͲΛ΍ͬͯ·͢

Slide 3

Slide 3 text

ࠓ೔ͷ಺༰

Slide 4

Slide 4 text

“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 Lombok͸Javaʹ’ϋϯυϥ’Λ௥Ճ͢Δ͜ͱͰɺJavaΛؾͷར͍ͨ ݴޠʹ͢ΔΑʂ ϋϯυϥ͸ ɾγϯϓϧͰ ɾϘΠϥʔϓϨʔτʢ͓͖·Γͷॻ͖ํʣΛ·͵͕ΕΔ ɾJavaͬΆ͘ͳ͍ ίʔυʹ͢ΔϏϧυ΍ίϯύΠϧͷํ๏Λ೺Ѳ͍ͯ͠Δ΋ͷͩΑʂ

Slide 5

Slide 5 text

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;    }   //  ҎԼུ… ຖճ࡞੒͢Δ ͓͖·Γͷίʔυ ʢϘΠϥʔϓϨʔτʣ *%&Ͱ͋Δఔ౓ੜ੒Ͱ͖Δ΋ͷ΋͋Δ͕ɺ໘౗ͳ͜ͱ΋͋ΔΑ

Slide 6

Slide 6 text

ͨͱ͑͹ w (FUUFS4FUUFS w FRVBMT IBTIDPEF w σϑΥϧτҾ਺෇͖
 ίϯετϥΫλ w 5P4USJOH w OVMMDIFDL w #VJMEFSύλʔϯ w -PHHFS w ม਺ఆٛ w *NNVUBCMF0CKFDU w ஗ԆॳظԽ w FUDʜ -PNCPL͸͜͏͍ͬͨ΋ͷΛΞϊςʔγϣϯͰলུɾઃఆ͢ΔΑ

Slide 7

Slide 7 text

ͭ·Γɺ-PNCPLΛ࢖͏ͱʜ ఆܕίʔυ͕૿͕͑ͪͳ෦෼
 ʢσʔλɾόϦϡʔΦϒδΣΫτ΍σβΠϯύλʔϯʣ
 ͷهࡌΛΞϊςʔγϣϯͰ؆ུԽͰ͖ΔΑ ೥͔Βެ։͞Ε͓ͯΓɺ
 ೔ຊޠͷ৘ใ΋͔ͳΓॆ࣮͍ͯ͠ΔΑ ΋͠ձ৔Ͱ࢖͍ͬͯΔํ͕͍Ε͹ϊ΢ϋ΢ͱ͔
 ࢖ͬͯΔײΛͲ͠Ͳ͠ڞ༗ͯ͠΄͍͠Α

Slide 8

Slide 8 text

-PNCPLͷ͘͠Έ

Slide 9

Slide 9 text

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Λ࢖͏ͱʜ

Slide 10

Slide 10 text

ˑ؝ٝػ؎ٕ儗ךؙٓأػأח-PNCPLָろת׸גְ׷הծ؝ٝػ؎ ٕ儗ח-PNCPLָⰅ⸂ا٦أؿ؋؎ٕ׾鍑匿׃ג㹀㘗؝٦س׾欰 䧭׃׋䖓ծ؝ٝػ؎ٓח床׃תׅկ⚥殛䖞׏גծا٦أ؝٦سٖ كٕדכHFUUFSTFUUFSָ㶷㖈׃זֻג׮ծؙٓأؿ؋؎ٕغ ؎ز؝٦سٖكٕדכHFUUFSTFUUFSָ㶷㖈ׅ׷ךדׅկ˒ )"46/6.",FOKJ 铩׮侄ִגֻ׸זַ׏׋-PNCPLךֿה
 IUUQXXXDPQQFSNJOFKQEPDTQSPHSBNNJOHMPNCPLIUNM

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

ϋϯζΦϯ

Slide 13

Slide 13 text

ਐΊํ TSDNBJOKBWBKBWBEPIBOET0OWBOJMMB
 ͷ֤ΫϥεΛ։͖ɺࢦࣔ௨Γʹॻ͖͔͍͑ͯ͘
 ʢݱঢ়ͷ-PNCPLΞϊςʔγϣϯΛ͓͓ΉͶ໢ཏ͍ͯ͠·͢ʣ TSDNBJOKBWBKBWBEPIBOET0OVTF-PNCPL
 ͷΫϥε͕໛ൣղ౴తͳίʔυ TSDNBJOKBWBTBNQMF͸ɺ
 ࣮ࡍʹ࢖͏ͱʜײͷࢀߟʹ͍ͯͩ͘͠͞

Slide 14

Slide 14 text

෼ͳͷͰ ͍͔ͭ͘ൈਮͯ͠ ϋϯζΦϯ͠·͢ʂ

Slide 15

Slide 15 text

(FUUFS4FUUFS ʢ)BOET0Oʣ

Slide 16

Slide 16 text

!(FUUFS !4FUUFS QVCMJDDMBTT)BOET0O\ QSJWBUFTUBUJDOBM-PHHFSMPH -PHHFS'BDUPSZHFU-PHHFS )BOET0ODMBTT QSJWBUF4USJOHJOGP QVCMJDTUBUJDWPJENBJO 4USJOH<>BSHT \ )BOET0OUBSHFUOFX)BOET0O UBSHFUTFU*OGP 䧭⸆ MPHJOGP UBSHFUHFU*OGP ^ ^ ͜ͷଞɺ(FUUFSͷεϨουηʔϑͳ஗ԆॳظԽ(FUUFSͳͲ΋Մೳ
 ʢྫɿ)BOET0Oʣ (FUUFS4FUUFS͕࡞੒͞Εར༻Ͱ͖Δʂ

Slide 17

Slide 17 text

/VMMνΣοΫ ʢ)BOET0OBʣ

Slide 18

Slide 18 text

!(FUUFS !4FUUFS QVCMJDDMBTT)BOET0OB\ QSJWBUFTUBUJDOBM-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νΣοΫʂ

Slide 19

Slide 19 text

-PH ʢ)BOET0Oʣ

Slide 20

Slide 20 text

!4MGK !(FUUFS !4FUUFS QVCMJDDMBTT)BOET0O\ QSJWBUF4USJOHJOGP QVCMJDTUBUJDWPJENBJO 4USJOH<>BSHT \ )BOET0OUBSHFUOFX)BOET0O UBSHFUTFU*OGP 䧭⸆ MPHJOGP UBSHFUHFU*OGP ^ ^ MPHͷΫϥεม਺͕҉໧తʹ࡞੒͞ΕΔʂ

Slide 21

Slide 21 text

ରԠ͢Δ-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ͳ
 Ϋϥεม਺ͱͯ͠ॳظԽ͞ΕΔ

Slide 22

Slide 22 text

ίϯετϥΫλ ʢ)BOET0OBʣ

Slide 23

Slide 23 text

!4MGK !"MM"SHT$POTUSVDUPS !(FUUFS QVCMJDDMBTT)BOET0OB\ QSJWBUF4USJOHJOGP QVCMJDTUBUJDWPJENBJO 4USJOH<>BSHT \ )BOET0OBUBSHFUOFX)BOET0OB 䧭⸆ MPHJOGP UBSHFUHFU*OGP ^ ^ ͜ͷଞɺpOBM !/PO/VMM ͳϑΟʔϧυͷͨΊͷҾ਺͖ͭίϯε τϥΫλ΍ɺσϑΥϧτίϯετϥΫλɺϑΝΫτϦϝιου΋ ࡞੒Մೳʢྫɿ)BOET0OC )BOET0Oʣ ϑΟʔϧυͷҾ਺͖ͭίϯετϥΫλ͕ ҉໧తʹ࡞੒͞ΕΔʂ

Slide 24

Slide 24 text

UP4USJOH ʢ)BOET0Oʣ

Slide 25

Slide 25 text

!4MGK !"MM"SHT$POTUSVDUPS !5P4USJOH QVCMJDDMBTT)BOET0O\ QSJWBUF4USJOHOBNF QSJWBUF4USJOHTUBUF QVCMJDTUBUJDWPJENBJO 4USJOH<>BSHT \ )BOET0OUBSHFUOFX)BOET0O +BWB%P 劦䌽 MPHJOGP UBSHFUUP4USJOH ^ ^ */'0KBWBEPIBOET0OVTF-PNCPL)BOET0O )BOET0O OBNF+BWB%P TUBUFࡳຈ UP4USJOH ͕ϑΟʔϧυͷঢ়ଶΛจࣈྻͰฦ͢

Slide 26

Slide 26 text

FRVBMTIBTI$PEF ʢ)BOET0Oʣ

Slide 27

Slide 27 text

!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 UBSHFUUBSHFUUP4USJOH MPHJOGP UBSHFUUBSHFUUP4USJOH MPHJOGP DPOUBJOTUBSHFUFRVBMT UBSHFU ^ ^ ΦϒδΣΫτ͕஋ҰகͰൺֱͰ͖Δ FRVBMT IBTI$PEFͷத਎͕࡞੒͞ΕΔʣ

Slide 28

Slide 28 text

'JFME%FGBVMUT ʢ)BOET0Oʣ

Slide 29

Slide 29 text

!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 UBSHFUUBSHFUUP4USJOH MPHJOGP UBSHFUUBSHFUUP4USJOH MPHJOGP DPOUBJOTUBSHFUFRVBMT UBSHFU ^ ^ ΞΫηεम০ࢠ͕ແ͍͚ΕͲ΋ QSJWBUF pOBM

Slide 30

Slide 30 text

7BMVF %BUB ʢ)BOET0O )BOET0Oʣ

Slide 31

Slide 31 text

!7BMVF w όϦϡʔΦϒδΣΫτ༻ͷ-PNCPLΞϊςʔγϣϯΛ·ͱΊͯ෇༩
 5P4USJOH
 &RVBMT"OE)BTI$PEF
 "MM"SHT$POTUSVDUPS
 'JFME%FGBVMUT NBLF'JOBMUSVF MFWFM13*7"5&ʣ
 (FUUFS

Slide 32

Slide 32 text

!%BUB w σʔλΦϒδΣΫτ༻ͷ-PNCPLΞϊςʔγϣϯΛ·ͱΊͯ෇༩
 5P4USJOH
 &RVBMT"OE)BTI$PEF
 3FRVJSFE"SHT$POTUSVDUPS
 (FUUFS
 4FUUFS

Slide 33

Slide 33 text

pOBMͳϩʔΧϧม਺WBM ʢ)BOET0Oʣ

Slide 34

Slide 34 text

!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

Slide 35

Slide 35 text

#VJMEFSύλʔϯ ʢ)BOET0Oʣ

Slide 36

Slide 36 text

!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ม਺Λ
 ݸͣͭ௥ՃͰ͖ΔΑ͏ʹ͢Δ

Slide 37

Slide 37 text

ͦͷ΄͔

Slide 38

Slide 38 text

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ʣ

Slide 39

Slide 39 text

ͱ͜ΖͰ

Slide 40

Slide 40 text

-PNCPLΛ ࠇຐज़ͱ͍͏ਓ΋ଟ͍ʜʜ

Slide 41

Slide 41 text

ݸਓతʹࠇຐज़ײ͕ڧ͍ͱࢥ͏΋ͷ w !&YUFOTJPO.FUIPE
 ม਺ͷܕΛΩʔʹͨ͠TUBUJDϝιουͷม਺΁ͷ݁߹ʢ)BOET0Oʣ w !%FMFHBUF
 ϝιουॲཧͷϑΟʔϧυΦϒδΣΫτ΁ͷҕৡʢ)BOET0Oʣ w !4OFBLZ5ISPXT
 νΣοΫྫ֎ͷඇνΣοΫྫ֎Խʢ)BOET0Oʣ w !)FMQFS
 ϔϧύʔΫϥεͷΠϯελϯεԽলུʢ)BOET0Oʣ w PO)PHF!@@ !1JZP 
 Ξϊςʔγϣϯͷ෇༩ʢ)BOET0Oʣ


Slide 42

Slide 42 text

ܹਏΑΓ தਏɾਏޱ͋ͨΓͰ ੍ޚͯ͠࢖ͬͨํ͕ ΦΠγΠʂ

Slide 43

Slide 43 text

උߟ w -PNCPLΞϊςʔγϣϯͰੜ੒͞ΕΔίʔυͱ
 ࣮ࡍʹϓϩάϥϜ͞Εͨίʔυ͕ඃͬͨͱ͖͸ɺ
 ݪଇɺϓϩάϥϜ͞Εͨίʔυ͕༏ઌ͞ΕΔ w MPNCPLFYQFSJNFOUBMύοέʔδʹଘࡏ͢Δ΋ͷ͸ɺ ެࣜݟղʹ͸ςετ൛ʢ࢖͑ͳ͍Θ͚Ͱ͸ͳ͍ʣ w *%&ͱ͔Έ߹Θ͕ͤѱ͍෦෼͸Ͳ͏ͯ͠΋͋Δ
 ʢWBM͕ಛʹτϥϒΔײʣ

Slide 44

Slide 44 text

·ͱΊ -PNCPLΛར༻͢Δ͜ͱͰɺ+BWBͷϘΠϥʔϓϨʔτͳίʔυ ͷ؆ུԽʢίʔυྔͷݮগɺه๏౷ҰʹΑΔϛεͷܰݮʣΛૂ ͑Δɻ #FBOͳͲͷσʔλΦϒδΣΫτ΍ɺόϦϡʔΦϒδΣΫτͷੜ ੒ɺσβΠϯύλʔϯͷ࣮૷ʹޮՌΛൃش͠΍͍͢ɻ *%&ͱͷ૬ੑ໰୊ɺҰׅม׵ػೳͳͲͱͷτϨʔυΦϑ͸ඞཁɻ ҆ఆͯ͠࢖͑ΔΞϊςʔγϣϯ͔Βͷಋೖ͕Φεεϝɻ
 ࠇຐज़తͳॴ΍ɺࠞཚͦ͠͏ͳॴ͸ແཧͤͣʹɻ

Slide 45

Slide 45 text

࣍ճ༧ࠂ 4QSJOH#PPUຊͱ͔ +6OJU࣮ફೖ໳ຊͱ͔
 ڭՊॻʹͨ͠ ϋϯζΦϯͱ͔ʜʁ