ng-kyoto#3
"OOPUBUJPOʜ %FDPSBUPSʜOHͷ"OOPUBUJPOʹ͍ͭͯ!BNBHJUBLBZPTJ
View Slide
@amagitakayosi
OHೖ
)5.-ॻ͍ͯ
+4ॻ͍ͯ
ΊͰͨ͠ΊͰͨ͠
ৄ͘͠ޙͰʂৄ͘͠ޙͰʂ
͍͍
OHYYY ϝιουνΣΠϯ
ΦϨΦϨ$MBTT
ͬͱϞμϯʹॻ͖͍ͨʂ
OH࠶ೖ
+4όϕͬͯ+4όϕͬͯ+4όϕͬͯ+4όϕͬͯ+4όϕͬͯ
&4$MBTTʂ
͍͍ͪΐͬͱͬͯ
!$PNQPOFOUͱʜʜʁ
%FDPSBUPS
Decoratorw &$."4DSJQU1SPQPTBMͷҰͭ TUBHFw ؔΫϥεΛम০Ͱ͖Δw 1ZUIPOͷEFDPSBUPSͱେମಉ͡
༻ྫw NJYJO %* ϝϞԽ ʜʜw KBZQIFMQTDPSFEFDPSBUPSw DIBUXPSLXSBTTF
https://speakerdeck.com/armorik83/es7-decoratorsࢀߟBSNPSJL͞Μͷղઆ
࣮ঢ়گw CBCFM CBCFMQMVHJOTZOUBYEFDPSBUPSTw 5ZQF4DSJQU Wd
CBCFMͰ!$PNQPOFOU͑Δʂ
Μʜʜʁ
SFqFDUNFUBEBUBແ͠Ͱ!$PNQPOFOU͏ͱΤϥʔग़Δʂʂʂʂʂ5ZQF4DSJQUͷ߹FNJU%FDPSBUPS.FUBEBUBΦϓγϣϯ͕ඞཁ
reflect-metadataw NFUBEBUBΛѻ͏ͨΊͷQPMZpMMw &43FqFDUʹϝιουՃw 3FqFDUHFU.FUB%BUB ͱ͔
3FqFDU.FUBEBUB
ES6 Reflectw ϝλϓϩ༻ศརϝιουूw 1SPYZͱ͍ͬ͠ΐʹͬͨΓw AOFXAΛॻ͔ͣʹ Πϯελϯεੜͨ͠Γ
http://www.2ality.com/2014/12/es6-proxies.htmlࢀߟ .FUBQSPHSBNNJOHXJUI&$."4DSJQUQSPYJFT
NFUBEBUBͬͯԿʜʜ
Θ͔Βͳ͍ͷͰΤϥʔՕॴݟͯΈΔ
NPEVMFTBOHVMBSTSDDPSFVUJMEFDPSBUPSTUTͰΤϥʔग़ͯΔ
͙͢ԼͷNBLF%FDPSBUPSͰ3FqFDU৮ͬͯΔ
"OOPUBUJPO
Annotationw 5SBDFVS"U4DSJQUͰ࠾༻͞Εͨ ಛघه๏ͷҰͭw ؔΫϥεΛؾ߹Ͱम০͢Δw 1ZUIPOͷEFDPSBUPSͱશવҧ͏
ରΦϒδΣΫτʹBOOPUBUJPOྻΛڧҾʹੜ͠"OOPUBUJPOΛอଘ
AtScriptͷग़ྗJSΛݟΔͱw "OOPUBUJPOؔͰͳ͘Ϋϥεw ରͷΫϥεʹ BOOPUBUJPOϑΟʔϧυΛੜ͠ "OOPUBUJPOͷΠϯελϯεΛอଘ
ڧҾ
"OOPUBUJPOͰͰ͖Δ͜ͱ%FDPSBUPSͰͰ͖Δʂʂʂʂʂ
࣌ܥྻw 5SBDFVSʹ"OOPUBUJPO͕Ճw &4%FDPSBUPSTͷQSPQPTBMw "U4DSJQUൃදw "U4DSJQUऴྃͷ͓Βͤ
͕࣌มΘͬͨͷͰํͳͦ͞͏ʢ◞‸◟ʣ
͜ΕΛ౿·͑ͯNBLF%FDPSBUPSΛಡΉͱ
DMTBOOPUBUJPOTྻͷΘΓʹSFqFDUNFUBEBUBͬͯΔ
3FqFDUHFU0XO.FUBEBUB ΛͨͲ͍ͬͯ͘ͱ8FBL.BQΛͬͯΦϒδΣΫτຖͷ.FUBEBUBΛอଘ͍ͯ͠Δ
NBLF%FDPSBUPSͷׂʜʜʁ
"OOPUBUJPOͷΈΛ࠶ݱ͢Δ
"OOPUBUJPOͷΈΛ࠶ݱ͢ΔBOOPUBUJPO$MT͔Β%FDPSBUPSΛ࡞ͬͯฦ͢
"OOPUBUJPOΘΓͷ%FDPSBUPSΛ࡞Δؔͩͬͨʂ
!$PNQPOFOUͷ࣮ʁ
NPEVMFTBOHVMBSTSDDPSFNFUBEBUBUT--NBLF%FDPSBUPSʹ$PNQPOFOU.FUBEBUBΛͯ͠Δ
NPEVMFTBOHVMBSTSDDPSFNFUBEBUBEJSFDUJWFTUT-
͏Ή
·ͱΊ
·ͱΊw "OOPUBUJPOͱ%FDPSBUPSผw OHੲ"OOPUBUJPOΛͬͯͨw ݱࡏSFqFDUNFUBEBUBΛ͍ %FDPSBUPSͰ"OOPUBUJPOΛ ࠶ݱ͍ͯ͠Δ
ײw OHɺֶशϦιʔεړΔΑΓ ຊମίʔυͷίϝϯτಡΜͩ΄͏ָ͕w SFqFDUNFUBEBUBɺ 8FBL.BQ͍͍͚͑ͩͰʁw QSPQPTBMग़͢ͷ࣏త͗͢Δ
ڭ܇ϓϩδΣΫτʹ࣌ؒΛ͔͚͗͢Δͳ
͋Γ͕ͱ͏͍͟͝·ͨ͠
ˣؔ࿈ϖʔδͷϒΫϚˣhttp://b.hatena.ne.jp/amagitakayosi/ng2/