$30 off During Our Annual Pro Sale. View Details »

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

  2. About me • iRidge No.1 Vimmer(1st among 1 people) •

    My kindle library 6000 over • color schema of this slide is [molokai]
  3. ӳޠ͸͜͜·Ͱ

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

  5. ΞδΣϯμ • 1. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁϚκͳͷʁ • 2. ࠓ೔͔ΒͰ͖ΔCLIվળTIPS • 2-1. ڧྗͳγΣϧΛ࢖͓͏

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

    2-2. ௥ՃίϚϯυ/ϓϥάΠϯͰշదͳ࢓ࣄΛ • 2-3. ϙʔλϓϧͳ؀ڥͰ͍ͭͰ΋ύϫϑϧ • 3. ·ͱΊ
  7. ͦ΋ͦ΋લఏ͕ҧ͏ • GUI͸୭Ͱ΋؆୯ʹ࢖͑ΔΑ͏ʹɺϢʔβʹ༩͑ Δબ୒ࢶΛͱͯ΋গͳ͘ɺڧྗͳ΋ͷʹ͢Δ • CLI(ͱ͍͏͔UNIX)͸ͦ΋ͦ΋ॳ৺ऀΛड͚ೖ ΕΔͭ΋ΓͳͲͳ͍ɻʮԿΛ͍ͯ͠Δ͔Θ͔Β ͳ͍ͷͳΒɺ͜͜ʹ͍Δ΂͖Ͱ͸ͳ͍ʯ͕ઃܭ ࢥ૝

  8. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁ • CLI͸৭ʑ଎͍ • ىಈ͕଎͍ • Ϩεϙϯε͕଎͍ • શ෦CLIͰ΍Ε͹੾Γସ͑ͳ͠ •

    GIT΋DBૢ࡞΋ςετΤσΟοτ΋͢΂ͯ̍ը໘ • ڴҖͷ֦ுੑ • GUIͰͰ͖ͯCLIʹͰ͖ͳ͍͜ͱ͸ͳ͍
  9. CLI͸ࢥߟΛૢ࡞ʹ௚݁͢Δ • GUIͳΒ • ૢ࡞͍ͨͬ͠! • ରԠ͢Διϑτ΢ΣΞΛىಈ͢Δɻ·ͨ͸΢Οϯυ΢੾Γସ͑ • ϝχϡʔΛ୳͢ •

    ૢ࡞Λ࣮ߦ͢Δ • CLIͳΒ • ૢ࡞͍ͨͬ͠! • ରԠ͢ΔίϚϯυΛ࣮ߦ͢Δ
  10. σϝϦοτ • ֶशίετ͕ߴ͍…ͨͩͻͨ͢Βʹߴ͍ • ίϚϯυΛ֮͑ͳ͍ͱԿ΋Ͱ͖ͳ͍ • ઃఆϑΝΠϧ͕΋͸΍ࠇຐज़ • shell scriptΛ௕จॻ͘ͱՄಡੑ͕͑Β͍͜ͱʹ

    • தಟੑ͕ߴ͍ • Կނ͔ೋݴ໨ʹ͸VimͬͯݴͬͯΔɻφϯσ
  11. None
  12. Ϛκͳͷʁ

  13. ϋΠ

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

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

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

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

    ͜ͷ࣌఺ͰઃఆϑΝΠϧʹ+200ίϛοτ • ࣾೋපΛ͜͡ΒͤΔ
  18. • 1. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁϚκͳͷʁ • 2. ࠓ೔͔ΒͰ͖ΔCLIվળTIPS • 2-1. ڧྗͳγΣϧΛ࢖͓͏ •

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

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

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

  22. • 1. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁϚκͳͷʁ • 2. ࠓ೔͔ΒͰ͖ΔCLIվળTIPS • 2-1. ڧྗͳγΣϧΛ࢖͓͏ •

    2-2. ௥ՃίϚϯυ/ϓϥάΠϯͰշదͳ࢓ࣄΛ • 2-3. ϙʔλϓϧͳ؀ڥͰ͍ͭͰ΋ύϫϑϧ • 3. ·ͱΊ
  23. ZSH • ͭΑ͍Shell • ิ׬͕௒ศརʹͳΔ • ϓϥάΠϯʹΑΔΧελϚΠζੑ͕ߴ͍ • ࢀߟ[׽ͷZSH](http://news.mynavi.jp/ column/zsh/)

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

  25. DEMO

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

  27. DEMO

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

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

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

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

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

  33. DEMO

  34. • 1. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁϚκͳͷʁ • 2. ࠓ೔͔ΒͰ͖ΔCLIվળTIPS • 2-1. ڧྗͳγΣϧΛ࢖͓͏ •

    2-2. ௥ՃίϚϯυ/ϓϥάΠϯͰշదͳ࢓ࣄΛ • 2-3. ϙʔλϓϧͳ؀ڥͰ͍ͭͰ΋ύϫϑϧ • 3. ·ͱΊ
  35. ͓͠ͳ͕͖ • zsh-syntax-highlighting • zsh-autosuggestions • zsh-completions • fzf •

    enhancd • ghq • tig
  36. zsh-syntax-highlighting • syntax highlight is GOT !! • γϯλοΫε͕ద༻͞ΕΔɻͨͩͦΕ͚ͩ •

    ͦΕ͚ͩͰޡૢ࡞͕֨ஈʹݮΔ
  37. zsh-autosuggestions • ώετϦ͕ߋʹڧྗʹͳΔ • ώετϦͷ಺༰ΛࣗಈతʹαδΣετ͢Δ • ίϚϯυଧ伴ˠώετϦద༻ͷ൑அ͕௒଎ʹ ͳΔ

  38. ·ͱΊͯDEMO

  39. fzf • fuzzy matcher(;͊͡ʔ·ͬͪΌʔ)ͱ͔͍ΘΕΔ΍ ͭɻଟ͘ͷྨࣅπʔϧ͕੾᛭ୖຏ͢ΔCLIπʔϧͷҰେ δϟϯϧͰ͋Δɻ΄͔ʹ͸pecoͱ͔͋Δ • stdinΛϦετදࣔ͢Δ • ೖྗΩʔϫʔυͰϚονϯά͢Δ

    • બ୒߲ͨ͠໨Λstdoutʹ౉͢ • ͨͩͦΕ͚ͩͷπʔϧɻ߇͑ΊʹݴͬͯGOT
  40. DEMO

  41. fzfͭΑ͍ • ͓Θ͔Γ͍͚ͨͩͨͩΖ͏͔ʁ • fzf͸CLIૢ࡞ʹ͓͚Δબ୒ͷखॱΛݶΓͳ͘ߴ଎Խ͢Δɻ • Ұཡදࣔ(ex:ϒϥϯνҰཡදࣔ) • ୳͢(ex:େྔͷϒϥϯν͔Β໨Ͱݟ͕ͯ͢͞) •

    ૢ࡞ର৅ʹίϚϯυ࣮ߦ(ex:ϒϥϯνΛνΣοΫΞ΢τ) • ͔͠΋ΧελϚΠζ࣍ୈͰԿʹͰ΋ద༻Մೳ
  42. enhancd • CLIૢ࡞ʹ͓͍ͯ࠷΋࣮ߦ͞ΕΔίϚϯυͱ͸ [cd]ͳ͍͠[ls]Ͱ͋Δɻҟ࿦͸ೝΊͳ͍ • [cd]ͷޮ཰Խ==CLIͷޮ཰Խ • લड़ͨ͠fzfΛ׆༻ํ๏ͷதͰ΋࠷΋༗༻ͳ΋ ͷͷҰͭ

  43. DEMO

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

    $GOPATH/src/{domain}/{user}/{repo}
  45. DEMO

  46. tig • CLIͷgitΫϥΠΞϯτ • CLIͰgitૢ࡞͍ͯ͠ΔΞφλɻtigΛ࢖Θͳ͍ͳΜͯਓੜͷ ൒෼ଛ͍ͯ͠·͢Α • ଎͍ɻͦͯ͠syntax highlight is

    GOT • add, resetʹΑΔstage/unstageૢ࡞͕2ഒ଎ • log, blameʹΑΔௐ͕ࠪ2ഒ଎ • ΧελϚΠζ͢Ε͹rebase -i ΋2ഒ଎
  47. DEMO

  48. • 1. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁϚκͳͷʁ • 2. ࠓ೔͔ΒͰ͖ΔCLIվળTIPS • 2-1. ڧྗͳγΣϧΛ࢖͓͏ •

    2-2. ௥ՃίϚϯυ/ϓϥάΠϯͰշదͳ࢓ࣄΛ • 2-3. ϙʔλϓϧͳ؀ڥͰ͍ͭͰ΋ύϫϑϧ • 3. ·ͱΊ
  49. ͜͜·Ͱฉ͍ͯ Ͳ͏ࢥ͍·͔ͨ͠ʁ

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

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

  52. DEMO

  53. dotfilesۦಈ։ൃ • CLIͷઃఆ͸͢΂ͯςΩετϑΝΠϧ • ͭɾ·ɾΓɻ͢΂ͯόʔδϣϯ؅ཧͰ͖Δ • ୭͕ݴ͔ͬͨdotfiles • GitHubʹͨͯ·͢͸dotfilesϦϙδτϦ •

    [.̋̋rc]ͥΜͿೖΕͯ • git clone ͢ΓΌ͜ΜʹͪΘ
  54. None
  55. zplug • zshͷϓϥάΠϯϚωʔδϟ • zshͷϓϥάΠϯ͔ΒzshrcͰ࢖༻͍ͯ͠ΔCLIπʔ ϧʹࢸΔ·ͰΠϯετʔϧՄೳ • zsh͕ىಈͨ͠ॠؒʹઃఆϑΝΠϧ಺ͷϓϥάΠϯΛ ͢΂ͯΠϯετʔϧ •

    ͿͬͪΌ্͚ڃऀ޲͖͔ͩΒɺ·ͣ͸prezto͋ͨΓ ͔Β࢝Ίͨ΄͏͕Α͛͞
  56. make • dotfilesͷߏ੒؅ཧ͸makeͰ΍Δ • make͸͍͍ͩͨͷOSʹඪ४૷උ • chef΍Βansible΍Βେڼͳπʔϧ͸ dotfilesʹ͸ෆཁ

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

  58. • 1. ͳΜͰCLIͳΜͯ࢖ͬͯΜͷʁϚκͳͷʁ • 2. ࠓ೔͔ΒͰ͖ΔCLIվળTIPS • 2-1. ڧྗͳγΣϧΛ࢖͓͏ •

    2-2. ௥ՃίϚϯυ/ϓϥάΠϯͰշదͳ࢓ࣄΛ • 2-3. ϙʔλϓϧͳ؀ڥͰ͍ͭͰ΋ύϫϑϧ • 3. ·ͱΊ
  59. ·ͱΊ • CLI͸ࢥߟͱ௚݁ͯ͠ίϚϯυ࣮ߦ͕Ͱ͖Δ͔Βɺ΋ ͱ΋ͱͷ࣮ߦ଎౓ͱ͍͋·ͬͯ৭ʑ଎͍ • ΧελϚΠζͰ޾ͤʹͳΕΔɻ೔ʑͷগ͠ͷվળΛ ঃʑʹ΍͍ͬͯ͜͏൒೥΋࿔͘Γଓ͚Ε͹ख์ͤͳ ͘ͳΔ • CLIઃఆ͸ϙʔλϒϧʹ࣋ͪ͸͜ͼՄೳ

    • ई͕ͨΒͳ͗ͯ͢Vim·ͰͨͲΓண͚ͳ͔ͬͨ
  60. Let’s enjoy CLI!!