Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Package と Theme の作り方と PackageControl 登録までの道のり
astronaughts
August 13, 2014
Programming
0
280
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
390
Sublime Text を 俺色に染める方法
astronaughts
2
810
GRUNT のあんなこといいなできたらいいな
astronaughts
14
2k
Re:Development of ChatWork Apps
astronaughts
1
2.1k
Rapid Prototyping by TiShadow
astronaughts
4
2.6k
Sublime Text 2 for PHP Development
astronaughts
0
220
Titanium ならここまでできる !! Serverside non-programing で作る お手軽 Social Application
astronaughts
1
320
Fathm Like ScrollableView Implementaion for TItanium mobile
astronaughts
3
3.8k
Other Decks in Programming
See All in Programming
PythonユーザによるRust入門
rmizuta3
9
3k
io22 extended What's new in app performance
veronikapj
0
330
はてなフォトライフをECSに移行した話 / Hatena Engineer Seminar #20
cohalz
1
810
Swift6のprotocol
omochi
3
310
Why Airflow? & What's new in Airflow 2.3?
kaxil
0
110
A Philosophy of Software Design 後半
yosuke_furukawa
PRO
8
2.5k
Overview of The Modern Data Stack / モダンデータスタック概論
satoshihirose
6
3.2k
開発速度を5倍早くするVSCodeの拡張機能を作った
purp1eeeee
2
130
個人開発でReact Native + Expo製アプリを作った話
ryonakae
1
440
Amazon Aurora の v1 が EOL になるので 10 クラスタアップグレードして出てきたノウハウ
dekokun
0
840
Reactive Java Microservices on Kubernetes with Spring and JHipster
deepu105
1
160
RFC 9111: HTTP Caching
jxck
0
150
Featured
See All Featured
Writing Fast Ruby
sferik
612
57k
Streamline your AJAX requests with AmplifyJS and jQuery
dougneiner
126
8.5k
Done Done
chrislema
174
14k
Building Adaptive Systems
keathley
25
1.1k
In The Pink: A Labor of Love
frogandcode
131
21k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
11
4.7k
The Illustrated Children's Guide to Kubernetes
chrisshort
14
36k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
119
28k
5 minutes of I Can Smell Your CMS
philhawksworth
196
18k
Design by the Numbers
sachag
271
17k
How New CSS Is Changing Everything About Graphic Design on the Web
jensimmons
213
11k
jQuery: Nuts, Bolts and Bling
dougneiner
56
6.4k
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