Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GUI is not fast enough!! (GUIには速さが足りないっ!!)

GUI is not fast enough!! (GUIには速さが足りないっ!!)

社内勉強会でCUIについて話す時用の資料

Toshikazu Ohashi

September 23, 2017
Tweet

More Decks by Toshikazu Ohashi

Other Decks in Programming

Transcript

  1. GUI is not fast enough!!
    Toshikazu Ohashi

    View Slide

  2. About me
    • iRidge No.1 Vimmer(1st among 1
    people)
    • My kindle library 6000 over
    • color schema of this slide is
    [molokai]

    View Slide

  3. ӳޠ͸͜͜·Ͱ

    View Slide

  4. ൃදͷલʹ֬ೝͰ͢
    • օ͞Μ͸ීஈCLIΛ࢖ͬͯ·͔͢ʁ
    1.9ׂํCLIΛ৮ͬͯΔ
    2.ඞཁ͕͋Ε͹CLI΋࢓ํ͕ͳ͘৮Δ
    3.CLIͳͲݟͨ͘΋৮Γͨ͘΋ͳ͍ɻͿͬͪΌ
    ͚ؾ࣋ͪѱ͍

    View Slide

  5. ΞδΣϯμ
    • 1. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁϚκͳͷʁ
    • 2. ࠓ೔͔ΒͰ͖ΔCLIվળTIPS
    • 2-1. ڧྗͳγΣϧΛ࢖͓͏
    • 2-2. ௥ՃίϚϯυ/ϓϥάΠϯͰշదͳ࢓ࣄΛ
    • 2-3. ϙʔλϓϧͳ؀ڥͰ͍ͭͰ΋ύϫϑϧ
    • 3. ·ͱΊ

    View Slide

  6. • 1. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁϚκͳͷʁ
    • 2. ࠓ೔͔ΒͰ͖ΔCLIվળTIPS
    • 2-1. ڧྗͳγΣϧΛ࢖͓͏
    • 2-2. ௥ՃίϚϯυ/ϓϥάΠϯͰշదͳ࢓ࣄΛ
    • 2-3. ϙʔλϓϧͳ؀ڥͰ͍ͭͰ΋ύϫϑϧ
    • 3. ·ͱΊ

    View Slide

  7. ͦ΋ͦ΋લఏ͕ҧ͏
    • GUI͸୭Ͱ΋؆୯ʹ࢖͑ΔΑ͏ʹɺϢʔβʹ༩͑
    Δબ୒ࢶΛͱͯ΋গͳ͘ɺڧྗͳ΋ͷʹ͢Δ
    • CLI(ͱ͍͏͔UNIX)͸ͦ΋ͦ΋ॳ৺ऀΛड͚ೖ
    ΕΔͭ΋ΓͳͲͳ͍ɻʮԿΛ͍ͯ͠Δ͔Θ͔Β
    ͳ͍ͷͳΒɺ͜͜ʹ͍Δ΂͖Ͱ͸ͳ͍ʯ͕ઃܭ
    ࢥ૝

    View Slide

  8. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁ
    • CLI͸৭ʑ଎͍
    • ىಈ͕଎͍
    • Ϩεϙϯε͕଎͍
    • શ෦CLIͰ΍Ε͹੾Γସ͑ͳ͠
    • GIT΋DBૢ࡞΋ςετΤσΟοτ΋͢΂ͯ̍ը໘
    • ڴҖͷ֦ுੑ
    • GUIͰͰ͖ͯCLIʹͰ͖ͳ͍͜ͱ͸ͳ͍

    View Slide

  9. CLI͸ࢥߟΛૢ࡞ʹ௚݁͢Δ
    • GUIͳΒ
    • ૢ࡞͍ͨͬ͠!
    • ରԠ͢Διϑτ΢ΣΞΛىಈ͢Δɻ·ͨ͸΢Οϯυ΢੾Γସ͑
    • ϝχϡʔΛ୳͢
    • ૢ࡞Λ࣮ߦ͢Δ
    • CLIͳΒ
    • ૢ࡞͍ͨͬ͠!
    • ରԠ͢ΔίϚϯυΛ࣮ߦ͢Δ

    View Slide

  10. σϝϦοτ
    • ֶशίετ͕ߴ͍…ͨͩͻͨ͢Βʹߴ͍
    • ίϚϯυΛ֮͑ͳ͍ͱԿ΋Ͱ͖ͳ͍
    • ઃఆϑΝΠϧ͕΋͸΍ࠇຐज़
    • shell scriptΛ௕จॻ͘ͱՄಡੑ͕͑Β͍͜ͱʹ
    • தಟੑ͕ߴ͍
    • Կނ͔ೋݴ໨ʹ͸VimͬͯݴͬͯΔɻφϯσ

    View Slide

  11. View Slide

  12. Ϛκͳͷʁ

    View Slide

  13. ϋΠ

    View Slide

  14. ಥવͰ͕͢
    ͜͜ͰΫΠζͰ͢

    View Slide

  15. Q.͜ͷ਺ࣈ͸ͳΜͰ͠ΐ͏͔ʁ
    2517

    View Slide

  16. A.CLIͷઃఆߦ਺
    (2017/09/23࣌఺)

    View Slide

  17. Ͳ͏ͯ͜͠͏ͳΔ·Ͱ์͓͍ͬͯͨΜͩ
    • લ৬͸൒෼Excel৬ਓ
    • GeekͬΆ͍͜ͱΛͨͯ͘͠3೥ҐCLIΛ͍͡Δ
    • ͜ͷ࣌఺ͰઃఆϑΝΠϧʹ+200ίϛοτ
    • ϑϦʔμϜͳ؀ڥͳͷͰCLIͱVimͰ൒೥࢓ࣄ͢Δ
    • ͜ͷ࣌఺ͰઃఆϑΝΠϧʹ+200ίϛοτ
    • ࣾೋපΛ͜͡ΒͤΔ

    View Slide

  18. • 1. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁϚκͳͷʁ
    • 2. ࠓ೔͔ΒͰ͖ΔCLIվળTIPS
    • 2-1. ڧྗͳγΣϧΛ࢖͓͏
    • 2-2. ௥ՃίϚϯυ/ϓϥάΠϯͰշదͳ࢓ࣄΛ
    • 2-3. ϙʔλϓϧͳ؀ڥͰ͍ͭͰ΋ύϫϑϧ
    • 3. ·ͱΊ

    View Slide

  19. CLI͸ࣗ෼ͷ෦԰ͷΑ͏ͳ΋ͷͰ͋Δ
    • ๛͔ͳੜ׆ͷͨΊɺࣗવͱՈ۩ͷ഑ஔΛߟ͑ͨΓɺ
    ศརͳಓ۩΍Ոి੡඼Λἧ͑ͨΓ͢Δͷָ͍ͬͯ͠
    • CLI΋ಉ͡ɻ๛͔ͳੜ׆ͷͨΊͷΧελϚΠζ
    • Α͘࢖͏ίϚϯυʹΤΠϦΞεషΔ
    • ΑΓศརʹ࢖͏ͨΊʹ৽͍͠ϓϥάΠϯ΍πʔ
    ϧΛἧ͑Δ

    View Slide

  20. ͪΐͬͱͣͭͰ͍͍
    • Small is beautiful.(খ͍͞΋ͷ͸ඒ͍͠)
    • CLIͷ͍͍ͱ͜Ζ͸೔ʑͷͪΐͬͱͨ͠ෆຬΛ
    ঃʑʹվળͰ͖Δ͜ͱ
    • ͨͬͨҰߦͷઃఆ͕ܶతͳվળΛ΋ͨΒ͢

    View Slide

  21. ·ͣ͜͏͍͏λʔϛφϧͱ͸
    Φαϥό͠·͠ΐ͏

    View Slide

  22. • 1. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁϚκͳͷʁ
    • 2. ࠓ೔͔ΒͰ͖ΔCLIվળTIPS
    • 2-1. ڧྗͳγΣϧΛ࢖͓͏
    • 2-2. ௥ՃίϚϯυ/ϓϥάΠϯͰշదͳ࢓ࣄΛ
    • 2-3. ϙʔλϓϧͳ؀ڥͰ͍ͭͰ΋ύϫϑϧ
    • 3. ·ͱΊ

    View Slide

  23. ZSH
    • ͭΑ͍Shell
    • ิ׬͕௒ศརʹͳΔ
    • ϓϥάΠϯʹΑΔΧελϚΠζੑ͕ߴ͍
    • ࢀߟ[׽ͷZSH](http://news.mynavi.jp/
    column/zsh/)

    View Slide

  24. ิ׬
    • σϑΥϧτͷิ׬͕طʹศར
    • BashͷΑ͏ʹҰҙͰͳͯ͘΋ิ׬͢Δ
    • GitͷαϒίϚϯυ΍ϑϥά·Ͱิ׬͢Δ

    View Slide

  25. DEMO

    View Slide

  26. ώετϦ
    • Ұ౓ଧͪࠐΜͩίϚϯυͳͧೋ౓΋ଧͭ΋ͷ͔
    • ͱʹ͔͘ώετϦΛͨͲΔػೳ͕ͭΑ͍

    View Slide

  27. DEMO

    View Slide

  28. ϓϩϯϓτ
    • ϓϩϯϓτΛ͍͡ΔͱͦΕ͚ͩͰޮ཰্͕͕Δ
    • ΧϨϯτσΟϨΫτϦ͸Ͳ͔͜
    • ݱࡏGitͷϒϥϯν͸Կ͔
    • Vim͕όοΫάϥ΢ϯυͰಈ͍͍ͯΔ͔

    View Slide

  29. # ݱࡏͷϒϥϯν
    ͳ͓εςʔλεʹΑΓࡾ৭ʹมԽ
    ੺: staged͋Γ
    ԫ: change͋Γ
    ྘: changeͳ͠
    εςʔλεදࣔ͸ॏ͗ͯ͢੾ͬͨ

    View Slide

  30. # Vimͷδϣϒ
    όοΫάϥ΢ϯυͰVim͕ಈ͍͍ͯͨΒVimͱදࣔ

    View Slide

  31. # Line EditorͷϞʔυ
    Vimͱಉ༷ͷૢ࡞͕Ͱ͖ΔΑ͏ʹΧελϚΠζ͍ͯ͠ΔͷͰϞʔυ͕͋Δ
    ࠓͷϞʔυΛ֬ೝͰ͖Δ

    View Slide

  32. # ΧϨϯτσΟϨΫτϦ

    View Slide

  33. DEMO

    View Slide

  34. • 1. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁϚκͳͷʁ
    • 2. ࠓ೔͔ΒͰ͖ΔCLIվળTIPS
    • 2-1. ڧྗͳγΣϧΛ࢖͓͏
    • 2-2. ௥ՃίϚϯυ/ϓϥάΠϯͰշదͳ࢓ࣄΛ
    • 2-3. ϙʔλϓϧͳ؀ڥͰ͍ͭͰ΋ύϫϑϧ
    • 3. ·ͱΊ

    View Slide

  35. ͓͠ͳ͕͖
    • zsh-syntax-highlighting
    • zsh-autosuggestions
    • zsh-completions
    • fzf
    • enhancd
    • ghq
    • tig

    View Slide

  36. zsh-syntax-highlighting
    • syntax highlight is GOT !!
    • γϯλοΫε͕ద༻͞ΕΔɻͨͩͦΕ͚ͩ
    • ͦΕ͚ͩͰޡૢ࡞͕֨ஈʹݮΔ

    View Slide

  37. zsh-autosuggestions
    • ώετϦ͕ߋʹڧྗʹͳΔ
    • ώετϦͷ಺༰ΛࣗಈతʹαδΣετ͢Δ
    • ίϚϯυଧ伴ˠώετϦద༻ͷ൑அ͕௒଎ʹ
    ͳΔ

    View Slide

  38. ·ͱΊͯDEMO

    View Slide

  39. fzf
    • fuzzy matcher(;͊͡ʔ·ͬͪΌʔ)ͱ͔͍ΘΕΔ΍
    ͭɻଟ͘ͷྨࣅπʔϧ͕੾᛭ୖຏ͢ΔCLIπʔϧͷҰେ
    δϟϯϧͰ͋Δɻ΄͔ʹ͸pecoͱ͔͋Δ
    • stdinΛϦετදࣔ͢Δ
    • ೖྗΩʔϫʔυͰϚονϯά͢Δ
    • બ୒߲ͨ͠໨Λstdoutʹ౉͢
    • ͨͩͦΕ͚ͩͷπʔϧɻ߇͑ΊʹݴͬͯGOT

    View Slide

  40. DEMO

    View Slide

  41. fzfͭΑ͍
    • ͓Θ͔Γ͍͚ͨͩͨͩΖ͏͔ʁ
    • fzf͸CLIૢ࡞ʹ͓͚Δબ୒ͷखॱΛݶΓͳ͘ߴ଎Խ͢Δɻ
    • Ұཡදࣔ(ex:ϒϥϯνҰཡදࣔ)
    • ୳͢(ex:େྔͷϒϥϯν͔Β໨Ͱݟ͕ͯ͢͞)
    • ૢ࡞ର৅ʹίϚϯυ࣮ߦ(ex:ϒϥϯνΛνΣοΫΞ΢τ)
    • ͔͠΋ΧελϚΠζ࣍ୈͰԿʹͰ΋ద༻Մೳ

    View Slide

  42. enhancd
    • CLIૢ࡞ʹ͓͍ͯ࠷΋࣮ߦ͞ΕΔίϚϯυͱ͸
    [cd]ͳ͍͠[ls]Ͱ͋Δɻҟ࿦͸ೝΊͳ͍
    • [cd]ͷޮ཰Խ==CLIͷޮ཰Խ
    • લड़ͨ͠fzfΛ׆༻ํ๏ͷதͰ΋࠷΋༗༻ͳ΋
    ͷͷҰͭ

    View Slide

  43. DEMO

    View Slide

  44. ghq
    • ۀ຿Λ͍ͯ͠Ε͹؅ཧ͢ΔgitϦϙδτϦ͸૿͑ଓ
    ͚Δ
    • 20~30ͷϦϙδτϦΛ͖Ε͍ʹ഑ஔ͢Δͷ͸໘౗
    • Golangͷ͓࡞๏ʹैͬͯ؆୯ɺ͖Ε͍ʹϦϙ
    δτϦ؅ཧ͕Ͱ͖Δ
    • $GOPATH/src/{domain}/{user}/{repo}

    View Slide

  45. DEMO

    View Slide

  46. tig
    • CLIͷgitΫϥΠΞϯτ
    • CLIͰgitૢ࡞͍ͯ͠ΔΞφλɻtigΛ࢖Θͳ͍ͳΜͯਓੜͷ
    ൒෼ଛ͍ͯ͠·͢Α
    • ଎͍ɻͦͯ͠syntax highlight is GOT
    • add, resetʹΑΔstage/unstageૢ࡞͕2ഒ଎
    • log, blameʹΑΔௐ͕ࠪ2ഒ଎
    • ΧελϚΠζ͢Ε͹rebase -i ΋2ഒ଎

    View Slide

  47. DEMO

    View Slide

  48. • 1. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁϚκͳͷʁ
    • 2. ࠓ೔͔ΒͰ͖ΔCLIվળTIPS
    • 2-1. ڧྗͳγΣϧΛ࢖͓͏
    • 2-2. ௥ՃίϚϯυ/ϓϥάΠϯͰշదͳ࢓ࣄΛ
    • 2-3. ϙʔλϓϧͳ؀ڥͰ͍ͭͰ΋ύϫϑϧ
    • 3. ·ͱΊ

    View Slide

  49. ͜͜·Ͱฉ͍ͯ
    Ͳ͏ࢥ͍·͔ͨ͠ʁ

    View Slide

  50. ઃఆ/Πϯείେਿwww
    ϦϞʔταʔόʹSSHͨ͠ͱ͖ͱ͔
    PCม͑ͨͱ͖Ͳ͏͢ΜͩΑwww

    View Slide

  51. ͱ͔ࢥ͍ͬͯ·͢Ͷʁ

    View Slide

  52. DEMO

    View Slide

  53. dotfilesۦಈ։ൃ
    • CLIͷઃఆ͸͢΂ͯςΩετϑΝΠϧ
    • ͭɾ·ɾΓɻ͢΂ͯόʔδϣϯ؅ཧͰ͖Δ
    • ୭͕ݴ͔ͬͨdotfiles
    • GitHubʹͨͯ·͢͸dotfilesϦϙδτϦ
    • [.̋̋rc]ͥΜͿೖΕͯ
    • git clone ͢ΓΌ͜ΜʹͪΘ

    View Slide

  54. View Slide

  55. zplug
    • zshͷϓϥάΠϯϚωʔδϟ
    • zshͷϓϥάΠϯ͔ΒzshrcͰ࢖༻͍ͯ͠ΔCLIπʔ
    ϧʹࢸΔ·ͰΠϯετʔϧՄೳ
    • zsh͕ىಈͨ͠ॠؒʹઃఆϑΝΠϧ಺ͷϓϥάΠϯΛ
    ͢΂ͯΠϯετʔϧ
    • ͿͬͪΌ্͚ڃऀ޲͖͔ͩΒɺ·ͣ͸prezto͋ͨΓ
    ͔Β࢝Ίͨ΄͏͕Α͛͞

    View Slide

  56. make
    • dotfilesͷߏ੒؅ཧ͸makeͰ΍Δ
    • make͸͍͍ͩͨͷOSʹඪ४૷උ
    • chef΍Βansible΍Βେڼͳπʔϧ͸
    dotfilesʹ͸ෆཁ

    View Slide

  57. ਺෼͋Ε͹
    Ͳ͜Ͱ͋Ζ͏ͱ΋
    ϘΫͷ͔Μ͕͍͖͑ͨ͞ΐ͏ͷCLI
    ͕࢖͑Δ

    View Slide

  58. • 1. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁϚκͳͷʁ
    • 2. ࠓ೔͔ΒͰ͖ΔCLIվળTIPS
    • 2-1. ڧྗͳγΣϧΛ࢖͓͏
    • 2-2. ௥ՃίϚϯυ/ϓϥάΠϯͰշదͳ࢓ࣄΛ
    • 2-3. ϙʔλϓϧͳ؀ڥͰ͍ͭͰ΋ύϫϑϧ
    • 3. ·ͱΊ

    View Slide

  59. ·ͱΊ
    • CLI͸ࢥߟͱ௚݁ͯ͠ίϚϯυ࣮ߦ͕Ͱ͖Δ͔Βɺ΋
    ͱ΋ͱͷ࣮ߦ଎౓ͱ͍͋·ͬͯ৭ʑ଎͍
    • ΧελϚΠζͰ޾ͤʹͳΕΔɻ೔ʑͷগ͠ͷվળΛ
    ঃʑʹ΍͍ͬͯ͜͏൒೥΋࿔͘Γଓ͚Ε͹ख์ͤͳ
    ͘ͳΔ
    • CLIઃఆ͸ϙʔλϒϧʹ࣋ͪ͸͜ͼՄೳ
    • ई͕ͨΒͳ͗ͯ͢Vim·ͰͨͲΓண͚ͳ͔ͬͨ

    View Slide

  60. Let’s enjoy CLI!!

    View Slide