Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
VCR in Go:モック自動生成で楽しちゃう話
Search
yyh_gl
January 23, 2020
Technology
4
3.6k
VCR in Go:モック自動生成で楽しちゃう話
DMM.go #1 登壇スライド
ブログ↓
https://yyh-gl.github.io/tech-blog/blog/golang-vcr/
yyh_gl
January 23, 2020
Tweet
Share
More Decks by yyh_gl
See All by yyh_gl
入門Go言語仕様輪読会 Assignability / Go Language Specification Assignability
yyh_gl
0
220
事業をグロースさせるためにエンジニアができること / What engineers can do to grow a business
yyh_gl
2
1.4k
Goaを使ってAPIサーバ開発してみた / Develop API server by Goa
yyh_gl
3
2.5k
Other Decks in Technology
See All in Technology
生成AI時代 文字コードを学ぶ意義を見出せるか?
hrsued
1
770
「クラウドコスト絶対削減」を支える技術—FinOpsを超えた徹底的なクラウドコスト削減の実践論
delta_tech
4
100
一体いつからSRE NEXTがSREだけのカンファレンスだと錯覚していた? / When did you ever get the idea that SRE NEXT was a conference just for SREs?
vtryo
1
140
「Chatwork」の認証基盤の移行とログ活用によるプロダクト改善
kubell_hr
1
240
マネジメントって難しい、けどおもしろい / Management is tough, but fun! #em_findy
ar_tama
2
340
CI/CD/IaC 久々に0から環境を作ったらこうなりました
kaz29
1
220
論文紹介:LLMDet (CVPR2025 Highlight)
tattaka
0
280
Glacierだからってコストあきらめてない? / JAWS Meet Glacier Cost
taishin
1
120
本が全く読めなかった過去の自分へ
genshun9
0
740
fukabori.fm 出張版: 売上高617億円と高稼働率を陰で支えた社内ツール開発のあれこれ話 / 20250704 Yoshimasa Iwase & Tomoo Morikawa
shift_evolve
PRO
2
5.1k
Beyond Kaniko: Navigating Unprivileged Container Image Creation
f30
0
120
PO初心者が考えた ”POらしさ”
nb_rady
0
170
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
430
65k
How GitHub (no longer) Works
holman
314
140k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
The Pragmatic Product Professional
lauravandoore
35
6.7k
How STYLIGHT went responsive
nonsquared
100
5.6k
The Language of Interfaces
destraynor
158
25k
For a Future-Friendly Web
brad_frost
179
9.8k
Optimizing for Happiness
mojombo
379
70k
Music & Morning Musume
bryan
46
6.6k
Become a Pro
speakerdeck
PRO
28
5.4k
Documentation Writing (for coders)
carmenintech
72
4.9k
Automating Front-end Workflow
addyosmani
1370
200k
Transcript
7$3JO(PɿϞοΫࣗಈੜͰָͪ͠Ό͏
ࣗݾհ 5XJUUFSɿ!ZZI@HMʢIPO%ʣ (JU)VCɿZZIHM ϓϥοτϑΥʔϜ෦ όοΫΤϯυΤϯδχΞ (P%%%ΞʔΩςΫνϟ ΄Μͩ
3 ςετॻ͍͍ͯ·͔͢ʁ
>> ֎෦γεςϜΛ༻͢Δςετ w֎෦γεςϜ͕ఏڙ͢Δ"1*Λ༻͢Δػձ͕૿Ճ w ଞࣾαʔϏε w ࣾγεςϜ w ϚΠΫϩαʔϏε w֎෦γεςϜΛϞοΫԽ
4
5 ϞοΫͷཧ͋Δ͋Δ
6 ϞοΫͷཧ͋Δ͋Δ ʮϞοΫ͔ͩΒಈ͚͍͔ͬʯ
7 ϞοΫͷཧ͋Δ͋Δ ʮϞοΫ͔ͩΒಈ͚͍͔ͬʯ ͕ଓ͖
8 ϞοΫͷཧ͋Δ͋Δ ʮϞοΫ͔ͩΒಈ͚͍͔ͬʯ ͱͯਓ͕ಡΊͨίʔυ͡Όͳ͘ͳΔ ͕ଓ͖
9 ϞοΫͷཧ͋Δ͋Δ ʮϞοΫ͔ͩΒಈ͚͍͔ͬʯ ͱͯਓ͕ಡΊͨίʔυ͡Όͳ͘ͳΔ ͕ଓ͖ ͍͔ͭ͠ຊདྷͷ༷ͱࠩҟ͕ੜ·Ε͡ΊΔ
10 ϞοΫͷཧ͋Δ͋Δ ʮϞοΫ͔ͩΒಈ͚͍͔ͬʯ ͱͯਓ͕ಡΊͨίʔυ͡Όͳ͘ͳΔ ͕ଓ͖ ͍͔ͭ͠ຊདྷͷ༷ͱࠩҟ͕ੜ·Ε͡ΊΔ aϞοΫͷཧͭΒ͍
11 ͭΒ͍ ͩΔ͍ ͩ ΄͛ʔ
12 ϞοΫͷཧ͋Δ͋Δ ʮϞοΫ͔ͩΒಈ͚͍͔ͬʯ ͱͯਓ͕ಡΊͨίʔυ͡Όͳ͘ͳΔ ͕ଓ͖ ͍͔ͭ͠ຊདྷͷ༷ͱࠩҟ͕ੜ·Ε͡ΊΔ
>> ϞοΫಠΓา͖ w࠷ॳ༷௨ΓͩͬͨϞοΫ͕ ͍͔༷͔ͭ͠Β֎ΕɺಠΓา͖࢝͠ΊΔݱ wʮϩʔΧϧͰಈ͍͍ͯͨͷʹʜʯͱݴ͍ग़͢ ਓ͕૿͑Δ 13
>> ͳ༷͕ͥͣΕͯ͘Δʁ wଟ͘ͷ߹ɺϨεϙϯε͚ͩΛݟͯϞοΫΛ࡞Δ w ࣾ֎γεςϜͷ߹ɺ෦࣮͕Ͳ͏ͳͬͯΔ͔ جຊతʹΔज़͕ͳ͍ w ʢࣾͷʣυΩϡϝϯτʹ༷ͳΜͯ͋Γ͑ͳ͍ʢܾΊ͚ͭʣ wਓΈΜͳϛεΛ͢Δ wϞοΫͷίʔυ͓Ζ͔ͦʹ͞Ε͕ͪ
w zಈ͚0,zͷਫ਼ਆ wΊΜͲ͍ 14
>> ͳ༷͕ͥͣΕͯ͘Δʁ wଟ͘ͷ߹ɺϨεϙϯε͚ͩΛݟͯϞοΫΛ࡞Δ w ࣾ֎γεςϜͷ߹ɺ෦࣮͕Ͳ͏ͳͬͯΔ͔ جຊతʹΔज़͕ͳ͍ w ʢࣾͷʣυΩϡϝϯτʹ༷ͳΜͯ͋Γ͑ͳ͍ʢܾΊ͚ͭʣ wਓΈΜͳϛεΛ͢Δ wϞοΫͷίʔυ͓Ζ͔ͦʹ͞Ε͕ͪ
w zಈ͚0,zͷਫ਼ਆ wΊΜͲ͍ 15 ৽ͨͳγεςϜ͕ੜ
>> ϞοΫಠΓา͖ͷରԠࡦ wΊͪΌͪ͘ΌؾΛ͚ͭͯϞοΫΛखಈ࡞ w ίʔυϨϏϡʔؤுΔ w ͱʹ͔͘ؤுΔ w ͱʹ͔͘ؾΛ͚ͭΔ wϞοΫίʔυΛࣗಈੜ
w 0QFO"1*ʢ4XBHHFSʣ w 7JEFP$BTTFUUF3FDPSEFS 16
>> ϞοΫಠΓา͖ͷରԠࡦ wΊͪΌͪ͘ΌؾΛ͚ͭͯϞοΫΛखಈ࡞ w ίʔυϨϏϡʔؤுΔ w ͱʹ͔͘ؤுΔ w ͱʹ͔͘ؾΛ͚ͭΔ wϞοΫίʔυΛࣗಈੜ
w 0QFO"1*ʢ4XBHHFSʣ w7JEFP$BTTFUUF3FDPSEFS 17
>> 7$3ʢ7JEFP$BTTFUUF3FDPSEFSʣ w௨৴༰Λอଘ͠ɺ࠶ੜ͢ΔϥΠϒϥϦ܈ͷ૯শ w ςετʹ͓͍ͯɺ"1*ϦΫΤετͷ௨৴ͷ༰Λ อଘ͠ɺ࣍ճҎ߱ͦͷอଘ༰ʢϨεϙϯεʣΛ ͍ճ͢͜ͱ͕Մೳ w 3VCZͷWDSWDS͕༗໊ 18
࣮֬ʹ ࣮ࡍͷϨεϙϯεΛϞοΫԽՄೳ a͔͠ɺࣗಈੜ
>> (Pʹ͓͚Δ7$3ϥΠϒϥϦ wEOBFPOHPWDSʢ⭐ʣ w$PNCP4USJLF)2WDSHPʢ⭐ʣ wTFCPSBNBHPWDSʢ⭐ʣ wSQDSFQMBZʢ⭐ʣ w H31$༻ w HPPHMFBQJTHPPHMFDMPVEHPʹแؚ͞ΕΔ
ύοέʔδͳͷͰHPPHMFDMPVEHPͱͯ͠ͷελʔ 19
>> (Pʹ͓͚Δ7$3ϥΠϒϥϦ wEOBFPOHPWDSʢ⭐ʣ w$PNCP4USJLF)2WDSHPʢ⭐ʣ wTFCPSBNBHPWDSʢ⭐ʣ wSQDSFQMBZʢ⭐ʣ w H31$༻ w HPPHMFBQJTHPPHMFDMPVEHPʹแؚ͞ΕΔ
ύοέʔδͳͷͰHPPHMFDMPVEHPͱͯ͠ͷελʔ 20
>> EOBFPOHPWDS wWDSWDSʹΠϯεύΠΞ͞Εͯ࡞ΒΕͨϥΠϒϥϦ wSQDSFQMBZΛআ͚࠷ελʔ͕ଟ͍ wIUUQ$MJFOUͷ5SBOTQPSUʹHPWDSͰ༻ҙ͞Εͨ 5SBOTQPSUʢIUUQ3PVOE5SJQQFSʣΛ ༻͢Δ͜ͱͰϨεϙϯεͷอଘΛ࣮ݱ 21
>> ࣮ྫ wɺɺɺͷલʹ༻ޠઆ໌ w 3FDPSEFS w ϨεϙϯεΛه͢Δͭ w ࣮ଶIUUQ3PVOE5SJQQFSΠϯλʔϑΣʔεΛຬͨͨ͠ ߏମ
w $BTTFUF w อଘͨ͠Ϩεϙϯεͷ༰͕ೖͬͯΔϑΝΠϧ w ZBNMϑΝΠϧ 22
>> ࣮ྫ wIUUQ$MJFOUΛ֎෦͔ΒೖͰ͖ΔΑ͏ʹ͢Δ w HBUFXBZ֎෦"1*ͱͷΓͱΓΛநԽͨ͠ͷ ʢσʔλιʔε͕"1*ͷSFQPTJUPSZͱ͍͏Πϝʔδʣ 23
>> ࣮ྫ wIUUQ$MJFOUΛ֎෦͔ΒೖͰ͖ΔΑ͏ʹ͢Δ w HBUFXBZ֎෦"1*ͱͷΓͱΓΛநԽͨ͠ͷ ʢσʔλιʔε͕"1*ͷSFQPTJUPSZͱ͍͏Πϝʔδʣ 24
>> ࣮ྫ w3FDPSEFSͷੜ͓ΑͼIUUQ$MJFOUͷࠩ͠ࠐΈ 25 ˢ͜͜Ͱ༻ҙͨ͠IUUQ$MJFOUΛ௨ΔϨεϙϯεશͯอଘ͞ΕΔ
>> ࣮ྫ w3FDPSEFSͷੜ͓ΑͼIUUQ$MJFOUͷࠩ͠ࠐΈ 26 ˢ͜͜Ͱ༻ҙͨ͠IUUQ$MJFOUΛ௨ΔϨεϙϯεશͯอଘ͞ΕΔ
>> ࣮ྫ w3FDPSEFSͷੜ͓ΑͼIUUQ$MJFOUͷࠩ͠ࠐΈ 27 ˢ͜͜Ͱ༻ҙͨ͠IUUQ$MJFOUΛ௨ΔϨεϙϯεશͯอଘ͞ΕΔ
>> ࣮ࡍʹςετΛճͯ͠ΈΔͱʜ w$BTTFUFʹϨεϙϯε༰͕อଘ͞Ε͍ͯΔ 28
>> ࣮ࡍʹςετΛճͯ͠ΈΔͱʜ w$BTTFUFʹϨεϙϯε༰͕อଘ͞Ε͍ͯΔ 29
>> ϦΫΤετͷಉҰੑʹ͍ͭͯ wσϑΥϧτͰԼهύϥϝʔλ͕ಉ͡Ͱ͋Ε ಉҰͷϦΫΤετͱͯ͠ఆ w )551ϝιου w ϦΫΤετઌͷ63- wϧʔϧΧελϜՄೳ w
4FU.BUDIFS ʹΑΓಉҰੑνΣοΫͷํࣜΛ มߋՄೳ 30 ʮಉ͡ʯϦΫΤετอଘ༰Λ͍ճ͕͢ʮಉ͡ʯͷ݅ʁʁ
>> อଘ༰Λमਖ਼͢Δ߹ wϨεϙϯεͷमਖ਼͕ඞཁʹͳͬͨ߹ΧηοτΛ ফͤ0, w HPWDSͰɺΧηοτ͕ଘࡏ͠ͳ͍߹ʹ Ϩεϙϯε༰ͷอଘॲཧΛ࣮ߦ w ZBNMΛमਖ਼ w
ಡΈ͍͢ZBNMϑΝΠϧͳͷͰखͰ͢ͷ Ͱ͖ͳ͘ͳ͍Ͱ͕͢ɺ͋·Γ͓͢͢Ί͠·ͤΜ 31
>> ฐνʔϜͰͷӡ༻ํ๏ w45(ڥͷϨεϙϯεΛอଘ wςετؔʢ5FTU9YY ʣ͝ͱʹΧηοτΛ༻ҙ w$BTTFUFϧʔτσΟϨΫτϦԼͷ DBTTFUUFTσΟϨΫτϦʹ อଘ 32
>> ϝϦοτ wϞοΫίʔυΛࣗಈੜͰ͖Δ wϞοΫͱ࣮γεςϜؒͷ༷ͷͣΕ͕ͳ͘ͳͬͨ wϞοΫͷϦϙδτϦͱίϯςφΠϝʔδΛফͤͨ w EPDLFSDPNQPTFͷىಈΛߴԽ wςετʹཁ͢Δ࣌ؒΛॖ w )551௨৴ˠϑΝΠϧಡΈࠐΈ
33
>> ςετ࣌ؒͷॖ 34 ॳճ ճҎ߱
>> σϝϦοτ wϞοΫΛमਖ਼͢Δ͍͞ʹɺ ༗ޮͳΞΫηετʔΫϯΛऔಘ͠ͳ͓͢ඞཁ͕͋Δ ˠجຊతʹϞοΫमਖ਼ʹ֎෦γεςϜ͕༷มߋ͢Δͱ͖ͳͷͰ ɹଟൃ͢ΔࣄͰͳ͍ wΧηοτ୯ҐͰϨεϙϯε͕อଘ͞ΕΔ ˠΧηοτͷͻͱͭͷϦΫΤετʹ͓͍ͯ ɹϨεϙϯεͷอଘʹࣦഊͨ͠߹ɺ ɹશϦΫΤετΛอଘ͠ͳ͓͢ඞཁ͕͋Δ
ʢճආࡦ͕ͳ͍Θ͚Ͱͳ͍͕ʜʣ 35
>> Χηοτ୯ҐͰͷϨεϙϯεอଘ wΧηοτʹ ෳͷϦΫΤετ͕ อଘ͞Ε͍ͯΔ w ਖ਼ৗܥ w ҟৗܥ 36
ҟৗܥͷϦΫΤετ ਖ਼ৗܥͷϦΫΤετ
>> Χηοτ୯ҐͰͷϨεϙϯεอଘ wҟৗܥͷϦΫΤετͷΈ मਖ਼ͨ͘͠ͳͬͨ߹ wΧηοτ୯ҐͰআ w ਖ਼ৗܥͷอଘ༰ফ͑Δ w ݸผͰमਖ਼͢ΔͳΒ ZBNMΛ৮Δ͔͠ͳ͍
37 ҟৗܥͷϦΫΤετ ਖ਼ৗܥͷϦΫΤετ ༷มߋʹؾͮ͘ ػձʹͳΔͷͰϝϦοτʹͳΓ͑Δ
>> ·ͱΊ wϞοΫΛ͍͔ͪΒखͰ࡞Δඞཁ͕ͳ͘ͳΔ w࣮ࡍͷϨεϙϯεΛอଘ͢ΔͷͰ ϞοΫͱ࣮γεςϜؒͰ༷ͷࠩҟ͕ͳ͘ͳΔ wʮϩʔΧϧͰಈ͍ͨͷʹʜʯ͕ݮΔʂʢͣʣ 38 7$3͕࣮ݱ͢Δ࠷ߴͷ%9