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
390
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Package と Theme の作り方と PackageControl 登録までの道のり
in Sublime Sonic 2014
astronaughts
August 13, 2014
More Decks by astronaughts
See All by astronaughts
Sublime Text の プラグイン開発の方法
astronaughts
0
540
Sublime Text を 俺色に染める方法
astronaughts
2
950
GRUNT のあんなこといいなできたらいいな
astronaughts
14
2.3k
Re:Development of ChatWork Apps
astronaughts
1
2.2k
Rapid Prototyping by TiShadow
astronaughts
4
2.9k
Sublime Text 2 for PHP Development
astronaughts
0
260
Titanium ならここまでできる !! Serverside non-programing で作る お手軽 Social Application
astronaughts
1
410
Fathm Like ScrollableView Implementaion for TItanium mobile
astronaughts
3
3.9k
Other Decks in Programming
See All in Programming
MySQLとPostgreSQLって何が違うの?
akagami
0
120
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
1
140
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
330
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
150
メールのエイリアス機能を履き違えない
isshinfunada
0
250
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
440
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
550
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
110
React本体のコードリーディング
high_g_engineer
1
150
Flow は今どうなっているか
mizdra
PRO
0
650
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
520
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
150
Featured
See All Featured
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Building an army of robots
kneath
306
46k
Agile that works and the tools we love
rasmusluckow
331
22k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
So, you think you're a good person
axbom
PRO
2
2.1k
A Soul's Torment
seathinner
6
3.5k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
250
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
630
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
490
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
500
Leo the Paperboy
mayatellez
8
2.2k
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