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

よみがえるMakefile

nwiizo
July 18, 2021

 よみがえるMakefile

July Tech Festa 2021
https://techfesta.connpass.com/event/213069/

40分の資料を直前に20分に直した。。。
# July Tech Festaとは
2013年から始まったJuly Tech Festaは、ITエンジニアに情報交換と人脈構築の場を提供するとともに、ITに係るエンジニアの知的興味を満足させるための祭典です。セッション内容はIoT、AI、機械学習、クラウド最新事情、コンテナ技術、DevOpsなど多岐に渡ります。

「 ITに関わる全ての人の知的好奇心を満たすお祭りを作りたい」ーー
その思いから July Tech Festa は生まれました。

興味のある技術に触れ、普段会えない人の話を聞き、
参加したエンジニアがスキルやキャリアについて考えるきっかけになる

そんな場を作ろうと、July Tech Festa 2021 を開催します。

# テーマ「今さら聞けないIT技術」
「みんなの”今さら聞けない”を集め、それを詳しい人に話してほしい!」 そんな思いから「#今さら聞けないIT技術」と題して、みんなが「今さら聞けないけど聞きたい」と思っていることや、「若手エンジニアに知っておいてほしい!」ということをお話しいただきます。

nwiizo

July 18, 2021
Tweet

More Decks by nwiizo

Other Decks in Technology

Transcript

  1. "CPVU4IBLF w 43&ࢧԉٕज़ࢧԉ w 4SFBLF͸ۚ༥ɾҩྍɾಈը഑৴ɾ"*ɾήʔϜͳͲٕज़ྗ͕ٻΊΒΕΔྖҬͰ๛෋ͳܦݧΛ࣋ͭ43&͕ू·ͬͨνʔϜ ʹΑΔٕज़ࢧԉαʔϏεͰ͢ɻઓུࡦఆ͔Βઃܭɾߏஙɾӡ༻ɺ4BB4ఏڙ·Ͱɺ෯޿͍ྖҬΛαϙʔτ͠·͢ɻ  Sreake ྲྀ SRE

    Roadmap SRE ͷ։࢝ ·ͣ͸খ͘͞ɻ ޮՌ͕࠷େݶʹग़Δͱ͜Ζ ͔Βίπίπͱ࢝ΊΑ͏ SRE νʔϜͷఆٛ ૊৫ʹ͋ͬͨ SRE Λఆٛ͠Α͏ SRE࣮ફ SLIɾSLO ͷઃఆ Toil ࡟ݮ (ࣗಈԽਪਐ) SRE ͷൃలͱܧଓ SREͷจԽ͕ਁಁ͢Δ Error Budget Λݩʹ
 ۀ຿Λίϯτϩʔϧ͍ͯ͘͠
  2. 43&ͷ࣮ફ಺༰ ྫ  • ؂ࢹج൫ಋೖ ◦Loggin g ◦Monitorin g ◦AP

    M • SLI / SLO ͷఆٛ • ӡ༻ମ੍੔උ ◦ΠϯγσϯτରԠɾ؅ཧ ◦ޮՌతͳΞϥʔτ • IaC (Infrastructure as Code ) ◦ߏ੒؅ཧͷ඼࣭νΣοΫ ◦GitOps • CI/CD ಋೖ ◦σϓϩΠͷࣗಈԽ ◦ίʔυ඼࣭ɾ੬ऑੑͷݕࠪ ◦DevSecOp s • ΞϓϦέʔγϣϯͷύοέʔδԽ ◦ίϯςφ • ύϑΥʔϚϯε෼ੳ ◦෼ࢄτϨʔγϯά ◦ෛՙࢼݧ ◦ΧΦεγφϦΦࢼݧ ্هͷಋೖࢧԉΛߦͳ͍ͬͯΔɻ
  3. .BLFGJMFͱ͸Կ͔ʁ w NBLFίϚϯυ͸ɺίϯύΠϧ࡞ۀΛߦ͏ͨΊʹ༷ʑͳ࡞ۀΛࣗಈతʹߦ͏ͨΊͷίϚϯυͰ͢ɻ 
 .BLF fi MF͸ɺίϯύΠϧɺґଘؔ܎ͷ؅ཧɺΠϯετʔϧͳͲͷϧʔϧΛهड़͓ͯͨ͘͠ΊͷϑΝΠϧͰɺ 
 NBLFίϚϯυ͕ಡΈࠐΜͰॲཧΛߦ͍·͢ɻ 


    .BLF fi MFʹ͸ɺϑΝΠϧͷੜ੒खॱ΍ɺϓϩάϥϜΛߏ੒͍ͯ͠ΔϑΝΠϧಉ࢜ͷؔ܎Λهड़͠·͢ɻ  .BLF fi MF NBLFίϚϯυ ࣗಈԽ͍ͨ͜͠ͱ" 
 ࣗಈԽ͍ͨ͜͠ͱ# 
 ࣗಈԽ͍ͨ͜͠ͱ$ ࡉ͔͍จ๏΍࢖͍ํʹؔͯ͠͸෼ͷొஃ͔ͭଞͷϒϩά΍ॻ੶ʹ͋·Γʹ΋ૉ੖Β͍͠΋ͷ͕ଟ͗͢ΔͷͰׂѪ͠·͢ 

  4. .BLFGJMFͱ͸Կ͔ʁ ‣ .BLF͸ɺ6OJYͷϓϩάϥϜ։ൃ΍֤छιϑτ΢ΣΞͷΠϯετʔϧʹඞਢ ͷجຊπʔϧͰ͢ɻ͜ͷॻ੶͸NBLFͷ֓೦ɺجຊૢ࡞ɺϧʔϧͷจ๏ɺม਺ ͱϚΫϩɺؔ਺ɺେن໛ϓϩδΣΫτͰར༻͢Δํ๏ɺ8JOEPXT؀ڥͰͷ஫ ҙͳͲɺجૅ͔Βߴ౓ͳςΫχοΫ·ͰΛৄ͘͠ղઆ͍ͯ͠·͢ɻNBLFͷೖ ໳ॻͱͯ͠ॳ৺ऀʹ໾ʹཱͭͷ͸΋ͪΖΜͷ͜ͱɺNBLFͷϦϑΝϨϯεͱ͠ ͯɺதɺ্ڃऀʹͱͬͯ΋ඇৗʹ༗ӹͳҰ࡭Ͱ͢ɻ  ͳͥɺ.BLFGJMF͸ࢮʹ

    
 ͦͯ͠ɺΑΈ͕͑Δͷ͔ʁ ͍͖ͳΓɺຊ୊ʹಥೖͯ͠΋͍͍Ͱ͕͢ྲྀੴʹͳͷͰ 
 (PݴޠͷϓϩδΣΫτͰ.BLFͷར༻͍༷ͯ͘͠ʹ͍ͭͯ IUUQTCB[FMCVJME #B[FMͳͲͷஔ͖׵͑πʔϧ͕͋Δ͕ࠓճ͸આ໌͔Βআ֎ NBLF͸ϓϥοτϑΥʔϜʹґଘͤͣɺ͞·͟·ͳঢ়گʹରԠͰ͖Δɻ 
 ·ͨɺهड़ϧʔϧ͕γϯϓϧͰ͋Γֶश͠΍͍͢ͱ͍͏ϝϦοτ͸͋Δ͕ 
 ͦͷ൒໘ɺෳࡶͳϧʔϧΛهड़͠ʹ͔ͬͨ͘Γɺฒྻॲཧ͕ۤखͱ͍ͬͨσϝϦοτ΋͋Δɻ 
 ͦͷͨΊϚΫϩπʔϧ΍ઃఆࣗಈੜ੒πʔϧͳͲͱ૊Έ߹Θͤͯ࢖ΘΕΔ͜ͱ͕ଟ͍ɻ 
 ΍Γ͗͢Δͱɺهड़ϧʔϧ͕෼͔Γʹ͘͘ͳͬͯ͠·͏͜ͱ΋গͳ͘ͳ͍ɻ 
 ͦΕΒΛղܾπʔϧͱͯ͠ଘࡏ͢Δπʔϧ͸͍͔ͭ͋͘Δʆ
  5. (PݴޠʹΑΔ.BLFͷར༻ w ߴػೳ*%&ͳͲ͸ศརͰ͚͢ͲࣗಈԽʹ͸ෆ޲͖ w ୭Ͱ΋ɺͲ͜Ͱ΋ɺ͍ͭͰ΋࣮ߦͰ͖Δɺ൓෮ՄೳͰࣗಈԽՄೳͳϏϧυ ͕͜ΕʹΑΓɺʮ͜Ε͸ࢲͷϚγϯͰಈ࡞͠·͢ʂʯͱ͍͏௕೥ͷ։ൃऀ ͷݴ͍༁ΛճආͰ͖·͢ w ֤ݴޠʹ͸ίϯϐϡʔλϓϩάϥϜͳͲͷιʔείʔυΛಡΈࠐΜͰ಺༰ Λ෼ੳ͠ɺ໰୊఺Λࢦఠͯ͘͠ΕΔ੩తղੳπʔϧ͕͋Γࣗ࡞΋Մೳɻ

    
 ͜ΕΒΛ࢖͏͜ͱͰϓϩδΣΫτͷ඼࣭ΛकΔʂ w ΠϯϑϥΤϯδχΞ͕༻ҙͨ͠$*ʹదԠ͢Δʹ͸(JU΁ͷQVTI͕ඞཁ  HPMBOHDJHPMBOHDJMJOU (PMBOHͷ-JOUFSΛҰݩ؅ཧπʔϧɻ wHPWFUɿ(PMBOHσϑΥϧτͷ-JOUFS wFSSDIFDLɿͪΌΜͱΤϥʔϋϯυϦϯά͍ͯ͠Δ͔νΣοΫͯ͘͠ΕΔ wVOVTFEɿະ࢖༻ͷఆٛΛνΣοΫͯ͘͠ΕΔ wHPJNQPSUTɿະ࢖༻ͷJNQPSUΛফͯ͘͠ΕͨΓɺϑΥʔϚοτमਖ਼ͯ͘͠ΕΔ wHPTJNQMFɿίʔυΛγϯϓϧʹͯ͘͠ΕΔ IUUQTHJUIVCDPNOFLUPTBDUɹͳͲͷϩʔΧϧ࣮ߦπʔϧ΋΋ͪΖΜଘࡏ͍ͯ͠Δ
  6. (PݴޠʹΑΔ.BLFͷར༻ w (Pݴޠʹ͓͚Δγϯϓϧͳ.BLF fi MF  .DEFAULT_GOAL := buil d

    fmt: go fmt ./.. . .PHONY:fmt lint: fmt golint ./ … .PHONY:lint vet: fmt go vet ./.. . .PHONY:vet build: vet go build hello.g o .PHONY:build ͜ΕΒ͸HPWFUͱ͔HPGNU͔ΒNBLFWFU΍NBLFGNUʹมΘΔ͚ͩͰ͕͢ 
 ϏϧυΛτϦΨʔ͢ΔલʹϑΥʔϚοτͱݕূ͕ৗʹߦΘΕΔΑ͏ʹ͢Δ͜ͱͰɺ 
 खॱΛݟಀ͢͜ͱ͸͋Γ·ͤΜɻ vet: fmt go vet ./...
 shadow ./... ·ͨɺϓϩδΣΫτΛਐΊ͍ͯ͘ͱ͞·͟·ͳπʔϧ΍ࣗಈԽΛࢼΈΔͱࢥ͍·͕͢ 
 ྫ͑͹ɺ(PݴޠͰม਺ͷγϟυ΢ΠϯάΛආ͚͍ͨͳΒTIBEPXΛ࢖͑͹ղܾ͠·͕͢ 
 ҎԼͷΑ͏ʹ.BLF fi MFΛ࢖͏ͱ͜ΕΒ΋ࣗಈԽʹ૊ΈࠐΉ͜ͱ͕Ͱ͖ɺ 
 .BLF fi MFΛͦΕͧΕͷϓϩδΣΫτ͝ͱʹҭͯΔ͜ͱ͕Ͱ͖·͢ɻ λʔήοτґଘ͢ΔϑΝΠϧ  ίϚϯυ Make fi le ͸ҎԼͷΑ͏ͳϧʔϧ͔ΒͳΔɻ NBLF λʔήοτ ίϚϯυϥΠϯ͔Β ͱ͢Δ͜ͱͰɺʮλʔήοτʯ͕ଘࡏ͠ͳ͍ɺ͋Δ͍͸λʔήοτΑΓ΋ ৽͍͠ʮґଘ͢ΔϑΝΠϧʯ͕͋Δ৔߹ʹίϚϯυ͕࣮ߦ͞Ε·͢ɻ ·ͨɺίϚϯυߦͷ࢝·Γ͸ඞͣλϒͰམ͍ͪͯ·͢ɻ ࣗಈม਺΍ؔ਺ͳͲ͍͔֮ͭ͑͘Δ͜ͱͰ΄΅Ϛελʔ͢Δ͜ͱ͕Ͱ͖Δ
  7. (PݴޠʹΑΔ.BLFͷར༻ w ࣮ࡍʹ։ൃ΍ӡ༻ͷ࡞ۀ͢Δ࣌ʹ͸ɺ؀ڥߏங͚ͩͰ͸ͳ͍ɻ w WTγΣϧεΫϦϓτ w ӡ༻΍։ൃͰಘ͍͔ͨͭ͘ͷ5JQTΛ஌ݟͱͯ͠อଘٴͼܧঝ͢ΔͨΊʹબ΂Δखஈͱͯ͠൪࠷ॳʹύοͱग़དྷͯ͠ ·͏ͷ͕ࣗ࡞ͷγΣϧεΫϦϓτͰ͋Δɻࣗ࡞ͷγΣϧεΫϦϓτ͸Ԡ༻͕ޮ͍͕͘۩ମతʹԿΛ͢Δ͔Ұͭ໨ͷҾ ਺͕ԿͰೋͭ໨͸͋ΕͰΈ͍ͨͳײ͡Ͱ૯ͯ͡ෆ໌ྎͰ͋ΓɺͦΕΒ͸೺Ѳɺอक͢Δਓ͕ؒඞཁͰɺࣗ࡞ͷγΣϧ εΫϦϓτ͸Α͘ݹͷΦʔύʔπͱͯ͠ൃ۷͞Εͯ͠·͏৔߹͕ଟ͍

    w .BLF fi MF-PWFST w .BLF fi MFΛ࢖͏ཧ༝ͱͯ͠͸։ൃʹ͸༷ʑͳཧ༝͕͋ΔɻϏϧυΦϓγϣϯΛࢦఆ͢Δͷʹ౎߹͕Α͘ɺόʔδϣ ϯ৘ใͳͲΛຒΊࠐΜͩΓ͠΍͍͢ɻࣄલʹίʔυδΣωϨʔλͰॻ͖ग़͢෦෼͕͋Δ࣌͸ͦΕΒʹ൐ͬͨίϚϯυ Λิ׬Ͱ͖ΔɻϏϧυͷλΠϛϯάͰQQSPGΛ࣮ߦͨ͠Γ΋͓खͷϞϊʂݹͷΦʔύʔπʹൺ΂ͯಡΊΔؾ͕͢Δ w ಛʹ(PݴޠͰϓϩμΫτΛ࡞Δ࣌ɺ.BLF fi MFΛ࢖ͬͯϏϧυ΍πʔϧΛࢦఆ͢Δ͜ͱ͕ଟ͍Ͱ͢ 
 ܰྔϓϩάϥϛϯάݴޠͰ͸࢖͏ػձ͕άοͱগͳ͔ͬͨɻ  όʔδϣϯ৘ใ 
 ϏϧυΦϓγϣϯ ෳ਺όΠφϦͷੜ੒ 
 ͍͔ͭ͘ͷίʔυδΣωϨʔλʔͷੜ੒
  8. ΦϖϨʔγϣϯࣗಈԽͷͨΊͷ.BLFGJMF !#VJME CVJMEಛఆͷϑΝΠϧͷϏϧυ  HPCVJMEPCJONBOBHFSNBJOHP SVONBOJGFTUTHFOFSBUFGNUWFUϩʔΧϧͰͷ࣮ߦ  HPSVONBJOHP EPDLFSCVJMEUFTUϏϧυͷ࣮ߦ 

    EPDLFSCVJMEU\*.(^ EPDLFSQVTIEPDLFS΁ͷQVTI  EPDLFSQVTI\*.(^ !%FQMPZNFOU JOTUBMMNBOJGFTUTLVTUPNJ[Fඞཁͳ$3%ͷొ࿥   ,6450.*;& CVJMEDPO fi HDSEcLVCFDUMBQQMZG VOJOTUBMMNBOJGFTUTLVTUPNJ[Fෆཁͳ$3%ͷ࡟আ   ,6450.*;& CVJMEDPO fi HDSEcLVCFDUMEFMFUFG EFQMPZNBOJGFTUTLVTUPNJ[FΫϥελʹର͢ΔσϓϩΠ  DEDPO fi HNBOBHFS ,6450.*;& FEJUTFUJNBHFDPOUSPMMFS\*.(^   ,6450.*;& CVJMEDPO fi HEFGBVMUcLVCFDUMBQQMZG VOEFQMPZΫϥελ͔Βͷ࡟আ   ,6450.*;& CVJMEDPO fi HEFGBVMUcLVCFDUMEFMFUFG 
  9. ͳͥɺ.BLFGJMF͸ࢮΜͩͷ͔ʁ w υΩϡϝϯτͷෆࡏ w γεςϜҎ֎ʹԿ΋ͳ͍ঢ়ଶͰ͸৽͍͠։ൃऀ͸.BLF fi MFΛݟ֤ͯʑͷม਺΍΍Γ͍ͨ͜ͱΛཧղ͢Δඞཁ͕͋Δ w ར༻։࢝·ͰͷΦʔόʔϔου͕େ͖͍ঢ়ଶ w

    ࣮ଶͱͷဃ཭ w Φʔόʔϔου͕େ͖͘ͳΔͱར༻ऀ͕ݮͬͯ͠·͍݁Ռͱͯ͠ݱߦγεςϜ΍ιʔείʔυͱͷဃ཭͕ੜ·Εͯ͠·͏ w ෳࡶ͞ٴͼΧΦεԽ w ࡞ۀΛ୯७Խͤͣʹෳࡶͳ࡞ۀΛͦͷ··.BLF fi MFʹམͱ͠ࠐΉΜͰ͠·͏ͱෳࡶԽ͕૿ͯ͠͠·͏ɻ 
 ਖ਼௚ɺͦ͜·ͰΫι௕͍࡞ۀΛ.BLF fi MFʹ΍Β͢ͳʂσόοά͠ΜͲ͍ͧ  IUUQTTQFBLFSEFDLDPNLMPXQIQFSLBJHJ ͞·͟·ͳΦϖϨʔγϣϯ͕͋Δ͕ 
 ͦΕΒΛNBLF fi MFʹهࡌ͕ͳ͍
  10. ΑΈ͕͑Δ.BLFGJMF w ܧଓతͳυΩϡϝϯςʔγϣϯ w γεςϜ΍.BLF fi MFͷཧղΛૣΊͯར༻։࢝·ͰͷΦʔόʔϔουΛ࡟ݮͤ͞ΔͨΊʹυΩϡϝϯτΛ༻ҙ͢Δ w ޙ͔Β͸ઈରʹهࡌ͠ͳ͍ͷͰίϝϯτ΋ؚΊͯ3&"%.&ʹ΋هࡌ͓ͯ͘͠ w

    .BLF fi MFͷશͯΛυΩϡϝϯτԽ͢ΔඞཁͰ͸ͳ͘සग़΍։ൃϑϩʔʹ४ͨ͡΋ͷ͚ͩهࡌͯ͠Ε͹ྑ͍ w .BLF fi MFΛҭͯΔ w γεςϜ͸ܦ೥ྼԽͯ͠ɺʮ͋Εʁੲ͸͜ΕͰग़དྷͨΜ͚ͩͲͳʯͳͲ;͚ͨ͟ηϦϑΛు͘ɻҭͯΔ͜ͱ͕େࣄ w ΦϖϨʔγϣϯ͕ൃੜͨ͠Βɺۛຯͯ͠औΓࠐΜͰɺརศੑΛߴΊΔͨΊʹNBLFIFMQΛͪΌΜͱ࣮૷͢Δ w ͳΔ΂͘ɺෳࡶͳ͜ͱ͸͠ͳ͍ w ՄೳͳݶΓෳࡶͳ͜ͱ͸͠ͳ͍͕ࣗಈੜ੒΍ࣗಈσϓϩΠͳͲ΋͢ΔΑ͏ʹͳΔͷͰͲΜͲΜෳࡶʹͳΔ w ֎෦πʔϧʹཔΔ΂͖ͱ͜Ζ͸͔ͬ͠Γཔͬͯ͠·͏  ཁ๬͕͋Ε͹ϒϩάॻ͘ͷͰ 
 5XJUUFSͰݴٴ͔ϝϯγϣϯͯ͠
  11. ࢀর w (/6.BLFୈ൛ w IUUQTXXXPSFJMMZDPKQMJCSBSZ w ໨తʹԊͬͨ%PDVNFOUBUJPOBT$PEFΛ͍͔ʹ࣮ͯ͠ݱ͍͔ͯ͘͠1)1FS,BJHJ w IUUQTTQFBLFSEFDLDPNLMPXQIQFSLBJHJ w

    -FBSOJOH(P w IUUQTMFBSOJOHPSFJMMZDPNMJCSBSZWJFXMFBSOJOHHP w (PͰ࢖͏.BLF fi MFͷҭͯํ w IUUQT[FOOEFWSPTZMJMMZBSUJDMFTHPNBLF fi MF w (PHFOFSBUF w IUUQTCMPHHPMBOHPSHHFOFSBUF ͦͷଞɺଟ͘ͷ044