Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
0x Protocol
Osuke
June 22, 2018
Programming
6
1.2k
0x Protocol
Osuke
June 22, 2018
Tweet
Share
More Decks by Osuke
See All by Osuke
osuke
0
94
osuke
0
100
osuke
2
420
osuke
3
3.4k
osuke
3
390
osuke
9
2.1k
osuke
1
970
osuke
4
2.1k
osuke
1
360
Other Decks in Programming
See All in Programming
danilop
1
730
ryosukes
0
1.3k
yotuba088
1
590
tetsukick
0
180
itok
1
410
watilde
4
1k
bkuhlmann
4
660
mackee
0
520
abeta
1
170
gernotstarke
0
380
osyo
0
290
keiichihirobe
1
110
Featured
See All Featured
wjessup
339
16k
deanohume
295
28k
dotmariusz
94
5.5k
geeforr
332
29k
cherdarchuk
71
260k
bermonpainter
342
26k
trallard
14
710
caitiem20
308
17k
bryan
100
11k
myddelton
109
11k
jakevdp
774
200k
jrom
116
7.2k
Transcript
Y1SPUPDPM 5IF1SPUPDPMGPS5SBEJOH5PLFOT (VOPTZ*OD0TVLF ![PPN@[PPN[P
Osuke @zoom_zoomzo - blog - twitter - ϑϦʔϥϯε → Gunosy
(2018/06)
w %&9ͱYͷ֓ཁ w YͷτϨʔυϓϩηε $SFBUF 7BMJEBUF 'JMM
$BODFM w YͷίϯτϥΫτߏ w 0SEFSXBUDIFS w YDPOOFDU w 'SPOUSVOOJOH w YWFSTJPO
ಛ ϢʔβʔͷࢿۚΛୈࡾऀ͕༬͔Βͳ͍ Ϣʔβʔ͕ࣗൿີ伴Λཧ͢Δ8BMMFUUP8BMMFUͷ69 ͳͥඞཁͳͷ͔ʁ औҾॴͰͷϋοΩϯάϦεΫ࣋ͪಀ͛ϦεΫͷഉআ E"QQTͷόοΫάϥϯυͰಈ࡞͢ΔτʔΫϯަ
Կ͕՝ͳͷ͔ʁ ΦϯνΣʔϯͰͷHBTGFF͕ߴ͍ʢεέʔϥϏϦςΟʣ τϨʔυͷॲཧ ेͳΦʔμʔͷྲྀಈੑ֬อ ϑϩϯτϥϯχϯάͳͲ ͲͷΑ͏ͳ%&9͕͋Δ͔ʁ Y #BODPS ,ZCFSOFUXPSL &UIFS%FMUB "JSTXBQ ʜ %&9ʢࢄܕऔҾॴʣͱ
Yͱ %&9Λߏங͢ΔͨΊͷϓϩτίϧ ΦϑνΣʔϯͰΦʔμʔΛཧ͠ɺ ΦϯνΣʔϯͰΦʔμʔΛఆ HBTGFFΛ͑ɺϦΞΫςΟϒͳ6*Λఏڙ 3FMBZFS͕Ϣʔβʔͷ0SEFSΛΦϑνΣʔϯͰཧ 3FMBZFS͕ΦʔμʔΛूΊͯྲྀಈੑΛఏڙ͢Δओମ ͦͷྲྀಈੑΛར༻ͯ͠͞·͟·ͳE"QQT͕ τϥετϨεͳτʔΫϯަʹ༻͍Δ දతͳ3FMBZFSϓϩτίϧ
3BEFS3FMBZɿҰ൪ϝδϟʔ 1BSBEFYɿ$PJOCBTF͕ങऩ %IBSNBɿEFCUτʔΫϯऔҾ E:E9ɿσϦόςΟϒऔҾ
Yͷϓϩηε 0SEFS 0SEFS 0SEFS ΦϯνΣʔϯ .BLFS 5BLFS &YDIBOHFTPM 3FMBZFS 0SEFS
0SEFS 0SEFS ᶃ$SFBUF ᶄ7BMJEBUF ᶅ'JMM †5PLFOBQQSPWF .BLFSͱ5BLFS͕ަ͍ͨ͠τʔΫϯΛ BQQSPWF͢Δ ᶃ$SFBUF .BLFS͕0SEFSϑΥʔϚοτΛ࡞Δ .BLFS͕0SEFSʹॺ໊͢Δ ᶄ7BMJEBUF 3FMBZFS͕0SEFSϑΥʔϚοτΛݕূ͢Δ ᶅ'JMM 5BLFS͕0SEFSΛ'JMM͢ΔτϥϯβΫγϣϯΛ ΦϯνΣʔϯʹૹ৴͢Δ &5)ˠ;39 ;39ˠ&5) ˞3FMBZFS͕߈ܸ͞Εͯ ϢʔβʔͷࢿۚΛୣ͏͜ͱͰ͖ͳ͍
Yϓϩηε†5PLFO"QQSPWF DPOTUFUI5P$POWFSU;FSP&YUP#BTF6OJU"NPVOU OFX#JH/VNCFS XFUI5PLFO*OGPEFDJNBMT DPOTUEFQPTJU5Y)BTIFTBXBJU1SPNJTFBMM XFUI0XOFS"EESFTTFTNBQ BEESFTT\ SFUVSO[FSP&YFUIFS5PLFOEFQPTJU"TZOD
8&5)@"%%3&44 FUI5P$POWFSU BEESFTT ^ BXBJU1SPNJTFBMM EFQPTJU5Y)BTIFTNBQ UY\ SFUVSO[FSP&YBXBJU5SBOTBDUJPO.JOFE"TZOD UY ^ &5)͔Β8&5)ͷੜ DPOTUTFU;SY"MMPXBODF5Y)BTIFTBXBJU1SPNJTFBMM BEESFTTFTNBQ BEESFTT\ SFUVSO[FSP&YUPLFOTFU6OMJNJUFE1SPYZ"MMPXBODF"TZOD ;39@"%%3&44 BEESFTT ^ DPOTUTFU8FUI"MMPXBODF5Y)BTIFTBXBJU1SPNJTFBMM BEESFTTFTNBQ BEESFTT\ SFUVSO[FSP&YUPLFOTFU6OMJNJUFE1SPYZ"MMPXBODF"TZOD 8&5)@"%%3&44 BEESFTT ^ BXBJU1SPNJTFBMM TFU;SY"MMPXBODF5Y)BTIFTDPODBU TFU8FUI"MMPXBODF5Y)BTIFT NBQ UY\ SFUVSO[FSP&YBXBJU5SBOTBDUJPO.JOFE"TZOD UY ^ &3$ن֨ͰBQQSPWF ͠ɺUSBOTGFS'SPN Ͱ͖ΔΑ͏ʹ .BLFSͱ5BLFS͕อ͍࣋ͯ͠ΔτʔΫϯΛYͷίϯτϥΫτ͕ΘΓʹૹۚͰ͖ΔΑ͏ʹ͢Δ
Yϓϩηεᶃ$SFBUF0SEFS DPOTUPSEFS\ NBLFSNBLFS"EESFTT .BLFSͷΞυϨε UBLFS;FSP&Y/6--@"%%3&44 5BLFSͷΞυϨεʢࢦఆ͢Δ߹ʣ GFF3FDJQJFOU;FSP&Y/6--@"%%3&44 3FMBZFSͷΞυϨε NBLFS5PLFO"EESFTT;39@"%%3&44 .BLFS͕ަΦϑΝʔ͍ͯ͠ΔτʔΫϯͷΞυϨε
UBLFS5PLFO"EESFTT8&5)@"%%3&44 .BLFS͕ަϦΫΤετ͢ΔτʔΫϯͷΞυϨε FYDIBOHF$POUSBDU"EESFTT&9$)"/(&@"%%3&44 YϓϩτίϧͷFYDIBOHFTPMͷΞυϨε TBMU;FSP&YHFOFSBUF1TFVEP3BOEPN4BMU 0SEFSΛϢχʔΫʹ͢ΔͨΊͷϥϯμϜφϯόʔ NBLFS'FFOFX#JH/VNCFS .BLFS͕ࢧ͏खྉ UBLFS'FFOFX#JH/VNCFS 5BLFS͕ࢧ͏खྉ NBLFS5PLFO"NPVOU;FSP&YUP#BTF6OJU"NPVOU OFX#JH/VNCFS %&$*."-4 ɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹ.BLFS͕ΦϑΝʔ͍ͯ͠ΔτʔΫϯྔ UBLFS5PLFO"NPVOU;FSP&YUP#BTF6OJU"NPVOU OFX#JH/VNCFS %&$*."-4 ɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹ5BLFSʹϦΫΤετ͢ΔτʔΫϯྔ FYQJSBUJPO6OJY5JNFTUBNQ4FDOFX#JH/VNCFS %BUFOPX ɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹ0SEFS͕ظݶΕʹͳΔλΠϜελϯϓ ^ ˞;FSP&YYKTͷDMBTT .BLFSɺަ͍ͨ͠τʔΫϯɺखྉͳͲΛࢦఆͨ͠0SEFSΛͭ͘Δ
Yϓϩηεᶃ4JHOJOHUIF0SEFS .BLFS࡞ͨ͠0SEFSΛࣗͷൿີ伴Ͱॺ໊͢Δ͜ͱͰɺ0SEFSσʔλͷվ͟ΜΛ͙ DPOTUPSEFS)BTI;FSP&YHFU0SEFS)BTI)FY PSEFS DPOTUTIPVME"EE1FSTPOBM.FTTBHF1SFpYGBMTF DPOTUFD4JHOBUVSFBXBJU[FSP&YTJHO0SEFS)BTI"TZOD PSEFS)BTI NBLFS"EESFTT
TIPVME"EE1FSTPOBM.FTTBHF1SFpY DPOTUTJHOFE0SEFS\ PSEFS FD4JHOBUVSF ^ ͠PSEFS͕վ͟Μ͞ΕͨΒɺPSEFSͷϋογϡมΘΓෆਖ਼ʹͳͬͯ͠·͏
Yϓϩηεᶄ7BMJEBUF0SEFS BXBJU[FSP&YFYDIBOHFWBMJEBUF0SEFS'JMMBCMF0S5ISPX"TZOD TJHOFE0SEFS 3FMBZFSɺ.BLFSʹΑͬͯఏࣔ͞ΕͨPSEFSΛΦʔμʔϒοΫʹՃ͑Δલʹਖ਼ੑΛݕূ͢Δ 0SEFSϑΥʔϚοτ͕ద͔ ॺ໊͕ਖ਼͍͔͠ ΦʔμʔϒοΫʹՃ͞Εͨޙਵ࣌ɺPSEFSͷݕূΛߦ͏ˠ0SEFS8BUDIFSʢޙड़ʣ FYQJSBUJPO6OJY5JNF4UBNQ4FDΛ͍͑ͯͳ͍͔ 0SEFSͷτʔΫϯ͕શͯpMM͞Ε͍ͯͨΓɺΩϟϯηϧ͞Ε͍ͯͳ͍͔
.BLFSेͳࢿۚͱτʔΫϯʹର͢ΔBMMPXBODFΛ༩͍͑ͯΔ͔
Yϓϩηεᶅ'JMM0SEFS DPOTUTIPVME5ISPX0O*OTV⒏DJFOU#BMBODF0S"MMPXBODFUSVF DPOTUpMM5BLFS5PLFO"NPVOU;FSP&YUP#BTF6OJU"NPVOU OFX#JH/VNCFS %&$*."-4 DPOTUUY)BTIBXBJU[FSP&YFYDIBOHFpMM0SEFS"TZOD TJHOFE0SEFS
pMM5BLFS5PLFO"NPVOU TIPVME5ISPX0O*OTV⒏DJFOU#BMBODF0S"MMPXBODF UBLFS"EESFTT DPOTUUY3FDFJQUBXBJU[FSP&YBXBJU5SBOTBDUJPO.JOFE"TZOD UY)BTI DPOTPMFMPH 'JMM0SEFSUSBOTBDUJPOSFDFJQU UY3FDFJQU 5BLFS͕ΦʔμʔϒοΫ͔Β࠷దͳϨʔτͷΦʔμʔΛ'JMM͢Δ pMM0SEFSτϥϯβΫγϣϯͷSFDFJQUΛग़ྗ USVFɿCBMBODFͱBMMPXBODFͷݕূΛεΩοϓ GBMTFɿݕূ͠ɺेͰͳ͚ΕHBTΛ5BLFSʹฦ͢
Yϓϩηεᶆ$BODFM0SEFS 0SEFS 0SEFS 0SEFS ΦϯνΣʔϯ .BLFS 5BLFS &YDIBOHFTPM 3FMBZFS 0SEFS
0SEFS 0SEFS $BODFM .BLFSఏࣔͨ͠ॺ໊0SEFSΛΩϟϯηϧՄೳ GVODUJPODBODFM0SEFS BEESFTT<>PSEFS"EESFTTFT VJOU<>PSEFS7BMVFT VJOUDBODFM5BLFS5PLFO"NPVOU QVCMJD SFUVSOT VJOU NBQQJOH CZUFTVJOU QVCMJDDBODFMMFE &YDIBOHFTPMʹΩϟϯηϧ0SEFSอ࣋͞Εɺ ͦͷΦʔμʔ͕5BLFSʹpMM͞ΕͯGBJM͢Δɻ
YͷίϯτϥΫτΞʔΩςΫνϟ &YDIBOHFTPM 0SEFS 1SPYZTPM 8&5)TPM ;39TPM ᶃ ᶄ ᶅ ᶆ
ᶌ ᶋ ᶊ ᶉ ᶈ ᶇ ɾ&3$ن֨ͷUSBOTGFS'SPN ɾόʔδϣϯΞοϓͷϝΧχζϜ pMM0SEFS DBODFM0SEFS ͳͲͷ τϨʔυ࣮ߦϩδοΫ τϨʔυͷఆͷΈΦϯνΣʔϯॲཧ͢Δ
0SEFSXBUDIFS 3FMBZFSʹΑΔΦʔμʔϒοΫͷಈతཧ
0SEFSXBUDIFS $BODFMFEɿ ɹɹ0SEFS͕Ωϟϯηϧ͞Ε͍ͯͳ͍͔ 'VMMZ'JMMFEɿ ɹɹ0SEFSͷͯ͢ͷτʔΫϯ͕'JMM͞Ε͍ͯͳ͍͔ &YQJSFEɿ ɹɹ࣌ؒΕʹͳ͍ͬͯͳ͍͔ .BLFSCBMBODFɿ ɹɹަτʔΫϯʹेͳߴ͕͋Δ͔ .BLFSBMMPXBODFɿ
ɹɹަτʔΫϯʹेͳBMMPXBODF͕͋Δ͔ .BLFS;39CBMBODFɿ ɹɹखྉࢧ͍ͷͨΊेͳߴ͕͋Δ͔ .BLFS;39BMMPXBODFɿ ɹɹखྉࢧ͍ͷͨΊेͳBMMPXBODF͕͋Δ͔ ಈతʹݕূ͖͢ঢ়ଶཁૉ 3FMBZFS69ͷͨΊΦʔμʔϒοΫΛ Ͱ͖Δ͚ͩϦΞϧλΠϜͳঢ়ଶͰอͭඞཁੑ ϒϩοΫνΣʔϯʹऔΓࠐ·ΕΔ લஈ֊ͷ1FOEJOHUSBOTBDUJPOQPPMΛࢹ QBSJUZOPEFͰ͋Ε࣮ࡍʹNJOJOHͤͣʹɺ 1FOEJOHCMPDLΛ࡞Δ͜ͱ͕Մೳ ܽͱͯ͠ɺখنͳSFPSHͰ ঢ়ଶมߋ͕ى͜ΔՄೳੑ͕ߴ͍ɻ ਖ਼ͳ0SEFS͕ෆਖ਼ͱݟͳ͞ΕऔΓআ͔Εͯ ͠·͏Մೳੑ͕͋Δ 3FMBZFSϊʔυΛݐͯͯɺཧ͍ͯ͠ΔΦʔμʔͷঢ়ଶΛৗʹΥον͠ɺ 'JMMͰ͖ͳ͘ͳͬͨ0SEFSΦʔμʔϒοΫ͔ΒऔΓআ͔ͳ͚ΕͳΒͳ͍
0SEFS8BUDIFS 7BMJE 4IBEPXFE 3FNPWFE JOWBMJEʹͳͬͨΒTIBEPXFE SFPSHͰ࠶WBMJEʹͳͬͨΒVO4IBEPX ेͳ$POpSNBUJPOޙ ྫ͑ɺ͋Δ0SEFS͕$BODFM͞Εͨͱ͖͙͢ʹSFNPWF͢ΔͷͰͳ͘ɺ ΦʔμʔϒοΫʹөͤ͞ͳ͍Α͏ʹ͢Δɻʢσʔλͱͯ͠อ࣋ʣ ͦͷޙɺϒϩοΫνΣʔϯͰSFPSH͕ى͖ͨΒɺ࠶ΦʔμʔϒοΫʹө͢Δɻ
YDPOOFDU 3FMBZFSTʹΞΫηε͢ΔͨΊͷ +BWBTDSJQUϥΠϒϥϦ ΦʔμʔϒοΫͷऔಘ Φʔμʔͷ'JMM ॺ໊ࡁΈΦʔμʔͷQPTU 3FMBZFSʹඪ४"1*͕ఆΊΒΕ͓ͯΓɺ ΦʔμʔϒοΫڞ௨తʹΞΫηεՄೳ ͳͷͰɺෳͷΦʔμʔϒοΫΛࢀর͠ ࠷దͳϨʔτͷΦʔμʔΛϐοΫΞοϓ͠
'JMM͢Δ͜ͱՄೳ E"QQTͷόοΫάϥϯυͰ ಈ࡞͢Δ͜ͱ͕ఆ 3FMBZFS E"QQT 3FMBZFS 3FMBZFS
%&9ͷ՝ d'SPOUSVOOOJOH0SEFSDPMMJTJPOTd
"MJDFɿ;39ˠ,/$ 1FOEJOHUSBOTBDUJPOQPPM )JHIFSHBTQSJDF #PCɿ;39ˠ,/$ 'SPOUSVOOJOHPSEFSDPMMJTJPOT 'SPOUSVOOJOHɿQFOEJOHUSBOTBDUJPOQPPMΛࢹ͠ɺ ΑΓߴ͍HBTQSJDFΛઃఆ͢Δ͜ͱͰɺΦʔμʔΛઌճΓॲཧ 0SEFSDPMMJTJPOTɿΦϯνΣʔϯʹૹͬͨ0SEFS͕ۮવඃͬͯ͠·͍ɺ Ұํͷ0SEFSॲཧ͕ࣦഊ͢ΔɻʢHBTࢧ͏ʣ ରࡦ๏ɿ
11ަব $PNNJUSFWFBM 5SBEF&YFDVUJPO$PPEJOBUPST 5BLFS͕pMM͠Α͏ͱͨ͠0SEFS͕͢ͰʹଞͷϢʔβʔʹpMM͞Ε͍ͯͯɺ HBT͚ͩফඅͯ͠͠·͏ SFGIUUQT[PPNCMDDPNBCPVUGSPOUSVOOJOHJOEFY
YWFSTJPO ίϯτϥΫτߏͷมԽ 'PSXBSEJOH 0SEFS &YDIBOHF "TTFU1SPYZ %JTQBUDIFS &3$1SPYZ &5)
8&5) &3$1SPYZ &/41SPYZ 5PLFO" /'5# /BNF$ 'JMUFS 3FHJTUSZ &5)Λ8&5)ʹม ,:$Λຬͨͨ͠ϢʔβʔͷΈ͕ τϨʔυͰ͖Δ
Ҏ্ʂ