Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin Compiler Plugin 入門

Kotlin Compiler Plugin 入門

tommykw

May 19, 2021
Tweet

More Decks by tommykw

Other Decks in Programming

Transcript

  1. ,PUMJO$PNQJMFS1MVHJOೖ໳
    <ίωώτࣾ߹ಉ>3BEJPUBML5FDI5BML"OESPJE
    !UPNNZLX

    View Slide

  2. ͸͡Ίʹ

    View Slide

  3. ࠓ೔࿩͢͜ͱ
    w ,PUMJO$PNQJMFS1MVHJOͱ͸ʁ
    w ,PUMJO$PNQJMFS1MVHJOͷར༻έʔε
    w ,PUMJO$PNQJMFS1MVHJOͷ࢓૊Έ
    w ,PUMJO$PNQJMFS1MVHJOͷςετ
    w ·ͱΊ

    View Slide

  4. ࣗݾ঺հ
    ίωώτגࣜձࣾ"OEPSJEΤϯδχΞ
    (JUIVC 5XJUUFSɿ!UPNNZLX
    ෋ా݈ೋ

    View Slide

  5. ,PUMJO$PNQJMFS1MVHJOͱ͸ʁ

    View Slide

  6. ͦ΋ͦ΋ɺ,PUMJO$PNQJMFS1MVHJOͱ͸ʁ
    w όΠτίʔυΛ্ॻ͖Ͱ͖Δ
    w ίʔυهड़ͷࣗಈԽ͕Ͱ͖Δ
    w ,BQUͰ࢖ΘΕ͍ͯΔ
    w ·ͩ҆ఆ൛Ͱ͸ͳ͍
    w υΩϡϝϯτ͕ͳ͍

    View Slide

  7. ͦ΋ͦ΋ɺ,PUMJO$PNQJMFS1MVHJOͱ͸ʁ
    w όΠτίʔυΛ্ॻ͖Ͱ͖Δ
    w ίʔυهड़ͷࣗಈԽ͕Ͱ͖Δ
    w ,BQUͰ࢖ΘΕ͍ͯΔɺ$PNQPTFͰ΋ར༻͞Ε͍ͯΔ
    w ·ͩ҆ఆ൛Ͱͳ͍
    w υΩϡϝϯτ͕ͳ͍
    ͋·ΓΑ͘Θ͔Βͳ͍ͳ😅

    View Slide

  8. ࠓ೔࿩͢͜ͱ
    w ,PUMJO$PNQJMFS1MVHJOͱ͸ʁ
    w ,PUMJO$PNQJMFS1MVHJOͷར༻έʔε
    w ,PUMJO$PNQJMFS1MVHJOͷ࢓૊Έ
    w ,PUMJO$PNQJMFS1MVHJOͷςετ
    w ·ͱΊ

    View Slide

  9. ,PUMJO$PNQJMFS1MVHJOͷར༻έʔε

    View Slide

  10. ར༻έʔεΛجʹཧղΛਂΊΔ
    w +FUQBDL$PNQPTF
    w BBGBOBTFWTFLSFU
    w "INFE.PVSBEOPDPQZ

    View Slide

  11. ར༻έʔεΛجʹཧղΛਂΊΔ
    w +FUQBDL$PNQPTF
    w !$PNQPTBCMFͰར༻͞Ε͍ͯΔ
    w BBGBOBTFWTFLSFU
    w "INFE.PVSBEOPDPQZ

    View Slide

  12. ར༻έʔεΛجʹཧղΛਂΊΔ
    w +FUQBDL$PNQPTF
    w !$PNQPTBCMFͰར༻͞Ε͍ͯΔ
    w BBGBOBTFWTFLSFU
    w UP4USJOH
    ͷ಺༰Λॻ͖׵͑Δ
    w "INFE.PVSBEOPDPQZ
    w DPQZ
    Λ࡟আ͢Δ

    View Slide

  13. BBGBOBTFWTFLSFUͷར༻

    View Slide

  14. BBGBOBTFWTFLSFUͷར༻
    password͕දࣔ͞ΕΔ

    View Slide

  15. BBGBOBTFWTFLSFUͷར༻

    View Slide

  16. BBGBOBTFWTFLSFUͷར༻
    password͕ృΓͭͿ͞
    Ε͍ͯΔ

    View Slide

  17. ར༻έʔεΛجʹཧղΛਂΊΔ
    w +FUQBDL$PNQPTF
    w !$PNQPTBCMFͰར༻͞Ε͍ͯΔ
    w BBGBOBTFWTFLSFU
    w UP4USJOH
    Λॻ͖׵͍͑ͯΔ
    w "INFE.PVSBEOPDPQZ
    w DPQZ
    Λ࡟আ͍ͯ͠Δ

    View Slide

  18. "INFE.PVSBEOPDPQZͷར༻

    View Slide

  19. "INFE.PVSBEOPDPQZͷར༻
    pass͕දࣔ͞ΕΔ

    View Slide

  20. "INFE.PVSBEOPDPQZͷར༻

    View Slide

  21. "INFE.PVSBEOPDPQZͷར༻
    copy()͕࡟আ͞Εͨ݁
    ՌΤϥʔͱͳΔ

    View Slide

  22. ͜͜·ͰΛ౿·͑ͯɺ,PUMJO$PNQJMFS1MVHJOͱ͸ʁ
    w όΠτίʔυΛ্ॻ͖Ͱ͖Δ
    w طଘͷػೳΛฤूͰ͖Δ
    w ྫ͑͹ɺUP4USJOH
    ɺDPQZ
    ͳͲΛฤूͰ͖ͨ
    w ίʔυهड़ͷࣗಈԽ͕Ͱ͖Δ
    w ΞϊςʔγϣϯͳͲΛτϦΨʔʹͯ͠࠶ར༻Մೳ
    w ,BQUͰ࢖ΘΕ͍ͯΔ
    w ·ͩ҆ఆ൛Ͱͳ͍
    w υΩϡϝϯτ͕ͳ͍

    View Slide

  23. Ͱ͖Δ͜ͱͷΠϝʔδͰ͖·ͨ͠ʁ
    w όΠτίʔυΛ্ॻ͖Ͱ͖Δ
    w όΠτίʔυΛ্ॻ͖Ͱ͖ΔͷͰɺطଘͷػೳΛฤूͰ͖Δ
    w UP4USJOH
    ͳͲ͍͡Δ͜ͱ͕Ͱ͖ͨ
    w ίʔυهड़ͷࣗಈԽ͕Ͱ͖Δ
    w ΞϊςʔγϣϯΛτϦΨʔʹࣗಈԽ͍ͯ͠Δ
    w ,BQUͰ࢖ΘΕ͍ͯΔ
    w ·ͩ҆ఆ൛Ͱͳ͍
    w υΩϡϝϯτ͕ͳ͍
    ͜ͷຐ๏ͷΑ͏ͳػೳ͸ͲΜͳ࢓૊Έʁ🧙

    View Slide

  24. ࠓ೔࿩͢͜ͱ
    w ,PUMJO$PNQJMFS1MVHJOͱ͸ʁ
    w ,PUMJO$PNQJMFS1MVHJOͷར༻έʔε
    w ,PUMJO$PNQJMFS1MVHJOͷ࢓૊Έ
    w ,PUMJO$PNQJMFS1MVHJOͷςετ
    w ·ͱΊ

    View Slide

  25. ,PUMJO$PNQJMFS1MVHJOͷ࢓૊Έ

    View Slide

  26. ,PUMJO$PNQJMFS1MVHJOͷ࢓૊Έ
    (SBEMF1MVHJO
    ,PUMJO$PNQJMFS1MVHJO
    5SFF7JTJUPS
    (SBEMF1MVHJO
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  27. ࢓૊Έɿ(SBEMF1MVHJO
    w ,PUMJO(SBEMF4VC1MVHJOΛհͯ͠ɺ
    ,PUMJO$PNQJMFS1MVHJOΛݺͼग़͢
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  28. ࢓૊Έɿ,PUMJO$PNQJMFS1MVHJO
    w $PNNBOE-JOF1SPDFTPSɺ
    $PNQPOFOFU3FHJTUBSΛఆٛ͢Δ
    w "OBMZTJT)BOEMFS&YUFOTJPOΛհͯ͠
    ίʔυղੳ͢ΔͨΊͷ5SFF7JTJUPSΛ
    ݺͼग़͢
    w ղੳͨ͠಺༰Λ೚ҙͷܗࣜʹมߋ͠ɺ
    $PMMFDUJPO,U'JMFͱͯ͠౉͢
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  29. ࢓૊Έɿ5SFF7JTJUPS
    w ࣮ߦ͞ΕͨίʔυͷϑΝΠϧɺΫϥ
    εɺϓϩύςΟɺؔ਺ΛղੳͰ͖Δ
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  30. ࢓૊Έɿ(SBEMF
    w ੒Ռ෺Λൃߦ͢Δ
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  31. αϯϓϧίʔυ
    w IUUQTHJUIVCDPNUPNNZLXLPUMJODPNQJMFSQMVHJOTBNQMF
    w !)FMMP8PSMEΞϊςʔγϣϯΛτϦΨʔʹɺ)FMMP8PSMEΛग़ྗ͢
    ΔαϯϓϧϓϥάΠϯ

    View Slide

  32. αϯϓϧίʔυ(SBEMF1MVHJO
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  33. αϯϓϧίʔυ(SBEMF1MVHJO
    KotlinGradleSubPlugin
    Λఆٛ͢Δ
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  34. αϯϓϧίʔυ,PUMJO$PNQJMFS1MVHJO
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  35. αϯϓϧίʔυ,PUMJO$PNQJMFS1MVHJO
    CommandLineProcesso
    rΛఆٛ͢Δ
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  36. αϯϓϧίʔυ,PUMJO$PNQJMFS1MVHJO
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  37. αϯϓϧίʔυ,PUMJO$PNQJMFS1MVHJO
    ComponentResitrarΛఆ
    ٛ͢Δ
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  38. αϯϓϧίʔυ,PUMJO$PNQJMFS1MVHJO
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  39. αϯϓϧίʔυ,PUMJO$PNQJMFS1MVHJO
    ೖྗίʔυΛղੳ͠ɺ೚
    ҙͷίʔυʹஔ͖׵͑Δ
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  40. αϯϓϧίʔυ,PUMJO$PNQJMFS1MVHJO
    ೖྗίʔυΛղੳ͠ɺ೚
    ҙͷίʔυʹஔ͖׵͑Δ
    ஔ͖׵͍͑ͨɺKtFileΛ
    ࡞੒͢Δ
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  41. αϯϓϧίʔυ5SFF7JTJUPS
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  42. αϯϓϧίʔυ5SFF7JTJUPS
    @HelloWorld͕ଘࡏ͢Δ
    ͔νΣοΫ͢Δ
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  43. αϯϓϧίʔυ5SFF7JTJUPS
    @HelloWorld͕ଘࡏ͢Δ
    ͔νΣοΫ͢Δ
    @HelloWorld͕͋Ε͹
    println(“Hello Worold”)Λૠೖ
    ͢Δ
    ग़యɿhttps://www.droidcon.com/media-detail?video=481164487

    View Slide

  44. αϯϓϧίʔυ࣮ߦ݁Ռ

    View Slide

  45. αϯϓϧίʔυ࣮ߦ݁Ռ
    @HelloWorldΞϊςʔγϣϯΛఆ
    ٛͯ͠ɺmain()Λ࣮ߦ͢Δ

    View Slide

  46. αϯϓϧίʔυ࣮ߦ݁Ռ
    ࣮ߦ݁Ռͱͯ͠ɺHello
    World͕දࣔ͞ΕΔ
    @HelloWorldΞϊςʔγϣϯΛఆ
    ٛͯ͠ɺmain()Λ࣮ߦ͢Δ

    View Slide

  47. ࠓ೔࿩͢͜ͱ
    w ,PUMJO$PNQJMFS1MVHJOͱ͸ʁ
    w ,PUMJO$PNQJMFS1MVHJOͷར༻έʔε
    w ,PUMJO$PNQJMFS1MVHJOͷ࢓૊Έ
    w ,PUMJO$PNQJMFS1MVHJOͷςετ
    w ·ͱΊ

    View Slide

  48. ,PUMJO$PNQJMFS1MVHJOͷςετ

    View Slide

  49. LPUMJODPNQJMFUFTUJOHϥΠϒϥϦΛ࢖͏
    w IUUQTHJUIVCDPNUTDIVDIPSUEFWLPUMJODPNQJMFUFTUJOH
    w ,PUMJO+BWBίʔυΛίϯύΠϧ͢ΔϥΠϒϥϦ

    View Slide

  50. LPUMJODPNQJMFUFTUJOHϥΠϒϥϦΛ࢖͏

    View Slide

  51. LPUMJODPNQJMFUFTUJOHϥΠϒϥϦΛ࢖͏
    @NoCopy͕͋Ε͹copy()
    Λ࡟আ͢Δςετ

    View Slide

  52. LPUMJODPNQJMFUFTUJOHϥΠϒϥϦΛ࢖͏
    @NoCopy͕͋Ε͹copy()
    Λ࡟আ͢Δςετ
    ίϯύΠϧ༻ͷKotlinϑΝΠ
    ϧΛੜ੒͠ɺίϯύΠϧ͢
    Δ

    View Slide

  53. LPUMJODPNQJMFUFTUJOHϥΠϒϥϦΛ࢖͏
    @NoCopy͕͋Ε͹copy()
    Λ࡟আ͢Δςετ
    ίϯύΠϧ༻ͷKotlinϑΝΠ
    ϧΛੜ੒͠ɺίϯύΠϧ͢
    Δ
    ίϯύΠϧ݁ՌΛνΣοΫ
    ͢Δ

    View Slide

  54. LPUMJODPNQJMFUFTUJOHͷDPNQJMF
    ͷεςοϓ
    w ελϒΛੜ੒͢Δ
    w BQUΛ࣮ߦ͢Δ
    w ,PUMJO+BWBιʔεΛίϯύΠϧ͢Δ

    View Slide

  55. ·ͱΊ

    View Slide

  56. ·ͱΊ
    w ,PUMJOϩʔυϚοϓʹهࡌͷ௨Γɺ,PUMJO$PNQJMFS1MVHJO͸҆ఆ൛
    ʹ޲͚ͯ։ൃத
    w ΞϯυΩϡϝϯτͳͷͰ։ൃ͸ख୳Γ😢
    w ࡞੒ϫʔΫϑϩʔ΍ςετͳͲશମͷྲྀΕΛ঺հ

    View Slide

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

    View Slide