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

Package と Theme の作り方と PackageControl 登録までの道のり

Package と Theme の作り方と PackageControl 登録までの道のり

in Sublime Sonic 2014

14901e9e6fa8aa18f46e5fe47e15b600?s=128

astronaughts

August 13, 2014
Tweet

More Decks by astronaughts

Other Decks in Programming

Transcript

  1. Package と Theme の作り方と PackageControl 登録までの道のり うえのまさひろ Sublime Sonic 2014

  2. パッケージ開発から公開までの道のり 1. モチベーション

  3. ύοέʔδͬͯࣗ෼Ͱ࡞Δඞཁ͋Δʁ Q.

  4. ͥΜͥΜ͋Γ·ͤΜɻ A.

  5. ͩͬͯɺ

  6. ͢ͰʹࢁͷΑ͏ʹ༻ҙ͞Ε͍ͯΔ͔Βɻ 2,375 Packages 2014.8.8 ݱࡏ

  7. ͦΕͰ΋ύοέʔδΛ࡞Δ͜ͱΛ ͓͢͢Ί͍ͨ͠ཧ༝͕͋Γ·͢ɻ

  8. ΅͘ͳΓͷߟ͑Ͱ͕͢ɺ

  9. ΤσΟλ࢓ࣄ͸τίτϯޮ཰ԽͰ͖Δɻ  ҧ͏࢓ࣄͰ΋࢖͍ํ͸ύλʔϯԽ͢Δ  ͦͷύλʔϯ͸ࣗಈԽͰ͖Δ͔΋  ࣗಈԽͯ͠ୀ۶ͳ࢓ࣄΛݮΒ͢

  10. ͚ͩͲɺ

  11. ΤσΟλͷ࢖͍ํͬͯઍࠩສผͰ͢ɻ  ͦͷਓͳΓͷ࢓ࣄͷ΍Γํ͕͋Δ  ࣗ෼ʢνʔϜʣͷ࢓ࣄʹ࠷దԽͤͨ͞ ΄͏͕ྑ͍

  12. ͭ·Γɺ

  13. ୀ۶ͳ࢓ࣄΛࣗಈԽͯ͠ɺ ࣗ෼ͷ࢓ࣄΛޮ཰ԽͷͨΊͷҰखஈͱͯ͠ ύοέʔδΛ࡞Δ͜ͱΛΦεεϝ͠·͢

  14. 2. パッケージの仕組みを理解する パッケージ開発から公開までの道のり

  15. ύοέʔδͱ͸  SublimeText3 ͷ֦ுػೳͷ૯শ  ςʔϚ΍εχϖοτ΋ύοέʔδ  ଞʹ Python Ͱಈ͘ϓϥάΠϯͳͲ

     ͜ͷลΓͷఆ͕ٛΘΓͱ;ΜΘΓ  ศརͳ΋ͷ͸΄΅ Python Ͱಈ͘
  16.  PHP, Ruby ͷΑ͏ͳεΫϦϓτݴޠ  όʔδϣϯ̎ͱ͕̏͋Δ  ̏ʹ͸ԼҐޓ׵ੑ͕ͳ͍  SublimeText3

    Ͱ͸̏Λ࢖༻  ւ֎Ͱ͸Α͘࢖ΘΕ͍ͯΔݴޠ  ྫɿDropbox, Instagram, Pinterest Python ͱ͍͏ݴޠ
  17.  Python3 ͷΠϯετʔϧ͸ෆཁ  ΋ͪΖΜ SublimeText3 ্Ͱ։ൃ  ͦͷ··ಈ࡞֬ೝͰ͖Δ 

    SublimeText3 ͑͋͞Ε͹͍͍  Ͱ΋؆୯ʹ࡞ΕΔͱ͸ݴ͍·ͤΜ SublimeText3 ͰύοέʔδΛ࡞Δ
  18. python3 SublimeText3 /Packages /helloworld helloworld.py Hello World! Πϝʔδਤ

  19. 3. 実際に作ってみる パッケージ開発から公開までの道のり

  20. ·ͣ͸ Python ͰϓϥάΠϯΛॻ͍ͯΈΔ

  21. None
  22. None
  23. /Packages/User ʹอଘ͢Δɻ

  24. None
  25. ͜ͷ··Ͱ͸ίϚϯυΛ࣮ߦͰ͖ͳ͍ɻ

  26. KeyBindings - User Λઃఆͯ͠ΈΔɻ

  27. KeyBindings - User ʹ௥Ճ [ { "keys": ["super+alt+h"], "command": "example"

    } ]  ίϚϯυ͸খจࣈͰ  ޙ΄Ͳઆ໌͠·͢
  28. alt + ⌘ + h

  29. None
  30. ಈ͍ͨɻ͚ͲͳΜͰಈ͍ͨͷ͔ɻ

  31. ੜ੒͞Εͨ Python ͷίʔυ import sublime, sublime_plugin ! class ExampleCommand(sublime_plugin.TextCommand): def

    run(self, edit): self.view.insert(edit, 0, "Hello, World!")
  32. ؆୯ʹઆ໌͠·͢ɻ

  33. import sublime, sublime_plugin  Python Ͱ SublimeText Λѻ͏એݴ  ͍ΘΏΔ͓·͡ͳ͍ͬͯ͜ͱͰ

    ੜ੒͞Εͨ Python ͷίʔυ
  34. class ExampleCommand(sublime_plugin.TextCommand): def run(self, edit): self.view.insert(edit, 0, "Hello, World!") 

    Ϋϥε໊͸ίϚϯυ໊ʹͳΔ෦෼  KeyBinding ͳͲʹઃఆ͢Δ  ͨͩ͠ɺઃఆ࣌͸ Command ΑΓલͷ෦ ෼Λখจࣈʹͨ͠΋ͷ ੜ੒͞Εͨ Python ͷίʔυ
  35. class ExampleCommand(sublime_plugin.TextCommand): def run(self, edit): self.view.insert(edit, 0, "Hello, World!") 

    จࣈྻૢ࡞ͷίϚϯυͰ͋Δએݴ  ΍͍ͬͯΔ͜ͱ͸Ϋϥεͷܧঝ ੜ੒͞Εͨ Python ͷίʔυ
  36. class ExampleCommand(sublime_plugin.TextCommand): def run(self, edit): self.view.insert(edit, 0, "Hello, World!") 

    ίϚϯυ࣮ߦ࣌ʹݺͼग़͞ΕΔ  ͜ͷ഑Լʹॲཧ͍ͨ͜͠ͱΛॻ͘ ੜ੒͞Εͨ Python ͷίʔυ
  37. class ExampleCommand(sublime_plugin.TextCommand): def run(self, edit): self.view.insert(edit, 0, "Hello, World!") 

    ࠓ։͍͍ͯΔը໘Λૢ࡞͢Δ API  จ಄ʹ Hello,World Λૠೖ ੜ੒͞Εͨ Python ͷίʔυ
  38. Ҏ্ɻ

  39. ͳΔ΄ͲΘ͔ΒΜɻ

  40.  Python ͔Β SublimeText Λૢ࡞Ͱ͖Δ  API Reference ʹ໢ཏ͞Ε͍ͯΔ 

    ͨͩ͠શ෦ӳޠ Sublime API Λ஌Δ
  41. Sublime API Λ஌Δ

  42. Sublime API Λ஌Δ

  43. ͸͍ɻ

  44. ݁ہͳʹΛͲ͏ͨ͠Β͍͍͔Θ͔ΒΜɻ

  45.  ݁ߏख୳ΓͰ΍Δඞཁ͕͋Δ  ͱʹ͔͘ Try & Error ͋ΔͷΈ  ؒҧͬͯͨΒίϯιʔϧʹ

    Error SublimeText3 ͰϓϥάΠϯΛ࡞Δ
  46. ࣮ݱํ๏ΛखͬऔΓૣ͘ௐ΂Δํ๏

  47. ެ։͞Ε͍ͯΔύοέʔδΛ೷͖ݟʂ

  48. ެ։͞Ε͍ͯΔύοέʔδΛ೷͖ݟ͢Δ

  49. ެ։͞Ε͍ͯΔύοέʔδΛ೷͖ݟ͢Δ

  50. ެ։͞Ε͍ͯΔύοέʔδΛ೷͖ݟ͢Δ

  51. ΍Γ͍ͨ͜ͱΛ࣮ݱ͍ͯ͠Δ ύοέʔδͷϚωΛ͢Δͷ͕Ұ൪ૣ͍ ύοέʔδ։ൃͷํ๏Ͱ͢ɻ

  52. ࣍͸ςʔϚΛ࡞ͬͯΈΔɻ

  53. ςʔϚΛ࡞Δʹ͸͜Ε͕Ұ൪ʂ

  54. IUUQUNUIFNFFEJUPSIFSPLVBQQDPN tmTheme-Editor

  55. tmTheme-Editor ͱ͸  ΦϯϥΠϯ্Ͱ؆୯ʹ࡞੒Ͱ͖Δ  ϓϦηοτΛݺͼग़͠ฤूͰ͖Δ  ϦΞϧλΠϜͰϓϨϏϡʔՄೳ  ࡞੒ͨ͠ςʔϚ͸μ΢ϯϩʔυ

  56. /Packages/User ʹอଘ͢Δ

  57. Settings - User Ͱઃఆ͢Ε͹ OK ɻ

  58. ϓϥάΠϯ࡞ΔΑΓѹ౗తʹ؆୯ɻ

  59. 4. 公開してみる パッケージ開発から公開までの道のり

  60. GitHub Ͱެ։͢Δ४උ  ϦϙδτϦΛ࡞੒  README ʹ͸ղઆΛʢͰ͖Ε͹ӳޠ΋  LICENSE هࡌ΋๨Εͣʹ

  61. git push origin ͢Ε͹ެ։׬ྃɻ

  62. ·ͩ PackageControl ʹొ࿥͞Εͯͳ͍ɻ

  63. Ͱ΋Ͳ͏ͤͳΒੈքͷϢʔβʔʹެ։ʂ

  64. 5. PackageControl に登録 パッケージ開発から公開までの道のり

  65. PackageControl ·Ͱͷެ։ͷྲྀΕ  package_control_channel ΛϑΥʔΫ  repository.json Λमਖ਼ͯ͠ϓϧϦΫ  Ϛʔδ͞ΕΔͷΛ଴ͭ

     Ϛʔδ͞ΕΕ͹ొ࿥׬ྃ
  66. None
  67. None
  68. repository.json Λ௥Ճ  ࣗ෼ͷύοέʔδ৘ใΛొ࿥  PackageControl ͷαΠτʹܝࡌ͞ΕΔ  ৄ͍͠ϚχϡΞϧͱαϯϓϧ͕͋Δ

  69. None
  70. ੖Εͯొ࿥׬ྃʂʋ ʅ˜A ů

  71. None
  72. ͜ΕͰ Install Package ͷҰཡʹͰͯ͘Δʂ

  73. ύοέʔδΛ࡞Δͱ͍͏͜ͱ  ৘ใ͕ඇৗʹগͳ͍ʢ೔ຊޠ  ެࣜυΩϡϝϯτ͕ඍົ  ͋Δఔ౓ Python ͷษڧ΋ඞཁ 

    Ͱ΋࡞ΕΔΑ͏ʹͳΔͱ͔ͳΓศརʂ  ผʹଟػೳͳ΋ͷΛ࡞Δඞཁ͸ͳ͍  ެ։΋ؾ͕޲͍ͨΒ͢Ε͹͍͍
  74. ύοέʔδΛ࡞ͬͯΈΑ͔ͬͨ͜ͱ  Ϣʔβʔ͔Βศརͱͷ੠  Sublime ίϛϡχςΟʹࢀՃͯ͠Δײ  ͳʹΑΓ΋ษڧʹͳΔ

  75. ͜ΕΛظʹ Python ʹνϟϨϯδʂ

  76. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂʂ Package と Theme の作り方と PackageControl 登録までの道のり Sublime Sonic 2014