Slide 1

Slide 1 text

,PUMJO$PNQJMFS1MVHJOͷϫʔΫϑϩʔΛ஌Δ QPUBUPUJQTJ04"OESPJE։ൃ5JQTڞ༗ձ !UPNNZLX

Slide 2

Slide 2 text

ࣗݾ঺հ w ෋ా݈ೋ!UPNNZLX w ίωώτגࣜձࣾ w "OESPJEΤϯδχΞ

Slide 3

Slide 3 text

ࠓ೔࿩͢͜ͱ

Slide 4

Slide 4 text

ࠓ೔࿩͢͜ͱ w ,PUMJO$PNQJMFS1MVHJOͱ͸ʁ w ,PUMJO$PNQJMFS1MVHJOͷϫʔΫϑϩʔ w αϯϓϧΛ࡞ͬͯΈΔ

Slide 5

Slide 5 text

,PUMJO$PNQJMFS1MVHJOͱ͸ʁ

Slide 6

Slide 6 text

,PUMJO$PNQJMFS1MVHJOͱ͸ʁ w όΠτίʔυΛ্ॻ͖Ͱ͖Δ w ίʔυهड़ͷࣗಈԽ͕Ͱ͖Δ w ,BQUͰ࢖ΘΕ͍ͯΔ w υΩϡϝϯτ͕ͳ͍ͷͰ஫ҙ͕ඞཁ

Slide 7

Slide 7 text

,PUMJO$PNQJMFS1MVHJOͱ͸ʁ w όΠτίʔυΛ্ॻ͖Ͱ͖Δ w ίʔυهड़ͷࣗಈԽ͕Ͱ͖Δ w ,BQUͰ࢖ΘΕ͍ͯΔ w υΩϡϝϯτ͕ͳ͍ͷͰ஫ҙ͕ඞཁ ࡞Γํ͕શ͘Θ͔Βͳ͍ʜ υΩϡϝϯτ͕ͳ͍ͱ͍͏͜ͱ͸ίʔυΛ ಡΉ͔͠ͳ͍ͷ͔ʜ

Slide 8

Slide 8 text

࿕ใͰ͢ʂ

Slide 9

Slide 9 text

IUUQTXXXESPJEDPODPNNFEJBEFUBJM WJEFP

Slide 10

Slide 10 text

IUUQTXXXESPJEDPODPNNFEJBEFUBJM WJEFP ,PUMJO$PNQJMFS1MVHJOͷϫʔΫϑϩʔ͕ɺ Θ͔Γ΍͘͢·ͱΊΒΕ͍ͯͯײँʂ ॳΊͯ,PUMJO$PNQJMFS1MVHJOΛ࡞ͬͯΈ͍ͨͱࢥ͏ ํʹ͓͢͢ΊͷಈըͰ͢ɻ

Slide 11

Slide 11 text

,PUMJO$PNQJMF1MVHJOͷϫʔΫϑϩʔ

Slide 12

Slide 12 text

,PUMJO$PNQJMFS1MVHJOΛ࡞ΔͨΊͷͭͷεςοϓ Kotlin Compiler Plugin - Write your own code transformer without dealing with bytecode By Jingbo Yang  (SBEMF1MVHJO  ,PUMJO$PNQJMFS1MVHJO  5SFF7JTJUPS

Slide 13

Slide 13 text

(SBEMF1MVHJO  ,PUMJO(SBEMF4VC1MVHJOΛհ ͯ͠,PUMJO$PNQJMFS1MVHJO Λݺͼग़͢  ੒Ռ෺Λൃߦ͢Δ Kotlin Compiler Plugin - Write your own code transformer without dealing with bytecode By Jingbo Yang

Slide 14

Slide 14 text

,PUMJO$PNQJMFS1MVHJO  $PNNBOE-JOF1SPDFTTPSɺ $PNQPOFOU3FHJTUSBSΛఆٛ ͢Δ  "OBMZTJT)BOEMFS&YUFOTJPOΛ հͯ͠ίʔυղੳ͢ΔͨΊͷ 5SFF7JTJUPSΛݺͼग़͢  ղੳͨ͠಺༰Λ೚ҙͷܗʹม ߋ͠ɺ$PMMFDUJPO,U'JMFͱ ͯ͠౉͢ Kotlin Compiler Plugin - Write your own code transformer without dealing with bytecode By Jingbo Yang

Slide 15

Slide 15 text

5SFF7JTJUPS  ࣮ߦ͞ΕͨϑΝΠϧɺΫϥ εɺؔ਺ɺϓϩύςΟͳͲ ΛղੳͰ͖Δ Kotlin Compiler Plugin - Write your own code transformer without dealing with bytecode By Jingbo Yang

Slide 16

Slide 16 text

αϯϓϧΛ࡞ͬͯΈΔ

Slide 17

Slide 17 text

ؔ਺ʹ!)FMMP8PSME͕෇Ճ͞Ε͍ͯΕ͹ɺ ʮ)FMMP8PSMEʯΛग़ྗ͢Δ ࣮ߦ݁Ռ ࠓճͷΰʔϧ IUUQTHJUIVCDPNUPNNZLXLPUMJO DPNQJMFSQMVHJOTBNQMF

Slide 18

Slide 18 text

αϯϓϧͷ࡞੒ɾ࣮ߦεςοϓ  (SBEMF1MVHJOͷ࡞੒  ,PUMJO$PNQJMFS1MVHJOͷ࡞੒  $PNNBOE-JOF1SPDFTTPSͷ࡞੒  $PNQPOFOU3FHJTUSBSͷ࡞੒  1MVHJO&YUFOTJPOͷ࡞੒  5SFF7JTJUPSͷ࡞੒  )FMMP8PSME1MVHJOͷQVCMJTIλεΫΛ࣮ߦ  )FMMP8PSME1MVHJO4BNQMFͷCVJMEλεΫΛ࣮ߦ  )FMMP8PSME1MVHJO4BNQMFͷ.BJOLUΛ࣮ߦ

Slide 19

Slide 19 text

(SBEMF1MVHJOͷ࡞੒

Slide 20

Slide 20 text

(SBEMF1MVHJOͷ࡞੒ʢTFSWJDFTʹࢦఆ͢Δʣ

Slide 21

Slide 21 text

(SBEMF1MVHJOͷ࡞੒ʢCVJMEHSBEMFͷઃఆʣ

Slide 22

Slide 22 text

,PUMJO$PNQJMFS1MVHJOͷ࡞੒ʢ$PNNBOE-JOF1SPDFTTPSʣ

Slide 23

Slide 23 text

,PUMJO$PNQJMFS1MVHJOͷ࡞੒ʢTFSWJDFTʹࢦఆ͢Δʣ

Slide 24

Slide 24 text

,PUMJO$PNQJMFS1MVHJOͷ࡞੒ʢ$PNQPOFOU3FHJTUSBSʣ

Slide 25

Slide 25 text

,PUMJO$PNQJMFS1MVHJOͷ࡞੒ʢTFSWJDFTʹࢦఆ͢Δʣ

Slide 26

Slide 26 text

,PUMJO$PNQJMFS1MVHJOͷ࡞੒ʢ1MVHJO&YUFOTJPOʣ

Slide 27

Slide 27 text

5SFF7JTJUPSͷ࡞੒

Slide 28

Slide 28 text

)FMMP8PSME1MVHJOͷQVCMJTIλεΫΛ࣮ߦ

Slide 29

Slide 29 text

)FMMP8PSME1MVHJO4BNQMFͷCVJMEλεΫΛ࣮ߦ

Slide 30

Slide 30 text

)FMMP8PSME1MVHJO4BNQMFͷ.BJOLUΛ࣮ߦ

Slide 31

Slide 31 text

·ͱΊ

Slide 32

Slide 32 text

·ͱΊ w υΩϡϝϯτ͕ͳ͍ͷͰ஫ҙ w ,PUMJO$PNQJMFS1MVHJO࡞੒ͷϫʔΫϑϩʔΛ঺հ w (SBEMF1MVHJO w ,PUMJO$PNQJMFS1MVHJO w 5SFF7JTJUPS w ϫʔΫϑϩʔΛ஌Δ͜ͱͰશମ૾Λ஌Δ

Slide 33

Slide 33 text

ࢀߟࢿྉ • Kotlin Compiler Plugin - Write your own code transformer without dealing with bytecode https://www.droidcon.com/media-detail? video=481164487 • Writing Kotlin Compiler Plugins with Arrow Meta https:// speakerdeck.com/heyitsmohit/writing-kotlin-compiler-plugins-with-arrow- meta?slide=172 • Kotlin metaprogramming with kotlinpoet https://kotlin.christmas/2020/14

Slide 34

Slide 34 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ