$30 off During Our Annual Pro Sale. View Details »

IntelliJ Plugin開発入門

tommykw
February 18, 2017

IntelliJ Plugin開発入門

tommykw

February 18, 2017
Tweet

More Decks by tommykw

Other Decks in Programming

Transcript

  1. Ո଒ͷຖ೔Λ΋ͬͱসإʹɻ
    ϚϚϦ
    ίωώτגࣜձࣾ
    *OUFMMJ+1MVHJO։ൃೖ໳

    View Slide

  2. ϚϚϦ
    ϓϩϑΟʔϧ
    ෋ా݈ೋ
    !UPNNZLX
    !UPNNZLX
    $POOFIJUP JOD"OESPJE&OHJOFFS

    View Slide

  3. ϚϚϦ
    ΞδΣϯμ
    w *OUFMMJ+1MVHJOʹ͍ͭͯ
    w 0QUJNJ[F*NQPSUTʹ͍ͭͯ
    w 0QUJNJ[F3FTPVSDFTʹ͍ͭͯ

    View Slide

  4. Ո଒ͷຖ೔Λ΋ͬͱসإʹɻ
    ϚϚϦ
    ίωώτגࣜձࣾ
    *OUFMMJ+1MVHJOʹ͍ͭͯ

    View Slide

  5. ϚϚϦ
    *OUFMMJ+1MVHJOʹ͍ͭͯ
    w *OUFMMJ+1MVHJOʹ͍ͭͯ
    w 0QUJNJ[F*NQPSUTʹ͍ͭͯ
    w 0QUJNJ[F3FTPVSDFTʹ͍ͭͯ

    View Slide

  6. ϚϚϦ
    *OUFMMJ+1MVHJOʹ͍ͭͯ
    ίʔυิ׬ɺݕࠪɺϦϑΝΫλϦϯάɺϦιʔε
    ͷ࠷దԽͳͲɺଟ͘ͷػೳ͕͋ΓɺݴޠʹಛԽ͠
    ͨ*%&ɺྫ͑͹3VCZ.JOFɺ1IQ4UPSNɺ
    "OESPJE4UVEJPͳͲ༷ʑͳ1MVHJO͕͋Γ·͢ɻ
    *OUFMMJ+1MVHJOʹ͍ͭͯ

    View Slide

  7. ϚϚϦ
    *OUFMMJ+1MVHJOػೳҰཡ
    ػೳҰཡ
    w *OUFOUJPO"DUJPOT
    w $PEF*OTQFDUJPO
    w "DUJPO4ZTUFN

    View Slide

  8. ϚϚϦ
    *OUFMMJ+1MVHJOػೳҰཡ
    ػೳҰཡ
    w *OUFOUJPO"DUJPOT
    w $PEF*OTQFDUJPO
    w "DUJPO4ZTUFN

    View Slide

  9. ϚϚϦ
    *OUFOUJPO"DUJPOT
    *OUFOUJPO"DUJPOT
    ߏจ্ͷ໰୊Λվળɺ·ͨ͸࠷దԽ͢ΔͨΊͷ
    ద੾ͳҙਤಈ࡞ΛఏҊ͠·͢ɻ"MU&OUFSγϣʔ
    τΧοτΛ༻͍ͯૢ࡞͢Δ͜ͱ͕Ͱ͖·͢ɻ

    View Slide

  10. ϚϚϦ
    *OUFOUJPO"DUJPOT
    *OUFOUJPO"DUJPOT

    View Slide

  11. ϚϚϦ
    *OUFOUJPO"DUJPOT
    *OUFOUJPO"DUJPOT

    View Slide

  12. ϚϚϦ
    *OUFOUJPO"DUJPOT
    *OUFOUJPO"DUJPOT

    View Slide

  13. ϚϚϦ
    $PEF*OTQFDUJPO
    ػೳҰཡ
    w *OUFOUJPO"DUJPOT
    w $PEF*OTQFDUJPO
    w "DUJPO4ZTUFN

    View Slide

  14. ϚϚϦ
    $PEF*OTQFDUJPO
    $PEF*OTQFDUJPO
    ίϯύΠϧΛ͢ΔલʹಛఆͷίʔυͷݕࠪΛߦ͍ɺ
    ΤϥʔɺܯࠂɺϓϩδΣΫτݻ༗ͷن໿ҧ൓ͳͲ
    Λࢦఠ͠·͢ɻ*OUFOUJPO"DUJPOT "MU&OUFS
    Ͱ
    ࢦఠ͞Εͨίʔυͷमਖ਼Λߦ͏͜ͱ͕Ͱ͖·͢ɻ

    View Slide

  15. ϚϚϦ
    $PEF*OTQFDUJPO
    $PEF*OTQFDUJPO

    View Slide

  16. ϚϚϦ
    $PEF*OTQFDUJPO
    $PEF*OTQFDUJPO

    View Slide

  17. ϚϚϦ
    $PEF*OTQFDUJPO
    $PEF*OTQFDUJPO

    View Slide

  18. ϚϚϦ
    $PEF*OTQFDUJPO
    $PEF*OTQFDUJPO

    View Slide

  19. ϚϚϦ
    "DUJPO4ZTUFN
    ػೳҰཡ
    w *OUFOUJPO"DUJPOT
    w $PEF*OTQFDUJPO
    w "DUJPO4ZTUFN

    View Slide

  20. ϚϚϦ
    "DUJPO4ZTUFN
    *%&"ͷϝχϡʔ΍πʔϧόʔʹΧελϜΞΠς
    ϜΛ௥Ճ͢Δ͜ͱ͕Ͱ͖·͢ɻ"O"DUJPOΫϥε
    Λ೿ੜͨ͠΋ͷͰɺϝχϡʔ߲໨·ͨ͸πʔϧόʔ
    Ϙλϯ͕બ୒͞Εͨͱ͖ʹ࣮ߦϝιου͕ݺͼ
    ग़͞Ε·͢ɻ
    "DUJPO4ZTUFN

    View Slide

  21. ϚϚϦ
    "DUJPO4ZTUFN
    "DUJPO4ZTUFN

    View Slide

  22. Ո଒ͷຖ೔Λ΋ͬͱসإʹɻ
    ϚϚϦ
    ίωώτגࣜձࣾ
    0QUJNJ[F*NQPSUTʹ͍ͭͯ

    View Slide

  23. ϚϚϦ
    0QUJNJ[F*NQPSUTʹ͍ͭͯ
    w *OUFMMJ+1MVHJOʹ͍ͭͯ
    w 0QUJNJ[F*NQPSUTʹ͍ͭͯ
    w 0QUJNJ[F3FTPVSDFTʹ͍ͭͯ

    View Slide

  24. ϚϚϦ
    0QUJNJ[F*NQPSUTʹ͍ͭͯ
    +BWBɺ,PUMJOͷJNQPSUΩʔϫʔυʹಛԽͨ͠
    "DUJPO1MVHJOͰɺॏෳͨ͠JNQPSU΍ະ࢖༻ͷ
    JNQPSUΛҰׅͰૢ࡞͢Δ͜ͱ͕Ͱ͖·͢ɻ·ͨ
    ͸JNQPSUͷॱংͷ੔ཧΛߦ͍·͢ɻ
    0QUJNJ[F*NQPSUTʹ͍ͭͯ

    View Slide

  25. ϚϚϦ
    0QUJNJ[F*NQPSUT
    0QUJNJ[F*NQPSUT

    View Slide

  26. ϚϚϦ
    0QUJNJ[F*NQPSUT
    0QUJNJ[F*NQPSUT

    View Slide

  27. ϚϚϦ
    0QUJNJ[F*NQPSUT
    0QUJNJ[F*NQPSUT

    View Slide

  28. ϚϚϦ
    "OESPJEͷϦιʔε؅ཧ
    "OESPJEʹ͓͚ΔϦιʔε؅ཧ

    View Slide

  29. ϚϚϦ
    "OESPJEͷϦιʔε؅ཧ
    Ϧιʔε؅ཧΛ؆୯ʹ͍ͨ͠
    ઌ΄ͲͷϦιʔείʔυͷBUUSJCVUF͸ɺίʔυ
    ͱҟͳΓɺະ࢖༻࣌ʹ৭͕มΘΓ·ͤΜɻͲͷ
    Ϧιʔε͕ະ࢖༻Ͱ͋Δͷ͔ௐ΂Δͷׂ͕ͱ໘౗
    ͍͘͞Ͱ͢ɻग़དྷΕ͹ॱং΋ἧ͍͑ͨ

    View Slide

  30. ϚϚϦ
    "OESPJEͷϦιʔε؅ཧ
    0QUJNJ[F*NQPSUTͷϦιʔε൛͕͋Δͱ
    ͍͍Ͷʂʂ

    View Slide

  31. Ո଒ͷຖ೔Λ΋ͬͱসإʹɻ
    ϚϚϦ
    ίωώτגࣜձࣾ
    0QUJNJ[F3FTPVSDFTʹ͍ͭͯ

    View Slide

  32. ϚϚϦ
    0QUJNJ[F3FTPVSDFTʹ͍ͭͯ
    w *%&"1MVHJOʹ͍ͭͯ
    w 0QUJNJ[F*NQPSUTʹ͍ͭͯ
    w 0QUJNJ[F3FTPVSDFTʹ͍ͭͯ

    View Slide

  33. ϚϚϦ
    0QUJNJ[F3FTPVSDFT1MVHJO
    ػೳͱͯ͠͸ɺະ࢖༻ͷϦιʔεͷ࡟আ͕ϝΠϯ
    ͷػೳͰ͢ɻকདྷతʹ͸0QUJNJ[FJNQPSUTͷΑ
    ͏ͳॱংௐ੔΍ະ࢖༻ϦιʔεͷΧϥʔΛάϨʔ
    ʹͨ͠ΓɺϓϨϏϡʔը໘Λग़͍ͨ͠ͱࢥͬͯ
    ͍·͢ɻ͜ΕΛ࡞Γ͍ͨʂ
    0QUJNJ[F3FTPVSDFT1MVHJO

    View Slide

  34. ϚϚϦ
    3FNPWF6OVTFE3FTPVSDFT
    ࣮͸ʮ3FNPWF6OVTFE3FTPVSDFTʯͱ
    ͍͏ػೳ͕͢Ͱʹ͋ͬͨʂ

    View Slide

  35. ϚϚϦ
    3FNPWF6OVTFE3FTPVSDFT
    3FNPWF6OVTFE3FTPVSDFT

    View Slide

  36. ϚϚϦ
    3FNPWF6OVTFE3FTPVSDFT
    ෆཁͳϦιʔεͷ࡟আΛߦ͏"DUJPO1MVHJOɻ

    ෆཁͳQOH΍YNM಺ͷBUUSJCVUFͷ࡟আ͕Ͱ͖ɺ
    "OESPJE4UVEJPʹಋೖ͞Ε͍ͯͨɻ
    3FNPWF6OVTFE3FTPVSDFT

    View Slide

  37. ϚϚϦ
    3FNPWF6OVTFE3FTPVSDFT
    ϓϩμΫτͰ࣮ࡍʹࢼ͕ͨ͠ಈ͔ͳ͍ɻ
    খ͍͞αϯϓϧͩͱͪΌΜͱಈ͘ͷͰɺ
    Կ͔όά͕͋ΔΜͰ͠ΐ͏͔ʼʻ
    3FNPWF6OVTFE3FTPVSDFT

    View Slide

  38. ϚϚϦ
    *OUFMMJ+1MVHJO࡞੒
    *OUFMMJ+1MVHJOΛ࡞ͬͯΈͨʂ

    View Slide

  39. ϚϚϦ
    0QUJNJ[F3FTPVSDFTͷίʔυ
    3FTPVSDF0QUJNJ[F"DUJPO

    View Slide

  40. ϚϚϦ
    0QUJNJ[F3FTPVSDFTͷಈ࡞
    ͜Μͳײ͡ͷಈ࡞Ͱ͢ʂ

    View Slide

  41. ϚϚϦ
    0QUJNJ[F3FTPVSDFTͷಈ࡞
    0QUJNJ[F3FTPVSDFT

    View Slide

  42. ϚϚϦ
    0QUJNJ[F3FTPVSDFTͷಈ࡞
    0QUJNJ[F3FTPVSDFT

    View Slide

  43. ϚϚϦ
    0QUJNJ[F3FTPVSDFTͷಈ࡞
    0QUJNJ[F3FTPVSDFT

    View Slide

  44. ϚϚϦ
    0QUJNJ[F3FTPVSDFT
    YNMɺLUϑΝΠϧɺKBWBϑΝΠϧΛૢ࡞͢Δʹ͋
    ͨΓɺ7JSUVBM'JMFͱ1TJ'JMFΛ࢖ͬͯૢ࡞͍ͯ͠
    ·ͨ͠ɻͦΕͧΕͷػೳ͍ͭͯ֬ೝ͠·͢ɻ

    View Slide

  45. ϚϚϦ
    7JSUVBM'JMF
    7JSUVBM'JMF
    Ծ૝ϑΝΠϧγεςϜͰɺ*OUFMMJ+ϓϥοτϑΥʔ
    ϜͷίϯϙʔωϯτͰϑΝΠϧΛॲཧ͢ΔͨΊʹ
    ར༻͠·͢ɻ

    View Slide

  46. ϚϚϦ
    14*'JMFT
    14*'JMFT
    1SPHSBN4USVDUVSF*OUFSGBDFͰɺݴޠϑΝΠ
    ϧͷFMFNFOUΛද͠ɺ9NM'JMFɺ1TJ+BWB'JMFɺ
    ,U'JMFͳͲ͕͋Γ·͢ɻϑΝΠϧͷಡΈࠐΈ΍ղ
    ੳΛߦ͏͜ͱ͕Ͱ͖·͢ɻ

    View Slide

  47. ϚϚϦ
    ࡶײ
    ࡶײ
    w ͦ͜·Ͱ։ൃϋʔυϧ͸ߴ͘ͳ͍
    w αϯϓϧ͕গͳ͍ͷͰগ͠େม͔΋͠Εͳ͍
    w ίʔυΛಡΉ͜ͱ͸ଟͦ͏
    w υΩϡϝϯτ͕ॆ࣮͍ͯ͠ͳ͍
    w νϟϯε͸͋Γͦ͏
    w ,PUMJOʹίϯτϦϏϡʔτνϟϯε
    w ϥΠϒϥϦͷ1MVHJOΛ࡞Δ

    View Slide

  48. Ո଒ͷຖ೔Λ΋ͬͱসإʹɻ
    ϚϚϦ
    ίωώτגࣜձࣾ
    *OUFMMJ+1MVHJO։ൃೖ໳

    View Slide

  49. Ո଒ͷຖ೔Λ΋ͬͱসإʹɻ
    ϚϚϦ
    ίωώτגࣜձࣾ
    ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide