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
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
210
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.5k
スマートグラスで並列バイブコーディング
hyshu
0
270
Oxlintのカスタムルールの現況
syumai
6
1.2k
Creating Composable Callables in Contemporary C++
rollbear
0
180
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
430
act1-costs.pdf
sumedhbala
0
140
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
120
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.6k
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
250
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.7k
1B+ /day規模のログを管理する技術
broadleaf
0
120
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
230
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
380
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
280
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
170
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
Balancing Empowerment & Direction
lara
6
1.2k
A Modern Web Designer's Workflow
chriscoyier
698
190k
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