Share
Embed
自動生成の話をしよう 〜 ProtoBuf, Cue, 1次ソースの美学 〜
Gopher's Gatheringでの発表資料です。
https://connpass.com/event/329963/
karamaru
January 18, 2025
Transcript
48 slides
-
ݱࡏɺ31$ɾ%#ɾઃఆɾϩδοΫͳͲ͋ΒΏΔͷΛQSPUPCVGͰཧ͍ͯ͠Δ ࣍ιʔεQSPUPͷΈ ɾܕ҆શͰ͋Δ͜ͱ ɾฐࣾ௨৴ʹH31$ CVGDPOOFDU Λ༻͍ͯ͠ΔͨΊ ɹγϯλοΫεΛ౷ҰͰֶ͖शίετ͕͍͜ͱ ੜର%#ૢ࡞ϩδοΫੜͳͲએݴతʹॻ͚Δͷશͯ ɾCVGHFOFSBUFͰႈͳϑΝΠϧੜΛߦ͏ ࣗಈੜର
ɾϚελσʔλʢ.Z42-ΦϯϝϞϦʣ ɾϢʔβʔσʔλʢ4QBOOFSʣ ɾ3BOLJOHʢ3FEJTʣ ɾ31$ʢCVGDPOOFDUʣ ɾσόοάίϚϯυʢBENJOʣ ɾڥม ɾ#BUDIʢDPCSB$-*ʣ ɾ-PHʢ#JH2VFSZʣ ͳͲͳͲʜ ˣ QSPUPϑΝΠϧͬͯ͜Μͳײ͡ͷͭˣ QSPUPCVGେ౷Ұཧ -
͡ΊʹQSPUPCVG͔Βࣗಈੜ͍ͯ͠Δͷ ɾϚελσʔλʢ.Z42-ΦϯϝϞϦʣ ɾϢʔβʔσʔλʢ4QBOOFSʣ ɾ3BOLJOHʢ3FEJTʣ ɾ31$ʢCVGDPOOFDUʣ ɾσόοάίϚϯυʢBENJOʣ ɾڥม ɾ#BUDIʢDPCSB$-*ʣ ɾ-PHʢ#JH2VFSZʣ ͳͲͳͲʜ
એݴతʹཧͰ͖Δͷશͯࣗಈੜରʹͯ͠Δ 1SPUP#VGͷΈͰͲ͜·ͰදݱͰ͖Δͷ͔ݟͯΈΑ͏ʂ -
ੜίʔυϚελσʔλ .Z42- ϚελόϦσʔγϣϯ "ENJO ϚελʔΩϟογϡ ΦϯϝϞϦ ɾϚΠάϨʔγϣϯͳͲ༻ʹ42-Λग़ྗ͢Δ ɾͪͳΈʹEFWڥͷΈએݴతϚΠάϨʔγϣϯΛߦͳ͍ͬͯΔ ɹɾ42-εΩʔϚͱ࣮ࡍͷ%#ͷEJGGΛBMUFS͢Δ ɹɾTDIFFNBMFY
BUMBTͳͲΛ༻ ɹɾNJHSBUJPOϑΝΠϧ͕૿͑ͳͯ͘Έ ɹʢຊ൪ͰͪΌΜͱੵΉʣ ECEEMNBTUFSHFOTRMΧʔυϚελͷ42-εΩʔϚ $MPVE42- ʻϚελʔσʔλʼ ίϝϯτܥQSPUP͔Βऔͬͯ͜ΕΔͷDPPMͩͶʂ -
ੜίʔυϚελσʔλ .Z42- ϚελόϦσʔγϣϯ "ENJO ϚελʔΩϟογϡ ΦϯϝϞϦ ɾϚελߏମΛੜ͢Δɻ1,ศརߏମ ɾ.Z42-ͷૄ௨ίʔυΠϯλʔϑΣʔεੜ͍ͯ͠Δ ɾLBXBJJϙΠϯτ ɹɹɾ1,ߏମҾऔΓճ͠ศར
ɹɹɾτϥϯβΫγϣϯͷநԽ͕៉ྷ QLHEPNBJOFOUJUZNBTUFSDBSEHFOHPϚελߏମ QLHEPNBJOSFQPTJUPSZNBTUFSDBSEHFOHP.Z42-ૄ௨*' QLHJOGSBNZTRMSFQPTJUPSZDBSEHFOHP.Z42-ૄ௨*'࣮ $MPVE42- ʻϚελʔσʔλʼ -
ੜίʔυϚελσʔλ .Z42- ϚελόϦσʔγϣϯ "ENJO ϚελʔΩϟογϡ ΦϯϝϞϦ ɾཧը໘ͰϚελใͷόϦσʔγϣϯΛ࣮ߦͰ͖Δ ɹɹɾ໊લ͕͗͢ͳ͍͔ ɹɹɾ',ઌͷϚελଘࡏ͍ͯ͠Δ͔ ɾHPQMBZHSPVOEWBMJEBUPSΛ༻͠
ɹQSPUPͷLFZWBMVFͰࢦఆͰ͖Δ ɾ',ใϚελҰཡը໘ͷKVNQػೳͳͲʹΘΕΔ $MPVE3VO ʻཧը໘ʼ QLHEPNBJOFOUJUZNBTUFSDBSEHFOHPϚελߏମ ཧը໘ϚελόϦσʔγϣϯ ཧը໘ϚελҰཡ QSPUPFOUJUZNBTUFSDBSEQSPUP -
ੜίʔυϚελσʔλ .Z42- ϚελόϦσʔγϣϯ "ENJO ϚελʔΩϟογϡ ΦϯϝϞϦ .Z42-ʹ͋ΔϚελσʔλΛαʔόʔىಈ࣌ʹΩϟογϡ͠ *'ӽ͠ʹಡΈऔΓ͕Ͱ͖Δঢ়ଶʹͳΔ·Ͱࣗಈੜ͞ΕΔɻ QLHEPNBJOFOUJUZNBTUFS@DBDIFDBSEHFOHPΧʔυϚελʔΩϟογϡߏମ $MPVE3VO
ʻήʔϜ"1*ʼ QLHJOGSBJONFNPSZNBTUFS@DBDIFSFQPTJUPSZDBSEHFOHPΧʔυϚελʔΦϯϝϞϦΩϟογϡૢ࡞*'࣮ QLHEPNBJOSFQPTJUPSZNBTUFS@DBDIFDBSEHFOHPΧʔυϚελʔΦϯϝϞϦΩϟογϡૢ࡞*' ࣮ࡍʹHPCΤϯίʔσΟϯά͞Εͨ$MPVE4UPSBHFΛಡΈΩϟογϡม͢Δɻ มϩδοΫࣗಈੜͳͨΊɺ"1*։ൃͰNBTUFS@DBDIFҎ֎Λؾʹ͢Δ͜ͱͳ͍ -
ϑϩʔڥมͷϩʔΧϧઃఆฤ FOWFYBNQMFFOWϑΝΠϧͷܗ .BLF fi MFλεΫఆٛ ɾϩʔΧϧFOWʢHJU@JHOPSFEʣʹڥมΛॻ͖ࠐΉํࣜ ɾFOWFYBNQMFʹܗΛ͚͓ͬͯ͘ ɾ.BLFGJMFͰFOW͕ଘࡏ͠ͳ͍߹ࣗಈͰ࡞͞ΕΔΑ͏ʹʂ ɹ͜ͷه๏͔͍͍ͬ͜ΑͶ ˠ͜ͷ··Ͱ͍͍͚Ͳʜ
ɾΑΓએݴతʹܕ҆શʹѻ͍͍ͨ ɾΒͳ͍ڥม͕Ճ͞Εͯಈ͔ͳ͘ͳΔ͜ͱආ͚͍ͨ File Icons for GitHub and GitLab: iconՄѪ͘ͳΔChrome֦ு -
ɾQSPUP͔ΒڥมҰཡͷߏମͱͦͷ(FUUFSΛੜ ɾPQUJPOͰ֤ڥʹ͓͚ΔσϑΥϧτΛઃఆ ఆٛੜڥมͷߏମͱͦͷσϑΥϧτΛੜ͢Δ QSPUPFOUJUZDPO fi HBQJQSPUPήʔϜ"1*༻ڥมઃఆ QLHEPNBJOFOUJUZDPO fi HBQJHFOHPήʔϜ"1*༻ڥมઃఆߏମ DPO
fi HBQJMPDBMHFOHP-PDBMڥͷσϑΥϧτڥมఆٛ DPO fi HBQJEFWHFOHP%FWڥͷσϑΥϧτڥมఆٛ -
ϑϩʔSFGSFDUΛ༻͍ͯڥม͕͋ΕͦͪΒΛ༏ઌ͢Δ DPO fi HBQJFOWHFOHPڥ͝ͱʹ͓͚Δڥมߏମੜ QLHVUJMFOWDPO fi HVUJMHPڥม͕͋ΕߏମͷΛ্ॻ͖͢Δ ɾڥʹରԠͨ͠σϑΥϧτڥมߏମΛऔಘ ɾϑΟʔϧυ໊ʹରԠͨ͠ڥม͕ઃఆ͞Ε͍ͯΔ߹ ɹͦͪΒΛ༏ઌͯ͠ߏମͷΛ্ॻ͖͢Δ
ɾҰԠ࠷ޙʹHPQMBZHSPVOEWBMJEBUFͰݕূ ˠ͏ڥม͕Γͳͯ͘ಈ͔ͳ͍͜ͱͳ͍ʂૉఢʂ SFGSFDU͔͍͍ͬ͜Ͷʂ -
#BUDIʢ$PCSB$-*ʣࣗಈੜʂ QSPUPCBUDISBOLJOHQSPUPϥϯΩϯάؔ࿈#BUDI༻$-*ఆٛ ɾϥϯΩϯά֬ఆͳͲɺҰఆपظͰશମॲཧΛߦ͏ඞཁ͕͋Δ ɾ$PCSB$-*Ͱ࣮ͨ͠JNBHFΛ$MPVE3VO+PCTʹࡌͤ ɹ$MPVE4DIFEVMFSͰҾΛࢦఆͯ͠ୟ͘͜ͱͰόονॲཧΛ࣮ݱ ɾ$PCSB$-*ͷఆٛɾొ෦ΛશͯࣗಈԽ͍ͯ͠Δ ɾ࣮ࡍʹίϚϯυ͕ඞཁͱ͢ΔΦϓγϣϯͳͲΛܕʹམͱͯ͠*'ͬͯΔ $MPVE4DIFEVMFS όονॲཧൃՐ $MPVE3VO+PCT
όονॲཧ࣮ߦ QLHDNECBUDIDPNNBOESBOLJOHDPNNBOEHFOHPϥϯΩϯάؔ࿈#BUDIίϚϯυొ UFSNJOBMॳखͰIFMQ͕ग़Δঢ়ଶ -
·ͱΊQSPUPCVGେ౷Ұཧ ੜҰཡʜ ɾϚελσʔλʢ.Z42-ΦϯϝϞϦʣ ɾϢʔβʔσʔλʢ4QBOOFSʣ ɾ3BOLJOHʢ3FEJTʣ ɾ31$ʢCVGDPOOFDUʣ ɾσόοάίϚϯυʢBENJOʣ ɾڥม ɾ#BUDIʢDPCSB$-*ʣ ɾ-PHʢ#JH2VFSZʣ
ͳͲͳͲʜ ɾ࣍ιʔεQSPUPCVGͷΈ ɾએݴతʹཧͰ͖Δͷશͯࣗಈੜରʹͯ͠Δ ˠ ͏ఆܕจΛϨϏϡʔ͢Δඞཁͳ͍͠ɺ ٯʹఆ͚ٛͩΛϨϏϡʔʹग़͢͜ͱ͕Ͱ͖Δɻ ·ͨɺఆܕจͰώϡʔϚϯΤϥʔΛى͜͢͜ͱͳ͍ɻ ˠ͍ͬͺ͍ੜ͍ͯͯͬͯ͢͠͝ίϝϯτͬͯ·͢ʂ -
1SPUPD1MVHJOܦ༝Ͱࣗಈੜͯ͠ΔΑ 1SPUPDಠࣗͷϓϥάΠϯΛࠩ͠ࠐΉ͜ͱͰ֦ுՄೳɻҎԼ͕ඪ४త ͳྲྀΕ !TFFIUUQTHJUIVCDPNQSPUPDPMCV ff FSTQSPUPCVGCMPCNBJOTSDHPPHMFQSPUPCVGDPNQJMFSQMVHJOQSPUP QSPUPD BLBUIF1SPUPDPM$PNQJMFS DBOCFFYUFOEFEWJBQMVHJOT"QMVHJOJT KVTUBQSPHSBNUIBUSFBETB$PEF(FOFSBUPS3FRVFTUGSPNTUEJOBOEXSJUFTB
$PEF(FOFSBUPS3FTQPOTFUPTUEPVU ɾQSPUPD͕QSPUPϑΝΠϧΛղੳ͠ඪ४ೖྗʹॻ͖ग़͢ ɾQMVHJO͕ͦΕΛड͚औΓɺͦΕʹԠͨ͡ग़ྗ͍ͨ͠༰Λඪ४ग़ྗͰฦ͢ ɾQSPUPD͕ͦΕΛड͚औΓɺࢦࣔ௨ΓʹϑΝΠϧੜ