Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Package と Theme の作り方と PackageControl 登録までの道のり
Search
astronaughts
August 13, 2014
Programming
0
310
Package と Theme の作り方と PackageControl 登録までの道のり
in Sublime Sonic 2014
astronaughts
August 13, 2014
Tweet
Share
More Decks by astronaughts
See All by astronaughts
Sublime Text の プラグイン開発の方法
astronaughts
0
450
Sublime Text を 俺色に染める方法
astronaughts
2
840
GRUNT のあんなこといいなできたらいいな
astronaughts
14
2.1k
Re:Development of ChatWork Apps
astronaughts
1
2.1k
Rapid Prototyping by TiShadow
astronaughts
4
2.7k
Sublime Text 2 for PHP Development
astronaughts
0
230
Titanium ならここまでできる !! Serverside non-programing で作る お手軽 Social Application
astronaughts
1
330
Fathm Like ScrollableView Implementaion for TItanium mobile
astronaughts
3
3.8k
Other Decks in Programming
See All in Programming
Behind VS Code Extensions for JavaScript / TypeScript Linnting and Formatting
unvalley
5
920
大規模UIKitベースアプリへのTCAの段階的導入/gradual-adoption-of-tca-in-a-large-scale-uikit-based-app
takehilo
1
180
新宿ダンジョンを可視化してみた
satoshi7190
2
260
Tailwind CSSを本気でカスタマイズする方法
fsubal
13
5.3k
エンターテイメント業界で利用されるAWS
demuyan
0
210
Hanami and htmx
bkuhlmann
0
210
Fragment Composition of GraphQL
quramy
7
1k
Node.js v22 で変わること
yosuke_furukawa
PRO
9
3.4k
2 週間で Twitter Bot を作ってみた
contour_gara
0
390
Scalable Customer Journey Orchestration (CJO)
lewuathe
0
320
[技育CAMPアカデミア]アイディアを形に!【超入門】スマホアプリ開発〜リリースまでの流れをご紹介
teamlab
PRO
0
380
TYPO3 v13 – The road to LTS: What's new and new APIs
luisasofie_xoxo
0
200
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
514
39k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
Facilitating Awesome Meetings
lara
42
5.6k
Automating Front-end Workflow
addyosmani
1356
200k
Become a Pro
speakerdeck
PRO
11
4.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
The Language of Interfaces
destraynor
151
23k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
274
13k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
Ruby is Unlike a Banana
tanoku
96
10k
Code Review Best Practice
trishagee
55
15k
Transcript
Package と Theme の作り方と PackageControl 登録までの道のり うえのまさひろ Sublime Sonic 2014
パッケージ開発から公開までの道のり 1. モチベーション
ύοέʔδͬͯࣗͰ࡞Δඞཁ͋Δʁ Q.
ͥΜͥΜ͋Γ·ͤΜɻ A.
ͩͬͯɺ
͢ͰʹࢁͷΑ͏ʹ༻ҙ͞Ε͍ͯΔ͔Βɻ 2,375 Packages 2014.8.8 ݱࡏ
ͦΕͰύοέʔδΛ࡞Δ͜ͱΛ ͓͢͢Ί͍ͨ͠ཧ༝͕͋Γ·͢ɻ
΅͘ͳΓͷߟ͑Ͱ͕͢ɺ
ΤσΟλࣄτίτϯޮԽͰ͖Δɻ ҧ͏ࣄͰ͍ํύλʔϯԽ͢Δ ͦͷύλʔϯࣗಈԽͰ͖Δ͔ ࣗಈԽͯ͠ୀ۶ͳࣄΛݮΒ͢
͚ͩͲɺ
ΤσΟλͷ͍ํͬͯઍࠩສผͰ͢ɻ ͦͷਓͳΓͷࣄͷΓํ͕͋Δ ࣗʢνʔϜʣͷࣄʹ࠷దԽͤͨ͞ ΄͏͕ྑ͍
ͭ·Γɺ
ୀ۶ͳࣄΛࣗಈԽͯ͠ɺ ࣗͷࣄΛޮԽͷͨΊͷҰखஈͱͯ͠ ύοέʔδΛ࡞Δ͜ͱΛΦεεϝ͠·͢
2. パッケージの仕組みを理解する パッケージ開発から公開までの道のり
ύοέʔδͱ SublimeText3 ͷ֦ுػೳͷ૯শ ςʔϚεχϖοτύοέʔδ ଞʹ Python Ͱಈ͘ϓϥάΠϯͳͲ
͜ͷลΓͷఆ͕ٛΘΓͱ;ΜΘΓ ศརͳͷ΄΅ Python Ͱಈ͘
PHP, Ruby ͷΑ͏ͳεΫϦϓτݴޠ όʔδϣϯ̎ͱ͕̏͋Δ ̏ʹԼҐޓੑ͕ͳ͍ SublimeText3
Ͱ̏Λ༻ ւ֎ͰΑ͘ΘΕ͍ͯΔݴޠ ྫɿDropbox, Instagram, Pinterest Python ͱ͍͏ݴޠ
Python3 ͷΠϯετʔϧෆཁ ͪΖΜ SublimeText3 ্Ͱ։ൃ ͦͷ··ಈ࡞֬ೝͰ͖Δ
SublimeText3 ͑͋͞Ε͍͍ Ͱ؆୯ʹ࡞ΕΔͱݴ͍·ͤΜ SublimeText3 ͰύοέʔδΛ࡞Δ
python3 SublimeText3 /Packages /helloworld helloworld.py Hello World! Πϝʔδਤ
3. 実際に作ってみる パッケージ開発から公開までの道のり
·ͣ Python ͰϓϥάΠϯΛॻ͍ͯΈΔ
None
None
/Packages/User ʹอଘ͢Δɻ
None
͜ͷ··ͰίϚϯυΛ࣮ߦͰ͖ͳ͍ɻ
KeyBindings - User Λઃఆͯ͠ΈΔɻ
KeyBindings - User ʹՃ [ { "keys": ["super+alt+h"], "command": "example"
} ] ίϚϯυখจࣈͰ ޙ΄Ͳઆ໌͠·͢
alt + ⌘ + h
None
ಈ͍ͨɻ͚ͲͳΜͰಈ͍ͨͷ͔ɻ
ੜ͞Εͨ Python ͷίʔυ import sublime, sublime_plugin ! class ExampleCommand(sublime_plugin.TextCommand): def
run(self, edit): self.view.insert(edit, 0, "Hello, World!")
؆୯ʹઆ໌͠·͢ɻ
import sublime, sublime_plugin Python Ͱ SublimeText Λѻ͏એݴ ͍ΘΏΔ͓·͡ͳ͍ͬͯ͜ͱͰ
ੜ͞Εͨ Python ͷίʔυ
class ExampleCommand(sublime_plugin.TextCommand): def run(self, edit): self.view.insert(edit, 0, "Hello, World!")
Ϋϥε໊ίϚϯυ໊ʹͳΔ෦ KeyBinding ͳͲʹઃఆ͢Δ ͨͩ͠ɺઃఆ࣌ Command ΑΓલͷ෦ Λখจࣈʹͨ͠ͷ ੜ͞Εͨ Python ͷίʔυ
class ExampleCommand(sublime_plugin.TextCommand): def run(self, edit): self.view.insert(edit, 0, "Hello, World!")
จࣈྻૢ࡞ͷίϚϯυͰ͋Δએݴ ͍ͬͯΔ͜ͱΫϥεͷܧঝ ੜ͞Εͨ Python ͷίʔυ
class ExampleCommand(sublime_plugin.TextCommand): def run(self, edit): self.view.insert(edit, 0, "Hello, World!")
ίϚϯυ࣮ߦ࣌ʹݺͼग़͞ΕΔ ͜ͷԼʹॲཧ͍ͨ͜͠ͱΛॻ͘ ੜ͞Εͨ Python ͷίʔυ
class ExampleCommand(sublime_plugin.TextCommand): def run(self, edit): self.view.insert(edit, 0, "Hello, World!")
ࠓ։͍͍ͯΔը໘Λૢ࡞͢Δ API จ಄ʹ Hello,World Λૠೖ ੜ͞Εͨ Python ͷίʔυ
Ҏ্ɻ
ͳΔ΄ͲΘ͔ΒΜɻ
Python ͔Β SublimeText Λૢ࡞Ͱ͖Δ API Reference ʹཏ͞Ε͍ͯΔ
ͨͩ͠શ෦ӳޠ Sublime API ΛΔ
Sublime API ΛΔ
Sublime API ΛΔ
͍ɻ
݁ہͳʹΛͲ͏ͨ͠Β͍͍͔Θ͔ΒΜɻ
݁ߏख୳ΓͰΔඞཁ͕͋Δ ͱʹ͔͘ Try & Error ͋ΔͷΈ ؒҧͬͯͨΒίϯιʔϧʹ
Error SublimeText3 ͰϓϥάΠϯΛ࡞Δ
࣮ݱํ๏ΛखͬऔΓૣ͘ௐΔํ๏
ެ։͞Ε͍ͯΔύοέʔδΛ͖ݟʂ
ެ։͞Ε͍ͯΔύοέʔδΛ͖ݟ͢Δ
ެ։͞Ε͍ͯΔύοέʔδΛ͖ݟ͢Δ
ެ։͞Ε͍ͯΔύοέʔδΛ͖ݟ͢Δ
Γ͍ͨ͜ͱΛ࣮ݱ͍ͯ͠Δ ύοέʔδͷϚωΛ͢Δͷ͕Ұ൪ૣ͍ ύοέʔδ։ൃͷํ๏Ͱ͢ɻ
࣍ςʔϚΛ࡞ͬͯΈΔɻ
ςʔϚΛ࡞Δʹ͜Ε͕Ұ൪ʂ
IUUQUNUIFNFFEJUPSIFSPLVBQQDPN tmTheme-Editor
tmTheme-Editor ͱ ΦϯϥΠϯ্Ͱ؆୯ʹ࡞Ͱ͖Δ ϓϦηοτΛݺͼग़͠ฤूͰ͖Δ ϦΞϧλΠϜͰϓϨϏϡʔՄೳ ࡞ͨ͠ςʔϚμϯϩʔυ
/Packages/User ʹอଘ͢Δ
Settings - User Ͱઃఆ͢Ε OK ɻ
ϓϥάΠϯ࡞ΔΑΓѹతʹ؆୯ɻ
4. 公開してみる パッケージ開発から公開までの道のり
GitHub Ͱެ։͢Δ४උ ϦϙδτϦΛ࡞ README ʹղઆΛʢͰ͖Εӳޠ LICENSE هࡌΕͣʹ
git push origin ͢Εެ։ྃɻ
·ͩ PackageControl ʹొ͞Εͯͳ͍ɻ
ͰͲ͏ͤͳΒੈքͷϢʔβʔʹެ։ʂ
5. PackageControl に登録 パッケージ開発から公開までの道のり
PackageControl ·Ͱͷެ։ͷྲྀΕ package_control_channel ΛϑΥʔΫ repository.json Λमਖ਼ͯ͠ϓϧϦΫ Ϛʔδ͞ΕΔͷΛͭ
Ϛʔδ͞ΕΕొྃ
None
None
repository.json ΛՃ ࣗͷύοέʔδใΛొ PackageControl ͷαΠτʹܝࡌ͞ΕΔ ৄ͍͠ϚχϡΞϧͱαϯϓϧ͕͋Δ
None
Εͯొྃʂʋ ʅ˜A ů
None
͜ΕͰ Install Package ͷҰཡʹͰͯ͘Δʂ
ύοέʔδΛ࡞Δͱ͍͏͜ͱ ใ͕ඇৗʹগͳ͍ʢຊޠ ެࣜυΩϡϝϯτ͕ඍົ ͋Δఔ Python ͷษڧඞཁ
Ͱ࡞ΕΔΑ͏ʹͳΔͱ͔ͳΓศརʂ ผʹଟػೳͳͷΛ࡞Δඞཁͳ͍ ެ։ؾ͕͍ͨΒ͢Ε͍͍
ύοέʔδΛ࡞ͬͯΈΑ͔ͬͨ͜ͱ Ϣʔβʔ͔Βศརͱͷ Sublime ίϛϡχςΟʹࢀՃͯ͠Δײ ͳʹΑΓษڧʹͳΔ
͜ΕΛظʹ Python ʹνϟϨϯδʂ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂʂ Package と Theme の作り方と PackageControl 登録までの道のり Sublime Sonic 2014