Slide 1

Slide 1 text

ϝλϓϩάϥϛϯάͱ ੜ࢈ੑͷ࿩ NFUBQSP@FT !FSVLJUJ

Slide 2

Slide 2 text

ࣗݾ঺հ w FSVLJUJ 5XJUUFS (JUIVC 2JJUB .FEJVNͳͲ w Ҿ͖͜΋ΓؾຯϑϦʔϥϯεΤϯδχϟʔ ڭࡐ࡞੒ͱ͔ ϥΠλʔͬΆ͍ײ͡ͷ͜ͱ΋ʜ w όοΫΤϯυϝΠϯ ϑϩϯτΤϯυɾΠϯϑϥͳͲ w ޷͖ͳݴޠ͸5ZQF4DSJQU ͱ͍͏͔ܕͷ͋Δ&$."4DSJQU w ಉਓࢽಉਓࢽ঎ۀԽಉਓࢽಉਓࢽ ߹ಉࢽ ঎ ۀԽਐߦத߹ಉࢽࣥචதˍಉਓࢽࣥචத

Slide 3

Slide 3 text

+4FSͱͯ͠͸৽ࢀऀ w &MFDUSPOͷҝʹ+BWB4DSJQUΛ࢝ΊΔ w $P⒎FF4DSJQU&45ZQF4DSJQU &4&4'MPX5ZQF4DSJQU w %0.΍$44ͳͲͷ஌ݟ͕গͳ͍

Slide 4

Slide 4 text

๞͖ͬΆ͍޷ح৺Ԣ੝ w ڈ೥ޙ൒͔ΒͷྲྀΕ ϑϨʔϜϫʔΫ࡞੒ϝ λϓϩάϥϛϯά҉߸௨՟ɾϒϩοΫνΣʔ ϯɾίϯϐϡʔλϏδϣϯ w ࠷ۙͪΐͬͱϝλϓϩάϥϛϯά͔Β཭Ε͍ͯ ͨʜɻʢ"45ຊͷ঎ۀԽ͕ετοϓதʜʜ w కΊ੾Γۦಈ։ൃɺకΊ੾Γۦಈࣥචɺษڧձۦ ಈษڧ

Slide 5

Slide 5 text

NFUBQSP@FT w ڈ೥ळࠒͷ+BWB4DSJQUࡇΓͷ࣌ʹQPUBUPE͞Μͱ ॳΊͯ͋ͬͯɺͦͷ͋ͱʮͳΜ͔ษڧձ։࠵͠· ͤΜ͔ʁʯͱ͓੠͕͚ͯ͠΋Βͬͨ w ͪΐͬͱ͹ͨ͹͍ͨͯͯ͠ɺ݁ہ݄ʹೖͬͯϝλ ϓϩͷษڧձ΍Γ͍ͨͰ͢ʂͱݴͬͨΒ։࠵͕ܾ ఆ͠·ͨ͠ɻ w ৭ʑ΍͍͚ͬͯͨͩͯ΄Μͱ͋Γ͕͍ͨݶΓͰ͢ʂ

Slide 6

Slide 6 text

͘͞ΒΠϯλʔωοτ͞Μ ձ৔ͷ͝ఏڙ ͋Γ͕ͱ͏͍͟͝·͢ʂʂ

Slide 7

Slide 7 text

ΞδΣϯμ w ϝλϓϩάϥϛϯάͱ͸Կ͔ w ੜ࢈ੑ w ద੾ͳબ୒ࢶͷҰͭͱͯ͠ͷϝλϓϩάϥϛ ϯά

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

ྫ w %#εΩʔϚఆ͔ٛΒɺσʔλϞσϧ΍Ϧϙδ τϦύλʔϯΛࣗಈੜ੒ w σʔλϞσϧ͔Β42-จΛࣗಈੜ੒ w %4-Λݩʹύʔαʔ ߏจղੳث Λੜ੒ w ؔ਺Λड͚औͬͯ߹੒͢Δؔ਺

Slide 10

Slide 10 text

ྫ w -JTQΈ͍ͨʹߏจΛࣗ෼ͰఆٛͰ͖Δݴޠ w 4DBMBͷϚΫϩ w ςϯϓϨʔτݴޠ ಛʹνϡʔϦϯά׬શͳ΍ ͭ w ϦϑϨΫγϣϯ ಈతʹ৘ใΛऔಘͨ͠Γॻ͖ ׵͑ͨΓ

Slide 11

Slide 11 text

˞ͨͩ͠ɺ஫ҙ͠ͳ͍ͱ ؆୯ʹࠇຐज़΍ ෛͷҨ࢈ʹͳΓ·͢

Slide 12

Slide 12 text

ͦ΋ͦ΋ϝλͱ͸ʁ

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

༷ʑͳϝλ w ࡞඼தͷΩϟϥ͕࡞඼ͷ֎ʹݴٴ͢Δʮϝλ ൃݴʯ w σʔλຊମʹରͯ͠σʔλΛ؅ཧ͢ΔͨΊͷ৘ ใΛ෇༩͢Δʮϝλσʔλʯ w ྲྀߦΓͷσοΩΛલఏͱͨ͠ಛघͳઓུΛલ ఏͱ͢ΔσοΩߏஙʮ˓˓ϝλσοΩʯ

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

ந৅ͱ۩৅ w ϓϩάϥϛϯά ཁ݅ఆ͔ٛΒίʔσΟϯά· Ͱશ෦ؚΊΔ ͸ɺେମந৅ͱ۩৅ͷߦ͖དྷ ਓؒ૚ χʔζ΍ϏδωεϩδοΫɺཁ݅ ઃܭ ΞʔΩςΫνϟͳͲେ͖ͳઃܭ ৄࡉઃܭ ΋ͬͱৄࡉʹ;Έ͜Μͩઃܭ ൚༻࣮૷ ൚༻౓ͷߴ͍ίʔυ ݸผ࣮૷ ৄࡉͳࣄ৘ʹ౿ΈࠐΜͩίʔυ

Slide 17

Slide 17 text

ந৅౓ͱϝλϓϩάϥϛϯά w ந৅౓͕ߴ͍ɺߴϨϕϧϓϩάϥϛϯάͬͯ ੑೳ͕མͪͦ͏͚ͩͲɺϝλϓϩάϥϛϯά Ͱίʔυੜ੒͢Ε͹ʜ w ϝλϓϩάϥϛϯάͬͯ೉ͦ͠͏ʹࢥ͑Δ͚ Ͳɺ೔ৗతʹந৅Խͱ͔΍ͬͯΔϓϩάϥϚ ʹͱͬͯ͸͞΄Ͳ೉қ౓ͷߴ͍΋ͷͰ͸ͳ͍ ͷͰ͸ʁʁ

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

ϓϩάϥϚͷੜ࢈ੑ w ͔͔ͬͨ࣌ؒ ίετ ʹର͢Δɺ੒Ռ෺ͩͱࢥ ͏͕ɺࢦඪ͕೉͍͠ ίʔυͷߦ਺ʁ͍͡Γ΍ ͢͞ʁ඼࣭ʁṶֹ͔ͬͨۚʁ w Ͱ΋૬ରతʹ͸ࢉग़͸Ͱ͖Δ ಉ͜͡ͱΛୡ੒ ͢Δͷʹཁ͢Δ࣌ؒͷࠩ w ഒʙഒͷࠩΛ࣋ͭਓ͕͍Δͱ͍ΘΕΔ

Slide 21

Slide 21 text

ͦ΋ͦ΋ ͳͥੜ࢈ੑʹେ͖ͳ͕ࠩ͋Δʁ w ݸʑਓͷೳྗࣗମ͕ഒ΋ͷࠩΛ௚઀ੜΈग़ ͢ͷ͔ʁ w ಉ͡ࢥߟํ๏ͳΒ ࢥߟ଎౓͕ഒͷਓ͕ؒ ͍Δͱ͸ߟ͑ʹ͍͘ w εϖοΫͷҧ͍ΑΓ΋ɺ΍Γํͷҧ͍ͷํ͕ ܾఆతͳࠩʹͳΔͷͰ͸ʁ

Slide 22

Slide 22 text

໨తୡ੒ʹͱͬͯ࠷௿ݶͳ ޻ఔ͚ͩΛಥ͖٧ΊΕ͹ ͦΕ͕࠷଎ͳͷͰ͸ʁ

Slide 23

Slide 23 text

Α͋͘Δແବ w ͦͷ࣌఺Ͱ΍Βͳ͍͍ͯ͘͜ͱΛ΍͍ͬͯΔ w ͦͷ࣌఺Ͱ΍ͬͯͳ͍ͱ͍͚ͳ͍͜ͱΛ΍͍ͬͯͳ ͍ w ࣺͯͨํ͕ૣ͍࣌ʹɺແཧʹ࠶ར༻ w ෆඞཁʹ ৑௕ͳઃܭɺίʔυ w ΑΓΑ͍ख๏ɾಓ۩͕͋Δͷʹ஌Βͳ͍ɺ࢖͑ͳ͍

Slide 24

Slide 24 text

ແବΛ๷͙ w ਖ਼͍͠޻ఔ؅ཧ ಛʹઓུͷޡΓΛઓज़ͰऔΓ ໭͞ͳ͍͜ͱ͕ॏཁ w ΑΓޮ཰తͳखஈΛબ΂ΔΑ͏ʹखࡳΛ૿ ΍͢ w ͦͷத͔Βద੾ͳબ୒Λ͢Δ

Slide 25

Slide 25 text

ແବΛ๷͙ w ਖ਼͍͠޻ఔ؅ཧ ಛʹઓུͷޡΓΛઓज़ͰऔΓ ໭͞ͳ͍͜ͱ͕ॏཁ w ΑΓޮ཰తͳखஈΛબ΂ΔΑ͏ʹखࡳΛ૿ ΍͢ w ͦͷத͔Βద੾ͳબ୒Λ͢Δ ༩͑ΒΕͨࡋྔ͕গͳ͗͢Δ৔߹͸ స৬Λߟ͑ͨํ͕͍͍͔΋͠Ε·ͤΜ ἤΓ

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

ϝλϓϩάϥϛϯάʹ΋ ͍͔ͭ͘छྨ͕͋Δ

Slide 28

Slide 28 text

ϦϑϨΫγϣϯػೳ w ϝιουݺͼग़͠΍ϓϩύςΟΞΫηεΛIBDL ͢Δ w ຊདྷ஌Βͳͯ͘΋͍͍৘ใΛऔಘͨ͠Γॻ͖ ׵͑ͨΓ

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

$ cat test.js class Hoge {} const hoge = new Hoge() const fuga = new Proxy(hoge, { get(target, name) { console.log(`${target}の${name}をgetしにきやがりました`) return 'みせねーよ!' }, set(target, name, value) { console.log(`${target}の${name}に${value}をsetしにきやがりました。ふてえ やろうだ!`) } }) console.log(fuga.x) fuga.y = 10 $ node test.js [object Object]のxをgetしにきやがりました みせねーよ! [object Object]のyに10をsetしにきやがりました。ふてえやろうだ!

Slide 31

Slide 31 text

੩తͳ΋ͷ΍߹Θٕͤ w #BCFMͱ͔ w 8FCQBDLͱ͔ w QFHKTͱ͔ w CBCFMSFHJTUFS SFRVJSFIBDL

Slide 32

Slide 32 text

ϦϑϨΫγϣϯΛ࢖Θͳͯ͘΋ w ؔ਺ܕݴޠͷઃܭ͸ࢀߟʹͳΔ w ݴޠ಺%4- +4ͩͱදݱͮ͠Β͍͔ͳʜ w 03Ϛούʔͱ͔΋ʁ

Slide 33

Slide 33 text

ϝλϓϩάϥϛϯάΛؚΊͯ ݸʑͷख๏͸બ୒ࢶͷҰͭ

Slide 34

Slide 34 text

ݸਓతײ૝ w ۩৅తͳίʔυΛ͍͍ײ͡ʹݮΒͭͭ͠ɺແବͳந৅ԽΛ ͠ͳ͍ͱ͍͏όϥϯεײ͕֮؊ w ߴϨϕϧϓϩάϥϜʹ͸ੑೳతແବ͕͋Δͱ͍ΘΕΔ͚Ͳ ϝλϓϩάϥϛϯάʹΑΔίʔυੜ੒Ͱ͋Δఔ౓͸๷͛Δ w ۩৅తͳίʔυΛݮΒ͢खஈͱͯ͠ϝλϓϩ͕΋ͬͱධՁ ͞Εͯ΋͍͍ͱࢥ͏Μͩʜʜ w %3: ,*44 :"(/*͋ͨΓͷݪଇେ޷͖Ͱ͢

Slide 35

Slide 35 text

·ͱΊ w ϝλϓϩάϥϛϯά͸ϓϩάϥϜΛѻ͏ϓϩάϥϜ w ೉ͦ͠͏͚ͩͲͦ͏Ͱ΋ͳ͍ ৔߹ʹΑͬͯ໘౗ͩͬͨΓ ࠇຐज़ʹͳΓ͕ͪͰ͸͋Δ͚Ͳ w ந৅ͱ۩৅Λߦ͖དྷ͢Δͷ͕ϓϩάϥϚ w ੜ࢈ੑ͸ͦͷόϥϯεͷऔΓํʹେ͖͘ࠨӈ͞ΕΔ ࣋࿦ w ϝλϓϩάϥϛϯά͸όϥϯεͷྑ͍ந৅ԽΛ΍Δखஈͷ ͻͱͭ

Slide 36

Slide 36 text

͝ΊΜͳ͍͞ DPOOQBTTϖʔδʹॻ͍ͯͨ ਅͷ%3:͸࣍ͷωλʹ͠·͢ʂʂ ࣍ɺ͋Ε͹ʂ

Slide 37

Slide 37 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠