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

spf13/cobraでもできる簡単CLIツール / Fukuoka.go #11

spf13/cobraでもできる簡単CLIツール / Fukuoka.go #11

Fukuoka.go #11 LT

Ken’ichiro Oyama

June 14, 2018
Tweet

More Decks by Ken’ichiro Oyama

Other Decks in Technology

Transcript

  1. খࢁ݈Ұ࿠(.01FQBCP *OD
    'VLVPLBHP
    TQGDPCSBͰ΋Ͱ͖Δ
    ؆୯$-*πʔϧ


    View Slide

  2. γχΞΤϯδχΞ
    খࢁ݈Ұ࿠!L-P8
    ϗεςΟϯάࣄۀ෦ϗεςΟϯάάϧʔϓϚωʔδυΫϥ΢υνʔϜ
    IUUQTHJUIVCDPNL-P8


    View Slide

  3. .Z$-*UPPMT
    w BXTQFD
    w LPNB
    w PDUPQVCMJTI
    w PDUPQBDLBHF
    w DFSUNBO
    w TDPOC
    w UNQGL
    w SFDJQF
    w CVO
    w LVNPNF
    w CBDLMPHDQ
    w EFWMPDBM


    View Slide

  4. .Z$-*UPPMT
    w BXTQFD
    w LPNB
    w PDUPQVCMJTI
    w PDUPQBDLBHF
    w DFSUNBO
    w TDPOC
    w UNQGL
    w SFDJQF
    w CVO
    w LVNPNF
    w CBDLMPHDQ
    w EFWMPDBM


    PQUQBSTF
    $BLF4IFMM
    /PEF
    #BTI

    View Slide

  5. *5IPS


    View Slide

  6. 5IPS
    w5IPSJTBUPPMLJUGPSCVJMEJOHQPXFSGVMDPNNBOEMJOFJOUFSGBDFT
    *UJTVTFEJO#VOEMFS 7BHSBOU 3BJMTBOEPUIFST
    wIUUQXIBUJTUIPSDPN
    w3VCZ੡ͷϑϧελοΫͳ$-*ϥΠϒϥϦ
    wҾ਺΍Φϓγϣϯͷ૊Έָཱ͕ͯͰػೳͷ࣮૷ʹूதͰ͖Δ
    wศརʹ࡞ΒΕ͍͗ͯͯ͢ɺ΋͸΍3VCZΛॻ͍͍ͯΔͱ͍͏ΑΓ5IPS
    Λॻ͍͍ͯΔ


    View Slide

  7. ͱ͜ΖͰ࠷ۙ(PΛ֮͑·ͨ͠


    View Slide

  8. .Z$-*UPPMT XSJUUFOJO(P


    View Slide

  9. DHSQT
    wDHSQTJTBTFUPGDPNNBOETGPSDIFDLJOHDHSPVQT
    wIUUQTHJUIVCDPNL-P8DHSQT
    wେྔͷDHSPVQ͕࡞੒͞ΕΔ؀ڥͰɺQFDPͳͲͱ࿈ܞͯ͠ޮ཰తʹ
    DHSPVQ৘ใΛऔΓѻ͏ͨΊͷίϚϯυ


    > cgrps stat $(cgrps ls | peco)
    > ps u --pid $(cgrps ls | peco | cgrps pids | xargs)

    View Slide



  10. View Slide

  11. UCMT
    wUCMTJTB$*'SJFOEMZUPPMGPSEPDVNFOUBEBUBCBTF XSJUUFOJO(P
    wIUUQTHJUIVCDPNL-P8UCMT
    w.BSLEPXO ('.
    ܗࣜͰσʔλϕʔευΩϡϝϯτΛੜ੒ͯ͘͠ΕΔί
    Ϛϯυ
    w$*ʹ૊ΈࠐΜͰυΩϡϝϯτͷߋ৽ΛνΣοΫ͢ΔίϚϯυ΋͋Δ


    > tbls doc postgres://user:pass@hostname:5432/dbname ./dbdoc

    View Slide

  12. View Slide

  13. (PͰ$-*πʔϧΛ࡞Δ


    View Slide

  14. (PͰ$-*πʔϧΛ࡞Δ
    w$-*ϥΠϒϥϦʢϑϨʔϜϫʔΫʣΛ࢖͏
    wͨͩϥΠϒϥϦΛ࢖͏ͷͰ͸ͳ͘δΣωϨʔτπʔϧΛ࢖ͬͯߴ଎ʹ
    ϓϩτλΠϓΛ࡞Δ


    UDOLTNHDMJ
    VSGBWFDMJ
    NJUDIFMMIDMJ
    HPDNE
    &YBNQMF
    IUUQTTQFBLFSEFDLDPNUDOLTNLPNBOEPSBJOUVSVOJUVJUFZVSVUPLJOJQVGBMTFZVSVLPUPOVNCFSZBQDBTJB TMJEF

    View Slide

  15. TQGDPCSB


    View Slide



  16. Cobra is both a library for creating powerful modern CLI applications
    as well as a program to generate applications and command files.

    View Slide

  17. TQGDPCSB
    w,VCFOFUFT΍.PCZ %PDLFS
    ɺ0QFO4IJGUͳͲͰ࢖ΘΕ͍ͯΔ
    $-*ϥΠϒϥϦʢϑϨʔϜϫʔΫʣͰ͋ΓδΣωϨʔτπʔϧ
    wDPCSBͷ਽ܗΛDPCSBΛ࢖ͬͯߴ଎ʹϓϩτλΠϓΛ࡞Δ


    TQGDPCSB TQGDPCSB

    View Slide

  18. View Slide

  19. Πϯετʔϧ͔ΒίϚϯυ࡞੒ͷྫ


    View Slide



  20. /> go get github.com/spf13/cobra/cobra
    /> cobra init github.com/k1LoW/fukgo
    /> cd $GOPATH/src/github.com/k1LoW/fukgo
    fukgo/> cobra add hello
    fukgo/> go build
    fukgo/> ./cobra
    1
    2
    3
    4
    5
    6

    View Slide



  21. View Slide

  22. ؆୯


    View Slide

  23. DPCSBίϚϯυ
    wDPCSBJOJUTQGDPCSB΍TQGWJQFSΛ࢖ͬͨ$-*πʔϧͷ਽ܗΛ
    ࡞੒͢ΔίϚϯυ
    wTQGWJQFSʜDPOpHϑΝΠϧΛಡΈࠐΉͨΊͷػߏΛఏڙ͢Δϥ
    ΠϒϥϦʢඞཁͳ͍৔߹͸ŠWJQFSGBMTFʣ
    wDPCSBBEEαϒίϚϯυͷ਽ܗΛ௥Ճ࡞੒͢ΔίϚϯυ


    View Slide

  24. ੜ੒͞Εͨιʔεͷߏ੒
    GVLHP
    ᵓᴷᴷ-*$&/4&
    ᵓᴷᴷDNE
    ᴹᵓᴷᴷIFMMPHPʜGVLHPIFMMPίϚϯυͷίʔυ
    ᴹᵋᴷᴷSPPUHPʜGVLHPίϚϯυͷίʔυ
    ᵋᴷᴷNBJOHP


    View Slide

  25. ίʔυͷઆ໌͸ׂѪ
    ͨͿΜݟͨΒ͙͢Θ͔Δ
    ͘Β͍ʹ͸Θ͔Γ΍͍͢


    View Slide

  26. TQGDPCSBͰͰ͖Δ͜ͱ
    wίϚϯυ͚ͩͷελΠϧ΋αϒίϚϯυΛ࣋ͭελΠϧ΋࣮૷Մೳ
    wUIPSHFNͰ͸αϒίϚϯυͷελΠϧҎ֎ͷ࣮ݱ͕೉͍͠
    wTQGDPCSBͷ৔߹͸DNESPPUHPΛҭͯΕ͹ྑ͍
    wIFMQίϚϯυͷࣗಈ࡞੒΍Φϓγϣϯͷ؆୯੍ޚͳͲ͸ଞͷ$-*ϥΠ
    ϒϥϦͱಉ༷ʹՄೳ
    wTQGWJQFSͱͷ࿈ܞͰઃఆϑΝΠϧͱͷ࿈ܞ΋Մೳ


    View Slide

  27. ଞͷ$-*ϥΠϒϥϦͰͰ͖Δ͜ͱ͸
    Ͱ͖ͦ͏


    View Slide

  28. Ͳͷ$-*ϥΠϒϥϦͰ΋े෼ʹྑ͍
    ޷ΈͰબΜͰ


    View Slide

  29. *TQGDPCSB


    View Slide

  30. 5IBOLZPV
    ࠷৽ͷ࠾༻৘ใΛνΣοΫˠ !QC@SFDSVJU

    View Slide