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
GUI is not fast enough!! (GUIには速さが足りないっ!!)
Search
Toshikazu Ohashi
September 23, 2017
Programming
1
630
GUI is not fast enough!! (GUIには速さが足りないっ!!)
社内勉強会でCUIについて話す時用の資料
Toshikazu Ohashi
September 23, 2017
Tweet
Share
More Decks by Toshikazu Ohashi
See All by Toshikazu Ohashi
無自覚にメンバーの心理的安全性を奪っていた経験から得た学び
lighttiger2505
158
220k
黒画面が最高のしごと道具である3つの理由
lighttiger2505
0
2.2k
Golangで作るSQL Language Server(sqls)
lighttiger2505
1
930
Connect with many developers from the small plugin
lighttiger2505
0
410
作ってわかる現代のVimのAutoComplete ~そしてVimConf2019へ~
lighttiger2505
3
1.8k
自社サービスのDjangoを 1.3から1.11(LTS)に アップグレードするまでの道のり
lighttiger2505
6
3.6k
LSPがもたらしたVimプラグインの変化に思いを馳せる
lighttiger2505
2
1.5k
ターミナルアプリケーションとしてのVim
lighttiger2505
0
580
Go Language Server 使うべし
lighttiger2505
5
2.1k
Other Decks in Programming
See All in Programming
ネストしたdata classの面倒な更新にさようなら!Lensを作って理解するArrowのOpticsの世界
shiita0903
1
280
Reactive Thinking with Signals and the Resource API
manfredsteyer
PRO
0
130
ボトムアップの生成AI活用を推進する社内AIエージェント開発
aku11i
0
1.5k
エンジニアに事業やプロダクトを理解してもらうためにやってること
murabayashi
0
140
Eloquentを使ってどこまでコードの治安を保てるのか?を新人が考察してみた
itokoh0405
0
3.1k
テーブル定義書の構造化抽出して、生成AIでDWH分析を試してみた / devio2025tokyo
kasacchiful
0
400
Amazon ECS Managed Instances が リリースされた!キャッチアップしよう!! / Let's catch up Amazon ECS Managed Instances
cocoeyes02
0
130
ノーコードからの脱出 -地獄のデスロード- / Escape from Base44
keisuke69
0
640
お前も Gemini CLI extensions を作らないか?
satohjohn
0
110
CSC509 Lecture 08
javiergs
PRO
0
280
r2-image-worker
yusukebe
1
110
例外処理を理解して、設計段階からエラーを見つけやすく、起こりにくく #phpconfuk
kajitack
12
5.4k
Featured
See All Featured
Scaling GitHub
holman
463
140k
Stop Working from a Prison Cell
hatefulcrawdad
272
21k
Bash Introduction
62gerente
615
210k
Docker and Python
trallard
46
3.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Rails Girls Zürich Keynote
gr2m
95
14k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
How to train your dragon (web standard)
notwaldorf
97
6.3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Transcript
GUI is not fast enough!! Toshikazu Ohashi
About me • iRidge No.1 Vimmer(1st among 1 people) •
My kindle library 6000 over • color schema of this slide is [molokai]
ӳޠ͜͜·Ͱ
ൃදͷલʹ֬ೝͰ͢ • օ͞ΜීஈCLIΛͬͯ·͔͢ʁ 1.9ׂํCLIΛ৮ͬͯΔ 2.ඞཁ͕͋ΕCLIํ͕ͳ͘৮Δ 3.CLIͳͲݟͨ͘৮Γͨ͘ͳ͍ɻͿͬͪΌ ͚ؾ࣋ͪѱ͍
ΞδΣϯμ • 1. ͳΜͰCLIͳΜͯͬͯΜͷʁϚκͳͷʁ • 2. ࠓ͔ΒͰ͖ΔCLIվળTIPS • 2-1. ڧྗͳγΣϧΛ͓͏
• 2-2. ՃίϚϯυ/ϓϥάΠϯͰշదͳࣄΛ • 2-3. ϙʔλϓϧͳڥͰ͍ͭͰύϫϑϧ • 3. ·ͱΊ
• 1. ͳΜͰCLIͳΜͯͬͯΜͷʁϚκͳͷʁ • 2. ࠓ͔ΒͰ͖ΔCLIվળTIPS • 2-1. ڧྗͳγΣϧΛ͓͏ •
2-2. ՃίϚϯυ/ϓϥάΠϯͰշదͳࣄΛ • 2-3. ϙʔλϓϧͳڥͰ͍ͭͰύϫϑϧ • 3. ·ͱΊ
ͦͦલఏ͕ҧ͏ • GUI୭Ͱ؆୯ʹ͑ΔΑ͏ʹɺϢʔβʹ༩͑ ΔબࢶΛͱͯগͳ͘ɺڧྗͳͷʹ͢Δ • CLI(ͱ͍͏͔UNIX)ͦͦॳ৺ऀΛड͚ೖ ΕΔͭΓͳͲͳ͍ɻʮԿΛ͍ͯ͠Δ͔Θ͔Β ͳ͍ͷͳΒɺ͜͜ʹ͍Δ͖Ͱͳ͍ʯ͕ઃܭ ࢥ
ͳΜͰCLIͳΜͯͬͯΜͷʁ • CLI৭ʑ͍ • ىಈ͕͍ • Ϩεϙϯε͕͍ • શ෦CLIͰΕΓସ͑ͳ͠ •
GITDBૢ࡞ςετΤσΟοτͯ̍͢ը໘ • ڴҖͷ֦ுੑ • GUIͰͰ͖ͯCLIʹͰ͖ͳ͍͜ͱͳ͍
CLIࢥߟΛૢ࡞ʹ݁͢Δ • GUIͳΒ • ૢ࡞͍ͨͬ͠! • ରԠ͢ΔιϑτΣΞΛىಈ͢Δɻ·ͨΟϯυΓସ͑ • ϝχϡʔΛ୳͢ •
ૢ࡞Λ࣮ߦ͢Δ • CLIͳΒ • ૢ࡞͍ͨͬ͠! • ରԠ͢ΔίϚϯυΛ࣮ߦ͢Δ
σϝϦοτ • ֶशίετ͕ߴ͍…ͨͩͻͨ͢Βʹߴ͍ • ίϚϯυΛ֮͑ͳ͍ͱԿͰ͖ͳ͍ • ઃఆϑΝΠϧ͕ࠇຐज़ • shell scriptΛจॻ͘ͱՄಡੑ͕͑Β͍͜ͱʹ
• தಟੑ͕ߴ͍ • Կނ͔ೋݴʹVimͬͯݴͬͯΔɻφϯσ
None
Ϛκͳͷʁ
ϋΠ
ಥવͰ͕͢ ͜͜ͰΫΠζͰ͢
Q.͜ͷࣈͳΜͰ͠ΐ͏͔ʁ 2517
A.CLIͷઃఆߦ (2017/09/23࣌)
Ͳ͏ͯ͜͠͏ͳΔ·Ͱ์͓͍ͬͯͨΜͩ • લ৬Excel৬ਓ • GeekͬΆ͍͜ͱΛͨͯ͘͠3ҐCLIΛ͍͡Δ • ͜ͷ࣌ͰઃఆϑΝΠϧʹ+200ίϛοτ • ϑϦʔμϜͳڥͳͷͰCLIͱVimͰࣄ͢Δ •
͜ͷ࣌ͰઃఆϑΝΠϧʹ+200ίϛοτ • ࣾೋපΛ͜͡ΒͤΔ
• 1. ͳΜͰCLIͳΜͯͬͯΜͷʁϚκͳͷʁ • 2. ࠓ͔ΒͰ͖ΔCLIվળTIPS • 2-1. ڧྗͳγΣϧΛ͓͏ •
2-2. ՃίϚϯυ/ϓϥάΠϯͰշదͳࣄΛ • 2-3. ϙʔλϓϧͳڥͰ͍ͭͰύϫϑϧ • 3. ·ͱΊ
CLIࣗͷ෦ͷΑ͏ͳͷͰ͋Δ • ๛͔ͳੜ׆ͷͨΊɺࣗવͱՈ۩ͷஔΛߟ͑ͨΓɺ ศརͳಓ۩ՈిΛἧ͑ͨΓ͢Δͷָ͍ͬͯ͠ • CLIಉ͡ɻ๛͔ͳੜ׆ͷͨΊͷΧελϚΠζ • Α͘͏ίϚϯυʹΤΠϦΞεషΔ • ΑΓศརʹ͏ͨΊʹ৽͍͠ϓϥάΠϯπʔ
ϧΛἧ͑Δ
ͪΐͬͱͣͭͰ͍͍ • Small is beautiful.(খ͍͞ͷඒ͍͠) • CLIͷ͍͍ͱ͜Ζʑͷͪΐͬͱͨ͠ෆຬΛ ঃʑʹվળͰ͖Δ͜ͱ • ͨͬͨҰߦͷઃఆ͕ܶతͳվળΛͨΒ͢
·ͣ͜͏͍͏λʔϛφϧͱ Φαϥό͠·͠ΐ͏
• 1. ͳΜͰCLIͳΜͯͬͯΜͷʁϚκͳͷʁ • 2. ࠓ͔ΒͰ͖ΔCLIվળTIPS • 2-1. ڧྗͳγΣϧΛ͓͏ •
2-2. ՃίϚϯυ/ϓϥάΠϯͰշదͳࣄΛ • 2-3. ϙʔλϓϧͳڥͰ͍ͭͰύϫϑϧ • 3. ·ͱΊ
ZSH • ͭΑ͍Shell • ิ͕ศརʹͳΔ • ϓϥάΠϯʹΑΔΧελϚΠζੑ͕ߴ͍ • ࢀߟ[ͷZSH](http://news.mynavi.jp/ column/zsh/)
ิ • σϑΥϧτͷิ͕طʹศར • BashͷΑ͏ʹҰҙͰͳͯ͘ิ͢Δ • GitͷαϒίϚϯυϑϥά·Ͱิ͢Δ
DEMO
ώετϦ • ҰଧͪࠐΜͩίϚϯυͳͧೋଧͭͷ͔ • ͱʹ͔͘ώετϦΛͨͲΔػೳ͕ͭΑ͍
DEMO
ϓϩϯϓτ • ϓϩϯϓτΛ͍͡ΔͱͦΕ͚ͩͰޮ্͕͕Δ • ΧϨϯτσΟϨΫτϦͲ͔͜ • ݱࡏGitͷϒϥϯνԿ͔ • Vim͕όοΫάϥϯυͰಈ͍͍ͯΔ͔
# ݱࡏͷϒϥϯν ͳ͓εςʔλεʹΑΓࡾ৭ʹมԽ : staged͋Γ ԫ: change͋Γ : changeͳ͠ εςʔλεදࣔॏ͗ͯͬͨ͢
# Vimͷδϣϒ όοΫάϥϯυͰVim͕ಈ͍͍ͯͨΒVimͱදࣔ
# Line EditorͷϞʔυ Vimͱಉ༷ͷૢ࡞͕Ͱ͖ΔΑ͏ʹΧελϚΠζ͍ͯ͠ΔͷͰϞʔυ͕͋Δ ࠓͷϞʔυΛ֬ೝͰ͖Δ
# ΧϨϯτσΟϨΫτϦ
DEMO
• 1. ͳΜͰCLIͳΜͯͬͯΜͷʁϚκͳͷʁ • 2. ࠓ͔ΒͰ͖ΔCLIվળTIPS • 2-1. ڧྗͳγΣϧΛ͓͏ •
2-2. ՃίϚϯυ/ϓϥάΠϯͰշదͳࣄΛ • 2-3. ϙʔλϓϧͳڥͰ͍ͭͰύϫϑϧ • 3. ·ͱΊ
͓͠ͳ͕͖ • zsh-syntax-highlighting • zsh-autosuggestions • zsh-completions • fzf •
enhancd • ghq • tig
zsh-syntax-highlighting • syntax highlight is GOT !! • γϯλοΫε͕ద༻͞ΕΔɻͨͩͦΕ͚ͩ •
ͦΕ͚ͩͰޡૢ࡞͕֨ஈʹݮΔ
zsh-autosuggestions • ώετϦ͕ߋʹڧྗʹͳΔ • ώετϦͷ༰ΛࣗಈతʹαδΣετ͢Δ • ίϚϯυଧ伴ˠώετϦద༻ͷஅ͕ʹ ͳΔ
·ͱΊͯDEMO
fzf • fuzzy matcher(;͊͡ʔ·ͬͪΌʔ)ͱ͔͍ΘΕΔ ͭɻଟ͘ͷྨࣅπʔϧ͕᛭ୖຏ͢ΔCLIπʔϧͷҰେ δϟϯϧͰ͋Δɻ΄͔ʹpecoͱ͔͋Δ • stdinΛϦετදࣔ͢Δ • ೖྗΩʔϫʔυͰϚονϯά͢Δ
• બ߲ͨ͠Λstdoutʹ͢ • ͨͩͦΕ͚ͩͷπʔϧɻ߇͑ΊʹݴͬͯGOT
DEMO
fzfͭΑ͍ • ͓Θ͔Γ͍͚ͨͩͨͩΖ͏͔ʁ • fzfCLIૢ࡞ʹ͓͚ΔબͷखॱΛݶΓͳ͘ߴԽ͢Δɻ • Ұཡදࣔ(ex:ϒϥϯνҰཡදࣔ) • ୳͢(ex:େྔͷϒϥϯν͔ΒͰݟ͕ͯ͢͞) •
ૢ࡞ରʹίϚϯυ࣮ߦ(ex:ϒϥϯνΛνΣοΫΞτ) • ͔͠ΧελϚΠζ࣍ୈͰԿʹͰద༻Մೳ
enhancd • CLIૢ࡞ʹ͓͍ͯ࠷࣮ߦ͞ΕΔίϚϯυͱ [cd]ͳ͍͠[ls]Ͱ͋ΔɻҟೝΊͳ͍ • [cd]ͷޮԽ==CLIͷޮԽ • લड़ͨ͠fzfΛ׆༻ํ๏ͷதͰ࠷༗༻ͳ ͷͷҰͭ
DEMO
ghq • ۀΛ͍ͯ͠Εཧ͢ΔgitϦϙδτϦ૿͑ଓ ͚Δ • 20~30ͷϦϙδτϦΛ͖Ε͍ʹஔ͢Δͷ໘ • Golangͷ͓࡞๏ʹैͬͯ؆୯ɺ͖Ε͍ʹϦϙ δτϦཧ͕Ͱ͖Δ •
$GOPATH/src/{domain}/{user}/{repo}
DEMO
tig • CLIͷgitΫϥΠΞϯτ • CLIͰgitૢ࡞͍ͯ͠ΔΞφλɻtigΛΘͳ͍ͳΜͯਓੜͷ ଛ͍ͯ͠·͢Α • ͍ɻͦͯ͠syntax highlight is
GOT • add, resetʹΑΔstage/unstageૢ࡞͕2ഒ • log, blameʹΑΔௐ͕ࠪ2ഒ • ΧελϚΠζ͢Εrebase -i 2ഒ
DEMO
• 1. ͳΜͰCLIͳΜͯͬͯΜͷʁϚκͳͷʁ • 2. ࠓ͔ΒͰ͖ΔCLIվળTIPS • 2-1. ڧྗͳγΣϧΛ͓͏ •
2-2. ՃίϚϯυ/ϓϥάΠϯͰշదͳࣄΛ • 2-3. ϙʔλϓϧͳڥͰ͍ͭͰύϫϑϧ • 3. ·ͱΊ
͜͜·Ͱฉ͍ͯ Ͳ͏ࢥ͍·͔ͨ͠ʁ
ઃఆ/Πϯείେਿwww ϦϞʔταʔόʹSSHͨ͠ͱ͖ͱ͔ PCม͑ͨͱ͖Ͳ͏͢ΜͩΑwww
ͱ͔ࢥ͍ͬͯ·͢Ͷʁ
DEMO
dotfilesۦಈ։ൃ • CLIͷઃఆͯ͢ςΩετϑΝΠϧ • ͭɾ·ɾΓɻͯ͢όʔδϣϯཧͰ͖Δ • ୭͕ݴ͔ͬͨdotfiles • GitHubʹͨͯ·͢dotfilesϦϙδτϦ •
[.̋̋rc]ͥΜͿೖΕͯ • git clone ͢ΓΌ͜ΜʹͪΘ
None
zplug • zshͷϓϥάΠϯϚωʔδϟ • zshͷϓϥάΠϯ͔ΒzshrcͰ༻͍ͯ͠ΔCLIπʔ ϧʹࢸΔ·ͰΠϯετʔϧՄೳ • zsh͕ىಈͨ͠ॠؒʹઃఆϑΝΠϧͷϓϥάΠϯΛ ͯ͢Πϯετʔϧ •
ͿͬͪΌ্͚ڃऀ͖͔ͩΒɺ·ͣprezto͋ͨΓ ͔Β࢝Ίͨ΄͏͕Α͛͞
make • dotfilesͷߏཧmakeͰΔ • make͍͍ͩͨͷOSʹඪ४උ • chefΒansibleΒେڼͳπʔϧ dotfilesʹෆཁ
͋Ε Ͳ͜Ͱ͋Ζ͏ͱ ϘΫͷ͔Μ͕͍͖͑ͨ͞ΐ͏ͷCLI ͕͑Δ
• 1. ͳΜͰCLIͳΜͯͬͯΜͷʁϚκͳͷʁ • 2. ࠓ͔ΒͰ͖ΔCLIվળTIPS • 2-1. ڧྗͳγΣϧΛ͓͏ •
2-2. ՃίϚϯυ/ϓϥάΠϯͰշదͳࣄΛ • 2-3. ϙʔλϓϧͳڥͰ͍ͭͰύϫϑϧ • 3. ·ͱΊ
·ͱΊ • CLIࢥߟͱ݁ͯ͠ίϚϯυ࣮ߦ͕Ͱ͖Δ͔Βɺ ͱͱͷ࣮ߦͱ͍͋·ͬͯ৭ʑ͍ • ΧελϚΠζͰͤʹͳΕΔɻʑͷগ͠ͷվળΛ ঃʑʹ͍ͬͯ͜͏࿔͘Γଓ͚Εख์ͤͳ ͘ͳΔ • CLIઃఆϙʔλϒϧʹ࣋ͪ͜ͼՄೳ
• ई͕ͨΒͳ͗ͯ͢Vim·ͰͨͲΓண͚ͳ͔ͬͨ
Let’s enjoy CLI!!