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
370
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
520
Sublime Text を 俺色に染める方法
astronaughts
2
920
GRUNT のあんなこといいなできたらいいな
astronaughts
14
2.3k
Re:Development of ChatWork Apps
astronaughts
1
2.1k
Rapid Prototyping by TiShadow
astronaughts
4
2.9k
Sublime Text 2 for PHP Development
astronaughts
0
250
Titanium ならここまでできる !! Serverside non-programing で作る お手軽 Social Application
astronaughts
1
380
Fathm Like ScrollableView Implementaion for TItanium mobile
astronaughts
3
3.8k
Other Decks in Programming
See All in Programming
Swift Concurrency 年表クイズ
omochi
3
230
モデル駆動設計をやってみよう Modeling Forum2025ワークショップ/Let’s Try Model-Driven Design
haru860
0
160
開発生産性が組織文化になるまでの軌跡
tonegawa07
0
170
競馬で学ぶ機械学習の基本と実践 / Machine Learning with Horse Racing
shoheimitani
13
13k
「正規表現をつくる」をつくる / make "make regex"
makenowjust
1
510
「10分以内に機能を消せる状態」 の実現のためにやっていること
togishima
1
500
ノーコードからの脱出 -地獄のデスロード- / Escape from Base44
keisuke69
0
720
関数の挙動書き換える
takatofukui
4
680
Nitro v3
kazupon
2
310
JEP 496 と JEP 497 から学ぶ耐量子計算機暗号入門 / Learning Post-Quantum Crypto Basics from JEP 496 & 497
mackey0225
2
320
最新のDirectX12で使えるレイトレ周りの機能追加について
projectasura
0
250
2026年向け会社紹介資料
misu
0
230
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
320
Practical Orchestrator
shlominoach
190
11k
Typedesign – Prime Four
hannesfritz
42
2.9k
KATA
mclloyd
PRO
32
15k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
How STYLIGHT went responsive
nonsquared
100
5.9k
BBQ
matthewcrist
89
9.9k
Navigating Team Friction
lara
190
15k
A Tale of Four Properties
chriscoyier
162
23k
Raft: Consensus for Rubyists
vanstee
140
7.2k
Designing for Performance
lara
610
69k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
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