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

Goでテンプレートからファイルを自動生成するCLIを作る

 Goでテンプレートからファイルを自動生成するCLIを作る

KazukiHayase

May 24, 2023
Tweet

More Decks by KazukiHayase

Other Decks in Technology

Transcript

  1. GoͰςϯϓϨʔτ͔ΒϑΝΠϧΛࣗಈੜ੒͢ΔCLIΛ࡞Δ
    ʲZOZO x ϕʔεϚΩφ x όΠηϧʳGoษڧձ #1ʲϋΠϒϦου։࠵ʳ


    2023.05.24

    View Slide

  2. ࣗݾ঺հ
    ໊લɿૣ੉࿨ً


    ܦྺɿBuySell Technologiesʹ2021೥ʹ৽ଔೖࣾ


    ॴଐɿ։ൃ2෦ ग़඼؅ཧSaaSνʔϜ


    ໾৬ɿϑϧελοΫΤϯδχΞɺϓϩδΣΫτϦʔμʔ


    झຯɿ։ൃɺϚϯΨɺΞχϝɺϕʔεɺόεέ


    Twitterɿ@KazukiHayase

    View Slide

  3. ΞδΣϯμ
    CLIΛ࡞੒ͨ͠എܠ
    01
    ࡞੒ͨ͠CLIͷ঺հ
    02
    ·ͱΊ
    03

    View Slide

  4. 01
    CLIΛ࡞੒ͨ͠എܠ

    View Slide

  5. CLIΛ࡞੒ͨ͠എܠ
    ● ݩʑੜ࢈ੑΛ޲্ͤ͞ΔCLIΛ࡞ΔจԽ͕νʔϜʹ͋ͬͨ


    ● ϓϩμΫτͷಛੑ্ɺಉ͡Α͏ͳ࣮૷͕ෳ਺Օॴଘࡏ͢Δ


    ○ ※େ࿮͸ಉ͕ͩ͡ɺڞ௨Խ͸೉͍͠

    View Slide

  6. CLIΛ࡞੒ͨ͠എܠ
    ग़඼؅ཧSaaS͸ෳ਺ͷECαΠτ΁ಉ࣌ग़඼Λߦ͏
    ECαΠτ1
    ECαΠτ2
    ECαΠτ3

    View Slide

  7. CLIΛ࡞੒ͨ͠എܠ
    ECαΠτ͝ͱʹAPI͕ҟͳΔ
    ECαΠτ1
    ECαΠτ2
    ECαΠτ3
    json
    xml

    View Slide

  8. CLIΛ࡞੒ͨ͠എܠ
    ● ECαΠτ͝ͱʹAPI͕ҟͳΔͷͰڞ௨Խ͸Ͱ͖ͳ͍


    ● มߋ͞ΕΔഎܠ͕ҟͳΔͷͰɺա౓ͳந৅Խ΋ආ͚͍ͨ


    ● ͨͩ͠ɺॲཧͷେ࿮͸ͲͷECαΠτ΋େମ͸ಉ͡
    ςϯϓϨʔτ͔ΒϑΝΠϧΛੜ੒ͯ͠


    ࣮૷Λޮ཰Խ͍ͨ͠ʂʂ

    View Slide

  9. 02
    ࡞੒ͨ͠CLIͷ঺հ

    View Slide

  10. ׬੒෺

    View Slide

  11. ࣮ߦίϚϯυ
    ର࿩ܗࣜͰೖྗ

    View Slide

  12. ςϯϓϨʔτϑΝΠϧͱੜ੒ϑΝΠϧ
    ೖྗͨ͠ύοέʔδ໊ͱؔ਺໊Ͱ

    ஔ׵͞ΕΔ
    ςϯϓϨʔτϑΝΠϧ ੜ੒ϑΝΠϧ

    View Slide

  13. ࣮૷

    View Slide

  14. ࢖༻ͨ͠ϥΠϒϥϦ
    ● cobra


    ○ CLIΛ؆୯ʹ࡞੒Ͱ͖ΔϥΠϒϥϦ


    ○ Kubernetes΍GitHub CLIͰ΋࢖༻͞Ε͍ͯΔ


    ● text/template


    ○ ςϯϓϨʔτΛݩʹจࣈྻΛੜ੒͢Δඪ४ϥΠϒϥϦ


    ○ ؔ਺΍ม਺ɺfor΍ifͳͲͷ੍ޚߏจ΋ςϯϓϨʔτʹຒΊࠐΊΔ

    View Slide

  15. େ࿮ͷ࡞੒
    cobra-cliΛར༻ͯ͠

    ϘΠϥʔςϯϓϨʔτΛ࡞੒


    cmdύοέʔδʹCLIͷॲཧΛ
    ࣮૷͍ͯ͘͠

    View Slide

  16. ίϚϯυͷ௥Ճ
    cobra.Commandߏ଄ମΛఆٛ


    rootCmdʹ௥Ճ͢Δ͜ͱͰ

    CLI͔Β࣮ߦͰ͖ΔΑ͏ʹͳΔ

    View Slide

  17. ඪ४ೖྗͷऔಘ
    fmt.ScanlnͰඪ४ೖྗΛऔಘ


    ඪ४ೖྗΛݩʹςϯϓϨʔτʹ
    ౉͢σʔλΛmapͰఆٛ

    View Slide

  18. ೖग़ྗϑΝΠϧͷఆٛ
    ςϯϓϨʔτϑΝΠϧͱग़ྗઌͷ
    ϑΝΠϧΛmapͰఆٛ


    ֤ೖग़ྗʹରͯ͠ϧʔϓͰॲཧ

    View Slide

  19. ϑΝΠϧͷಡΈࠐΈͱੜ੒
    ςϯϓϨʔτΛಡΈࠐΈɺ

    ग़ྗઌͷϑΝΠϧΛੜ੒

    View Slide

  20. ςϯϓϨʔτͷஔ׵
    ಡΈࠐΜͩςϯϓϨʔτʹରͯ͠


    ඪ४ೖྗͰड͚औͬͨσʔλΛ

    ࢖༻ͯ͠ஔ׵ॲཧΛ࣮ߦ

    View Slide

  21. ςϯϓϨʔτϑΝΠϧͷྫ

    View Slide

  22. 03
    ·ͱΊ

    View Slide

  23. ·ͱΊ
    ● cobraͱtext/templateͰ؆୯ʹࣗಈੜ੒CLIΛ࡞Εͨ


    ○ ੍ޚߏจ΋ར༻Ͱ͖ΔͷͰɺςϯϓϨʔτ΋ॊೈʹఆٛՄೳ


    ● CLIΛ࡞੒ͨ͜͠ͱͰ࣮૷Λޮ཰Խ͢Δ͜ͱ͕Ͱ͖ͨ


    ● σΟϨΫτϦߏ੒ͳͲͷϧʔϧͷڧ੍ʹ΋׆༻Ͱ͖Δ


    ○ ϧʔϧʹैͬͨςϯϓϨʔτΛఆٛ͢Δ͜ͱͰɺ

    ࣗવͱϧʔϧʹै࣮ͬͨ૷ʹͳΔΑ͏ʹ࢓૊ΈԽͰ͖Δ

    View Slide

  24. THANK YOU

    View Slide