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

CLI構築のススメ

 CLI構築のススメ

nyankotaro

May 23, 2022
Tweet

More Decks by nyankotaro

Other Decks in Programming

Transcript

  1. $6* ίϚϯυͷ஌͕ࣝඞཁ %FMFUFܥίϚϯυΛෆ༻ҙʹ ࣮ߦ͢ΔՄೳੑ͕͋Δ ॲཧͷࣗಈԽ ը໘͕มΘΒͳ͍ (6*Ͱ͸Ͱ͖ͳ͍ૢ࡞͕ Ͱ͖Δ (6* ΞοϓσʔτͰը໘͕มΘΔ

    Ϧιʔε͕ଟ͍ͱಡΈࠐΈʹ࣌ ͕͔͔ؒΔ ௚ײతʹૢ࡞Ͱ͖Δ ը૾ಈըԽʹ࢖͑Δ 8 (6*ͱ$6* ϝϦοτ σϝϦοτ
  2. 32 $-*ߏஙͷεεϝ $-*ͷ࢝Ίํ IUUQTBXTDMJBNB[POBXTDPNWEPDVNFOUBUJPOBQJMBUFTUJOEFYIUNM ɾ ɾ ɾ ɾ ɾ ɾ

    IUUQTBXTDMJBNB[POBXTDPNWEPDVNFOUBUJPOBQJMBUFTUSFGFSFODFFDJOEFYIUNM
  3. 33 $-*ߏஙͷεεϝ $-*ͷ࢝Ίํ IUUQTBXTDMJBNB[POBXTDPNWEPDVNFOUBUJPOBQJMBUFTUJOEFYIUNM ɾ ɾ ɾ ɾ ɾ ɾ

    IUUQTBXTDMJBNB[POBXTDPNWEPDVNFOUBUJPOBQJMBUFTUSFGFSFODFFDJOEFYIUNM &$Ͱ࢖༻Ͱ͖Δ"1*ͷҰཡ͕ࡌ͍ͬͯΔ ࣌఺Ͱݸ ಈࢺ˓˓Ͱ"1*໊͕ܾ·ͬͯΔͷ͕ಛ௃ ͳʹ͔ͱࢀরܥͷEFTDSJCF˓˓ʹ͓ੈ࿩ʹͳΔ ࠓճ͸SVOJOTUBODFTΛݟͯΈΔ
  4. 41 $-*ߏஙͷεεϝ $-*εέϧτϯ HFOFSBUFDMJTLFMFUPO BXT FDSVOJOTUBODFTHFOFSBUFDMJTLFMFUPOJOQVUFDSVOJOTUKTPO \ #MPDL%FWJDF.BQQJOHT< \ %FWJDF/BNF

    7JSUVBM/BNF &CT\ %FMFUF0O5FSNJOBUJPOUSVF *PQT 4OBQTIPU*E 7PMVNF4J[F 7PMVNF5ZQFJP ,NT,FZ*E 5ISPVHIQVU 0VUQPTU"SO &ODSZQUFEUSVF ^ /P%FWJDF ^ > *NBHF*E *OTUBODF5ZQFNEOYMBSHF *QW"EESFTT$PVOU *QW"EESFTTFT< \ *QW"EESFTT ^ > ,FSOFM*E ,FZ/BNF .BY$PVOU .JO$PVOU .POJUPSJOH\ &OBCMFEUSVF ^ 1MBDFNFOU\ "WBJMBCJMJUZ;POF "GGJOJUZ (SPVQ/BNF 1BSUJUJPO/VNCFS )PTU*E 5FOBODZIPTU 4QSFBE%PNBJO )PTU3FTPVSDF(SPVQ"SO ^ 3BNEJTL*E 4FDVSJUZ(SPVQ*ET<  > 4FDVSJUZ(SPVQT<  > ^ Ұ෦লུͨ͠αϯϓϧ ίϚϯυ࣮ߦʹඞཁͳύϥϝʔλʔΛ͢΂ͯग़ྗ͢ΔΦϓγϣϯ DMJJOQVUKTPO BXT FDSVOJOTUBODFTDMJJOQVUKTPO GJMFFDSVOJOTUKTPO ύϥϝʔλʔϑΝΠϧΛಡΈࠐΈ"84$-*Λ࣮ߦ͢ΔΦϓγϣϯ "84$-*εέϧτϯͱೖྗϑΝΠϧIUUQTEPDTBXTBNB[PODPNKB@KQDMJMBUFTUVTFSHVJEFDMJVTBHFTLFMFUPOIUNM
  5. 42 $-*ߏஙͷεεϝ $-*ΫΤϦ RVFSZ BXT FDEFTDSJCFWPMVNFT "84$-*ͷग़ྗΛՃ޻͢ΔΦϓγϣϯ ϘϦϡʔϜ͕Ξλον͞ΕͯΔ*OTUBODF*EΛௐ΂Δ৔߹ BXT FDEFTDSJCFWPMVNFT=

    RVFSZ ΫϥΠΞϯτଆͷϑΟϧλϦϯάIUUQTEPDTBXTBNB[PODPNKB@KQDMJMBUFTUVTFSHVJEFDMJVTBHFGJMUFSIUNMDMJVTBHFGJMUFSDMJFOUTJEF \ 7PMVNFT< \ "UUBDINFOUT< \ "UUBDI5JNF5 %FWJDF%FWJDF *OTUBODF*E*OTUBODF*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E %FMFUF0O5FSNJOBUJPOUSVF ^ > "WBJMBCJMJUZ;POF"WBJMBCJMJUZ;POF $SFBUF5JNF5 &ODSZQUFEUSVF ,NT,FZ*E,NT,FZ*E 0VUQPTU"SO0VUQPTU"SO 4J[F 4OBQTIPU*E4OBQTIPU*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E *PQT 7PMVNF5ZQF7PMVNF5ZQF 'BTU3FTUPSFEUSVF .VMUJ"UUBDI&OBCMFEUSVF 5ISPVHIQVU ^ \ "UUBDINFOUT< \ *OTUBODF*E*OTUBODF*E ^ > ^ > ^
  6. 43 $-*ߏஙͷεεϝ $-*ΫΤϦ RVFSZ BXT FDEFTDSJCFWPMVNFT BXT FDEFTDSJCFWPMVNFT= RVFSZ7PMVNFT<> ΫϥΠΞϯτଆͷϑΟϧλϦϯάIUUQTEPDTBXTBNB[PODPNKB@KQDMJMBUFTUVTFSHVJEFDMJVTBHFGJMUFSIUNMDMJVTBHFGJMUFSDMJFOUTJEF

    \ 7PMVNFT< \ "UUBDINFOUT< \ "UUBDI5JNF5 %FWJDF%FWJDF *OTUBODF*E*OTUBODF*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E %FMFUF0O5FSNJOBUJPOUSVF ^ > "WBJMBCJMJUZ;POF"WBJMBCJMJUZ;POF $SFBUF5JNF5 &ODSZQUFEUSVF ,NT,FZ*E,NT,FZ*E 0VUQPTU"SO0VUQPTU"SO 4J[F 4OBQTIPU*E4OBQTIPU*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E *PQT 7PMVNF5ZQF7PMVNF5ZQF 'BTU3FTUPSFEUSVF .VMUJ"UUBDI&OBCMFEUSVF 5ISPVHIQVU ^ \ "UUBDINFOUT< \ *OTUBODF*E*OTUBODF*E ^ > ^ > ^ "84$-*ͷग़ྗΛՃ޻͢ΔΦϓγϣϯ ϘϦϡʔϜ͕Ξλον͞ΕͯΔ*OTUBODF*EΛௐ΂Δ৔߹
  7. 44 $-*ߏஙͷεεϝ $-*ΫΤϦ RVFSZ BXT FDEFTDSJCFWPMVNFT BXT FDEFTDSJCFWPMVNFT= RVFSZ7PMVNFT<> ΫϥΠΞϯτଆͷϑΟϧλϦϯάIUUQTEPDTBXTBNB[PODPNKB@KQDMJMBUFTUVTFSHVJEFDMJVTBHFGJMUFSIUNMDMJVTBHFGJMUFSDMJFOUTJEF

    \ 7PMVNFT< \ "UUBDINFOUT< \ "UUBDI5JNF5 %FWJDF%FWJDF *OTUBODF*E*OTUBODF*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E %FMFUF0O5FSNJOBUJPOUSVF ^ > "WBJMBCJMJUZ;POF"WBJMBCJMJUZ;POF $SFBUF5JNF5 &ODSZQUFEUSVF ,NT,FZ*E,NT,FZ*E 0VUQPTU"SO0VUQPTU"SO 4J[F 4OBQTIPU*E4OBQTIPU*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E *PQT 7PMVNF5ZQF7PMVNF5ZQF 'BTU3FTUPSFEUSVF .VMUJ"UUBDI&OBCMFEUSVF 5ISPVHIQVU ^ \ "UUBDINFOUT< \ *OTUBODF*E*OTUBODF*E ^ > ^ > ^ "84$-*ͷग़ྗΛՃ޻͢ΔΦϓγϣϯ ϘϦϡʔϜ͕Ξλον͞ΕͯΔ*OTUBODF*EΛௐ΂Δ৔߹
  8. 45 $-*ߏஙͷεεϝ $-*ΫΤϦ RVFSZ BXT FDEFTDSJCFWPMVNFT BXT FDEFTDSJCFWPMVNFT= RVFSZ7PMVNFT<>"UUBDINFOUT<> ΫϥΠΞϯτଆͷϑΟϧλϦϯάIUUQTEPDTBXTBNB[PODPNKB@KQDMJMBUFTUVTFSHVJEFDMJVTBHFGJMUFSIUNMDMJVTBHFGJMUFSDMJFOUTJEF

    \ 7PMVNFT< \ "UUBDINFOUT< \ "UUBDI5JNF5 %FWJDF%FWJDF *OTUBODF*E*OTUBODF*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E %FMFUF0O5FSNJOBUJPOUSVF ^ > "WBJMBCJMJUZ;POF"WBJMBCJMJUZ;POF $SFBUF5JNF5 &ODSZQUFEUSVF ,NT,FZ*E,NT,FZ*E 0VUQPTU"SO0VUQPTU"SO 4J[F 4OBQTIPU*E4OBQTIPU*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E *PQT 7PMVNF5ZQF7PMVNF5ZQF 'BTU3FTUPSFEUSVF .VMUJ"UUBDI&OBCMFEUSVF 5ISPVHIQVU ^ \ "UUBDINFOUT< \ *OTUBODF*E*OTUBODF*Ez ^ > ^ > ^ "84$-*ͷग़ྗΛՃ޻͢ΔΦϓγϣϯ ϘϦϡʔϜ͕Ξλον͞ΕͯΔ*OTUBODF*EΛௐ΂Δ৔߹
  9. 46 $-*ߏஙͷεεϝ $-*ΫΤϦ RVFSZ BXT FDEFTDSJCFWPMVNFT BXT FDEFTDSJCFWPMVNFT= RVFSZ7PMVNFT<>"UUBDINFOUT<> ΫϥΠΞϯτଆͷϑΟϧλϦϯάIUUQTEPDTBXTBNB[PODPNKB@KQDMJMBUFTUVTFSHVJEFDMJVTBHFGJMUFSIUNMDMJVTBHFGJMUFSDMJFOUTJEF

    \ 7PMVNFT< \ "UUBDINFOUT< \ "UUBDI5JNF5 %FWJDF%FWJDF *OTUBODF*E*OTUBODF*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E %FMFUF0O5FSNJOBUJPOUSVF ^ > "WBJMBCJMJUZ;POF"WBJMBCJMJUZ;POF $SFBUF5JNF5 &ODSZQUFEUSVF ,NT,FZ*E,NT,FZ*E 0VUQPTU"SO0VUQPTU"SO 4J[F 4OBQTIPU*E4OBQTIPU*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E *PQT 7PMVNF5ZQF7PMVNF5ZQF 'BTU3FTUPSFEUSVF .VMUJ"UUBDI&OBCMFEUSVF 5ISPVHIQVU ^ \ "UUBDINFOUT< \ *OTUBODF*E*OTUBODF*E ^ > ^ > ^ "84$-*ͷग़ྗΛՃ޻͢ΔΦϓγϣϯ ϘϦϡʔϜ͕Ξλον͞ΕͯΔ*OTUBODF*EΛௐ΂Δ৔߹
  10. 47 $-*ߏஙͷεεϝ $-*ΫΤϦ RVFSZ BXT FDEFTDSJCFWPMVNFT BXT FDEFTDSJCFWPMVNFT= RVFSZ7PMVNFT<>"UUBDINFOUT<>*OTUBODF*E ΫϥΠΞϯτଆͷϑΟϧλϦϯάIUUQTEPDTBXTBNB[PODPNKB@KQDMJMBUFTUVTFSHVJEFDMJVTBHFGJMUFSIUNMDMJVTBHFGJMUFSDMJFOUTJEF

    \ 7PMVNFT< \ "UUBDINFOUT< \ "UUBDI5JNF5 %FWJDF%FWJDF *OTUBODF*E*OTUBODF*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E %FMFUF0O5FSNJOBUJPOUSVF ^ > "WBJMBCJMJUZ;POF"WBJMBCJMJUZ;POF $SFBUF5JNF5 &ODSZQUFEUSVF ,NT,FZ*E,NT,FZ*E 0VUQPTU"SO0VUQPTU"SO 4J[F 4OBQTIPU*E4OBQTIPU*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E *PQT 7PMVNF5ZQF7PMVNF5ZQF 'BTU3FTUPSFEUSVF .VMUJ"UUBDI&OBCMFEUSVF 5ISPVHIQVU ^ \ "UUBDINFOUT< \ *OTUBODF*E*OTUBODF*E ^ > ^ > ^ "84$-*ͷग़ྗΛՃ޻͢ΔΦϓγϣϯ ϘϦϡʔϜ͕Ξλον͞ΕͯΔ*OTUBODF*EΛௐ΂Δ৔߹
  11. 48 $-*ߏஙͷεεϝ $-*ΫΤϦ RVFSZ BXT FDEFTDSJCFWPMVNFT BXT FDEFTDSJCFWPMVNFT= RVFSZ7PMVNFT<>"UUBDINFOUT<>*OTUBODF*E ΫϥΠΞϯτଆͷϑΟϧλϦϯάIUUQTEPDTBXTBNB[PODPNKB@KQDMJMBUFTUVTFSHVJEFDMJVTBHFGJMUFSIUNMDMJVTBHFGJMUFSDMJFOUTJEF

    \ 7PMVNFT< \ "UUBDINFOUT< \ "UUBDI5JNF5 %FWJDF%FWJDF *OTUBODF*E*OTUBODF*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E %FMFUF0O5FSNJOBUJPOUSVF ^ > "WBJMBCJMJUZ;POF"WBJMBCJMJUZ;POF $SFBUF5JNF5 &ODSZQUFEUSVF ,NT,FZ*E,NT,FZ*E 0VUQPTU"SO0VUQPTU"SO 4J[F 4OBQTIPU*E4OBQTIPU*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E *PQT 7PMVNF5ZQF7PMVNF5ZQF 'BTU3FTUPSFEUSVF .VMUJ"UUBDI&OBCMFEUSVF 5ISPVHIQVU ^ \ "UUBDINFOUT< \ *OTUBODF*E*OTUBODF*E ^ > ^ > ^ "84$-*ͷग़ྗΛՃ޻͢ΔΦϓγϣϯ ϘϦϡʔϜ͕Ξλον͞ΕͯΔ*OTUBODF*EΛௐ΂Δ৔߹
  12. 49 $-*ߏஙͷεεϝ $-*ΫΤϦ RVFSZ BXT FDEFTDSJCFWPMVNFT BXT FDEFTDSJCFWPMVNFT= RVFSZ7PMVNFT<>"UUBDINFOUT<>*OTUBODF*E <

    z*OTUBODF*E z*OTUBODF*E > ΫϥΠΞϯτଆͷϑΟϧλϦϯάIUUQTEPDTBXTBNB[PODPNKB@KQDMJMBUFTUVTFSHVJEFDMJVTBHFGJMUFSIUNMDMJVTBHFGJMUFSDMJFOUTJEF \ 7PMVNFT< \ "UUBDINFOUT< \ "UUBDI5JNF5 %FWJDF%FWJDF *OTUBODF*E*OTUBODF*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E %FMFUF0O5FSNJOBUJPOUSVF ^ > "WBJMBCJMJUZ;POF"WBJMBCJMJUZ;POF $SFBUF5JNF5 &ODSZQUFEUSVF ,NT,FZ*E,NT,FZ*E 0VUQPTU"SO0VUQPTU"SO 4J[F 4OBQTIPU*E4OBQTIPU*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E *PQT 7PMVNF5ZQF7PMVNF5ZQF 'BTU3FTUPSFEUSVF .VMUJ"UUBDI&OBCMFEUSVF 5ISPVHIQVU ^ \ "UUBDINFOUT< \ *OTUBODF*E*OTUBODF*Ez ^ > ^ > ^ "84$-*ͷग़ྗΛՃ޻͢ΔΦϓγϣϯ ϘϦϡʔϜ͕Ξλον͞ΕͯΔ*OTUBODF*EΛௐ΂Δ৔߹
  13. 50 $-*ߏஙͷεεϝ $-*ΫΤϦ RVFSZ BXT FDEFTDSJCFWPMVNFT BXT FDEFTDSJCFWPMVNFT= RVFSZ7PMVNFT<>"UUBDINFOUT<>*OTUBODF*E <

    z*OTUBODF*Ez > ΫϥΠΞϯτଆͷϑΟϧλϦϯάIUUQTEPDTBXTBNB[PODPNKB@KQDMJMBUFTUVTFSHVJEFDMJVTBHFGJMUFSIUNMDMJVTBHFGJMUFSDMJFOUTJEF \ 7PMVNFT< \ "UUBDINFOUT< \ "UUBDI5JNF5 %FWJDF%FWJDF *OTUBODF*E*OTUBODF*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E %FMFUF0O5FSNJOBUJPOUSVF ^ > "WBJMBCJMJUZ;POF"WBJMBCJMJUZ;POF $SFBUF5JNF5 &ODSZQUFEUSVF ,NT,FZ*E,NT,FZ*E 0VUQPTU"SO0VUQPTU"SO 4J[F 4OBQTIPU*E4OBQTIPU*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E *PQT 7PMVNF5ZQF7PMVNF5ZQF 'BTU3FTUPSFEUSVF .VMUJ"UUBDI&OBCMFEUSVF 5ISPVHIQVU ^ \ "UUBDINFOUT< \ *OTUBODF*E*OTUBODF*Ez ^ > ^ > ^ "84$-*ͷग़ྗΛՃ޻͢ΔΦϓγϣϯ ϘϦϡʔϜ͕Ξλον͞ΕͯΔ*OTUBODF*EΛͭௐ΂Δ৔߹
  14. 51 $-*ߏஙͷεεϝ $-*ΫΤϦ RVFSZ BXT FDEFTDSJCFWPMVNFT BXT FDEFTDSJCFWPMVNFT= RVFSZ7PMVNFT<>"UUBDINFOUT<>*OTUBODF*E <

    z*OTUBODF*Ez > ΫϥΠΞϯτଆͷϑΟϧλϦϯάIUUQTEPDTBXTBNB[PODPNKB@KQDMJMBUFTUVTFSHVJEFDMJVTBHFGJMUFSIUNMDMJVTBHFGJMUFSDMJFOUTJEF \ 7PMVNFT< \ "UUBDINFOUT< \ "UUBDI5JNF5 %FWJDF%FWJDF *OTUBODF*E*OTUBODF*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E %FMFUF0O5FSNJOBUJPOUSVF ^ > "WBJMBCJMJUZ;POF"WBJMBCJMJUZ;POF $SFBUF5JNF5 &ODSZQUFEUSVF ,NT,FZ*E,NT,FZ*E 0VUQPTU"SO0VUQPTU"SO 4J[F 4OBQTIPU*E4OBQTIPU*E 4UBUF4UBUF 7PMVNF*E7PMVNF*E *PQT 7PMVNF5ZQF7PMVNF5ZQF 'BTU3FTUPSFEUSVF .VMUJ"UUBDI&OBCMFEUSVF 5ISPVHIQVU ^ \ "UUBDINFOUT< \ *OTUBODF*E*OTUBODF*Ez ^ > ^ > ^ "84$-*ͷग़ྗΛՃ޻͢ΔΦϓγϣϯ ϘϦϡʔϜ͕Ξλον͞ΕͯΔ*OTUBODF*EΛͭௐ΂Δ৔߹ ΑΓΫΤϦΛ୳ٻ͍ͨ͠ํ͸ ྫ͔ΒֶͿ "84$-*ͷ ΫΤϦ RVFSZ ׆༻
  15. 52 $-*ߏஙͷεεϝ $-*ग़ྗϑΥʔϚοτ "84$-*ग़ྗϑΥʔϚοτͷઃఆIUUQTEPDTBXTBNB[PODPNKB@KQDMJMBUFTUVTFSHVJEFDMJVTBHFPVUQVUGPSNBUIUNM PVUQVU "84$-*ͷग़ྗܗࣜΛࢦఆ͢ΔΦϓγϣϯɻ KTPO  UFYU UBCMF

    ZBNMZBNMTUSFBN KTPOܗࣜͷग़ྗɻσϑΥϧτ λϒ۠੾Γͷจࣈྻܗࣜɻ΄͔ίϚϯυͱ૊Έ߹ΘͤΔࡍʹͳʹ͔ͱ࢖͏ ςʔϒϧܗࣜͷग़ྗɻݟͨ໨ॏࢹ͢Δͱ͖ʹ࢖͏ ZBNMܗࣜͷग़ྗɻݸਓతʹ͋·Γݟ͔͚ͳ͍ɻɻ
  16. 53 $-*ߏஙͷεεϝ $-*ग़ྗϑΥʔϚοτ "84$-*ग़ྗϑΥʔϚοτͷઃఆIUUQTEPDTBXTBNB[PODPNKB@KQDMJMBUFTUVTFSHVJEFDMJVTBHFPVUQVUGPSNBUIUNM PVUQVUUFYUΛ࢖ͬͨޮ཰ԽͷҰྫ ҎԼͷίϚϯυΛ࣮ߦͨ͠৔߹ɺͭͷΠϯελϯε*%͕ग़ྗ͞ΕΔ BXT FDEFTDSJCFWPMVNFTRVFSZ7PMVNFT<>"UUBDINFOUT<>*OTUBODF*E PVUQVUUFYU *OTUBODF*E

    BXT FDEFTDSJCFWPMVNFTRVFSZ7PMVNFT<>"UUBDINFOUT<>*OTUBODF*E PVUQVUUFYU= cYBSHT BXT FDEFTDSJCFJOTUBODFTJOTUBODFJET \ Πϯελϯε৘ใ͕ग़ྗ͞ΕΔ ^ ্ͷίϚϯυͰग़ྗ͞ΕͨΠϯελϯε*%ΛAEFTDSJCFJOTUBODFTAͷίϚϯυͷҾ਺ʹ౉͢ྫ YBSHT ௚લͷίϚϯυͷ࣮ߦ݁ՌΛผͷίϚϯυͰ࣮ߦ͢Δ
  17. 57