Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Go Modules and Proxy Walkthrough
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ktr
August 06, 2019
Programming
27k
8
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Go Modules and Proxy Walkthrough
#godo_miniconf
ktr
August 06, 2019
Transcript
48 slides
CyberAgent & Merpay BackendEngineer’s Go ಉ miniConf Go Modules and
Proxy Walkthrough
w LUS Ωλϩʔɺ!LUS@ w ϝϧϖΠ৽ଔ όοΫΤϯυΤϯδχΞ w $PEF1BZNFOU5FBN XIPBNJ
CyberAgent & Merpay BackendEngineer’s Go ಉ miniConf Go Modules and
Proxy Walkthrough
8IBUJT(P.PEVMFT
w (PͷόʔδϣχϯάγεςϜ w 3VTT$PYͷ(P7FSTJPOJOHͱWHPͰొ w (P͔Βݶఆతͳαϙʔτ (P.PEVMFT
w ϦϙδτϦͷϞδϡʔϧԽ w ηϚϯςΟοΫόʔδϣχϯά w HPNPEʹΑΔґଘཧ w HPTVNʹΑΔνΣοΫαϜͷཧ (P.PEVMFTͷಛ
DSD UMW NQN NQNKQRS UPPMT ϦϙδτϦͷϞδϡʔϧԽ go.mercari.io/go-emv-code . ᵓ── crc16
ᵓ── mpm │ └── jpqr ᵓ── tlv └── tools
DSD UMW NQN NQNKQRS UPPMT HPNPEUJEZ go.mercari.io/go-emv-code . ᵓ── crc16
ᵓ── go.mod ᵓ── go.sum ᵓ── mpm │ └── jpqr ᵓ── tlv └── tools go.mercari.io/go-emv-code
DSD go.mercari.io/go-emv-code UMW NQN NQNKQRS UPPMT • v0.1.1 • v0.1.0
Ϟδϡʔϧ୯ҐͰόʔδϣχϯά "v" ͚ͭΔඞཁ͕͋Δʂ
WQBDLBHFT go.mercari.io/go-emv-code/v2 • v2.0.0 ޙํޓੑ͕อͯͳ͍࣌
w (PNPEVMFTΛ༗ޮԽ͢Δ͔Ͳ͏͔ઃఆͰ͖Δ w PO༗ޮԽ w P⒎ແޮԽ w BVUP σϑΥϧτ
w (01"5)TSDͷ֎͔ͭHPNPE͕͋Ε༗ޮ (0.0%6-&
None
w (PͰBVUP͕σϑΥϧτͷ·· w ͨͩ͠ɺ(01"5)TSDͷதͰ͋ͬͯHPNPE͕ ͋Ε༗ޮԽ͞ΕΔ (0.0%6-& (P
w (PNPEVMFT͕༗ޮͩͱHPHFUͷڍಈ͕มΘΔ w (01"5)TSDʹஔ͞Εͳ͘ͳΔ w HPNPEͱHPTVNͷॻ͖͑ w όʔδϣϯͳͲΛࢦఆͯ͠ͷऔಘ NPEVMFBXBSFHPHFU
$ export GO111MODULE=on $ go get go.mercari.io/go-emv-code # latest (v0.1.1)
$ go get go.mercari.io/
[email protected]
# version $ go get go.mercari.io/go-emv-code@670be75 # commit hash $ go get -u=patch go.mercari.io/go-emv-code # v0.1.1 NPEVMFBXBSFHPHFU
(P.PEVMF&DPTZTUFN
w .PEVMF*OEFY w .PEVMF"VUIFOUJDBUJPO w .PEVMF.JSSPST w .PEVMF1SPYZ (P.PEVMF&DPTZTUFN
w ύϒϦοΫʹར༻ՄೳͳϞδϡʔϧΛ ΫΤϦΛͬͯݕࡧͰ͖ΔαʔϏε w ࣮JOEFYHPMBOHPSHͷΈ .PEVMF*OEFY
None
None
w (01"5)HPHFUதؒऀ߈ܸʹରͯ͠੬ऑ .PEVMF"VUIFOUJDBUJPO
w (01"5)HPHFUதؒऀ߈ܸʹରͯ͠੬ऑ w NPEVMFBXBSFHPHFUͰHPTVNͰ ਖ਼͍͠Ϟδϡʔϧ͔ΛݕূՄೳʹʂ .PEVMF"VUIFOUJDBUJPO
w Ҏલʹऔಘͨ͠ϞδϡʔϧͷνΣοΫαϜΛอ࣋ HPTVNͷ
w Ҏલʹऔಘͨ͠ϞδϡʔϧͷνΣοΫαϜΛอ࣋ ॳճऔಘ࣌ʹਅਖ਼ੑΛ֬ೝͰ͖ͳ͍ HPTVNͷ
w ͋ΒΏΔϞδϡʔϧͷνΣοΫαϜΛ ू͢ΔαʔϏε w ࣮TVNHPMBOHPSHͷΈ (PDIFDLTVNEBUBCBTF TVNEC
w ϞδϡʔϧͷίʔυνΣοΫαϜͷΩϟογϡΛߦ͏ w ಛఆͷαʔόͷՄ༻ੑϨΠςϯγʹӨڹ͞ΕΔͷΛ͙ .PEVMF.JSSPST
w ϞδϡʔϧͷίʔυνΣοΫαϜͷΩϟογϡΛߦ͏ w ಛఆͷαʔόͷՄ༻ੑϨΠςϯγʹӨڹ͞ΕΔͷΛ͙ w ҰΩϟογϡ͞ΕͨϞδϡʔϧجຊతʹআ͞Εͳ͍ .PEVMF.JSSPST
w ϞδϡʔϧͷίʔυνΣοΫαϜͷΩϟογϡΛߦ͏ w ಛఆͷαʔόͷՄ༻ੑϨΠςϯγʹӨڹ͞ΕΔͷΛ͙ w ҰΩϟογϡ͞ΕͨϞδϡʔϧجຊతʹআ͞Εͳ͍ w ϦϙδτϦআʹରॲ͢ΔͨΊ FHHPCJOEBUB .PEVMF.JSSPST
w .PEVMFQSPYZQSPUPDPMΛ࣮͢ΔαʔϏε w QSPYZHPMBOHPSHɺ"UIFOTͳͲ w (P͔ΒHPίϚϯυΦϦδϯαʔόͰ ͳ͘QSPYZίʔυΛऔಘ͠ʹ͍͘ .PEVMF1SPYZ
w (&5(01309:NPEVMF!WMJTU w (&5(01309:NPEVMF!WWFSTJPOJOGP w (&5(01309:NPEVMF!WWFSTJPONPE w (&5(01309:NPEVMF!WWFSTJPO[JQ .PEVMFQSPYZQSPUPDPM
None
(01309:ͱ(046.%# $ export GOPROXY="https://proxy.golang.org,direct" # default $ export GOPROXY="off" #
disable proxies $ export GOSUMDB="sum.golang.org" # default $ export GOSUMDB="off" # disable sumdb
HP ίϚϯυ QSPYZ QSPYZHPMBOHPSH TVNEC TVNHPMBOHPSH JOEFY JOEFYHPMBOHPSH NPEVMFͷऔಘ DIFDLTVNͷऔಘ
(P%PD NPEVMFใͷऔಘ (JU)VC #JUCVDLFU FUD
w JOEFYͳ͠ w TVNECҰ෦ͷΈHPMBOHPSHYNPETVNECʹଘࡏ w NJSSPSͳ͠ w QSPYZͳ͠ ֤αʔϏεͷެ࣮ࣜ
w ͍ͣΕHPMBOHPSHYNPEͰެ։͞Ε͍ͯ͘ w ͦΕͧΕͷ࣮DNEHPJOUFSOBMҎԼͰ ։ൃ͞Ε͍ͯΔ w (P·Ͱʹͯ͢ެ։͞Εͦ͏ʜʁ ֤αʔϏεͷެ࣮ࣜ
1SJWBUF.PEVMFT
1SJWBUF.PEVMFT HP ίϚϯυ ϓϥΠϕʔτ ϦϙδτϦ QSPYZ QSPYZHPMBOHPSH
1SJWBUF.PEVMFT HP ίϚϯυ ϓϥΠϕʔτ ϦϙδτϦ QSPYZ QSPYZHPMBOHPSH ❌
w (PͰσϑΥϧτͰQSPYZHPMBOHPSH Λܦ༝͢Δ w ηΩϡϦςΟతͳ͔ΒϞδϡʔϧͷऔಘʹ ࣦഊͨ͠߹ίϚϯυͷ࣮ߦ͕ࢭ·Δ 1SJWBUF.PEVMFT
w (PͰσϑΥϧτͰQSPYZHPMBOHPSH Λܦ༝͢Δ w ηΩϡϦςΟతͳ͔ΒϞδϡʔϧͷऔಘʹ ࣦഊͨ͠߹ίϚϯυͷ࣮ߦ͕ࢭ·Δ w ୯७ʹ(PͷόʔδϣϯΛ্͛Δ͚ͩͩͱϏϧυ͕௨Βͳ͘ͳΔ 1SJWBUF.PEVMFT
(0/01309: $ export GONOPROXY="github.com/ktr0731/priv-mod" $ go get github.com/ktr0731/priv-mod
w ·ͩͦ͠͏ʜ w ެࣜͷ࣮͕ͳ͍ w #BTJDೝূ͔͑͠ͳ͍ 1SPYZͷηϧϑϗετ
·ͱΊ
w (0.0%6-&(PͰมΘΒͣBVUP w (PNPEVMFT͕༗ޮͩͱHPHFUͷڍಈ͕มΘΔ w ηϚϯςΟοΫόʔδϣχϯάͰόʔδϣχϯά (P.PEVMFT
w JOEFYΫΤϦʹΑΔϞδϡʔϧͷݕࡧ w TVNEC͋ΒΏΔϞδϡʔϧͷνΣοΫαϜΛू w NJSSPSϞδϡʔϧνΣοΫαϜͷΩϟογϡ w QSPYZHPίϚϯυϞδϡʔϧใΛఏڙ (P.PEVMF&DPTZTUFN
w QSPYZHPMBOHPSHϓϥΠϕʔτϦϙδτϦ ΞΫηεͰ͖ͳ͍ w (0/01309:Λదʹઃఆ͢Δ 1SJWBUF.PEVMFT
w(P7FSTJPOJOHIUUQTSFTFBSDITXUDIDPNWHP w.PEVMFT8JLJIUUQTHJUIVCDPNHPMBOHHPXJLJ.PEVMFT w(P.PEVMFTJOIUUQTCMPHHPMBOHPSHNPEVMFT w1SPQPTBM4FDVSFUIF1VCMJD(P.PEVMF&DPTZTUFN IUUQTHPHPPHMFTPVSDFDPNQSPQPTBM NBTUFSEFTJHOTVNECNE wJOEFY TVNEC QSPYZIUUQTJOEFYHPMBOHPSH w(P3FMFBTF/PUFTIUUQTUJQHPMBOHPSHEPDHPNPEVMFT
w(P%PDIUUQTHPEPDPSHHJUIVCDPNHPMBOHHPTSDDNEHPJOUFSOBM wUJQHPMBOHPSHIUUQTUJQHPMBOHPSHDNEHP w(PQIFS$PO(P.PEVMF1SPYZ-JGFPGBRVFSZ IUUQTBCPVUTPVSDFHSBQIDPNHPHPQIFSDPOHPNPEVMFQSPYZMJGFPGBRVFSZ wQSPQPTBMYNPEOFXSFQPGPSNPEVMFNFDIBOJDTIUUQTHJUIVCDPNHPMBOHHPJTTVFT wDNEHPEFpOF)551BVUIFOUJDBUJPOFYUFOTJPONFDIBOJTNIUUQTHJUIVCDPNHPMBOHHPJTTVFT wDNEHPEFGBVMUUP(0.0%6-&BVUP XJUIDIBOHFT GPS(PIUUQTHJUIVCDPNHPMBOHHP JTTVFT ࢀߟ
5IBOLZPVGPSMJTUFOJOH
More Decks by ktr
See All by ktr
詳解 MCP Go SDK / MCP Go SDK
ktr_0731
3
710
あまり知られていない MCP 仕様たち / MCP specifications that aren’t widely known
ktr_0731
0
700
CLI ツールを Go ライブラリ として再実装する理由 / Why reimplement a CLI tool as a Go library
ktr_0731
3
1.8k
激動の一年を通じて見えてきた「技術でリードする」ということ
ktr_0731
8
11k
Monorepo における Go テストの差分実行 / Running Differential Go Tests in a Monorepo
ktr_0731
1
500
Designing libraries in Go way
ktr_0731
6
1.6k
ソフトウェアの複雑さに立ち向かう技術 / Tackling software complexity
ktr_0731
0
260
Fuzzy finder as a Go library
ktr_0731
3
6.4k
つよくてニューゲーム / NewGame++
ktr_0731
0
1.1k
Other Decks in Programming
See All in Programming
複数ドメインを一つのアプリに統合するFlutterの設計と運用_FlutterKaigi2026登壇資料(須永高弘)
takahirosunaga
0
180
私なりのハーネスエンジニアリング ~独自の言語処理系の開発を通して~
seosoft
0
210
Rails初心者がパスキーを実装してみて大変だったこと
ktombow
0
190
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
160
Growing PicoRuby's Ecosystem on ESP32
yuuu
2
130
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
340
Vapor Mode でアクセシビリティは 壊れないか検証した話
fuqda
1
350
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
250
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
370
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
1
210
Getting Started with Vibe Coding
miccheng
0
220
高橋メソッドでCVE解説シリーズ 〜CVE-2026-112816〜
hakkadaikon
0
260
Featured
See All Featured
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
The untapped power of vector embeddings
frankvandijk
2
2k
It's Worth the Effort
3n
188
29k
Being A Developer After 40
akosma
PRO
92
590k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
640
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.4k
Abbi's Birthday
coloredviolet
5
11k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1.1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
350