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
class-component.js
Search
Yoshiya Hinosawa
June 13, 2016
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
class-component.js
R-Tech 社内勉強会用資料
class-component.js のコードレビュー用の紹介資料
https://github.com/kt3k/class-component
Yoshiya Hinosawa
June 13, 2016
More Decks by Yoshiya Hinosawa
See All by Yoshiya Hinosawa
Deno のこれまでとこれから / Deno JSConf JP 2021
kt3k
0
100
Other Decks in Programming
See All in Programming
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
1
280
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
480
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
710
AWSに止められる覚悟してますか?
morizo_1984
2
540
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Domain-Driven Transformation
hschwentner
2
2.3k
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
Railsバージョンを4倍にした話
optim
0
400
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
The Cult of Friendly URLs
andyhume
79
7k
Music & Morning Musume
bryan
48
7.4k
My Coaching Mixtape
mlcsv
0
360
How to Talk to Developers About Accessibility
jct
2
580
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
Transcript
DMBTTDPNQPOFOUKT ᖒ!LULDPN
୭ʁ w ໊લᖒ ͻͷ͞ΘΑ͠ w ৬ۀϑϩϯτΤϯυΤϯδχΞ w ΤϯδχΞྺ͙Β͍ w
ϖοτσάʔ ͶͣΈ Yඖ
ܦྺ খ͞ͳ8FC੍࡞ձࣾ" খ͞ͳ8FC੍࡞ձࣾ#
ϑϦʔϥϯε ̎
DMBTTDPNQPOFOUKT ͷհ
DMBTTDPNQPOFOUKTJT w 7JFXϑϨʔϜϫʔΫ w 8SJUUFOJO+BWB4DSJQU w K2VFSZϓϥάΠϯ w ϛχϑΝΠͯ͠,#
DMBTTDPNQPOFOUKTJTOPU w 7JSUVBM%PNϥΠϒϥϦ w 'MVY࣮ w OFXMBOHVBHF
ྫ5)&5*.&3
ࢀߟ3FBDUͷ5JNFS σϞ
DMBTTDPNQPOFOUͷ5JNFS σϞ
DMBTTDPNQPOFOUͷ5JNFS DMBTTDPNQPOFOUͱͯ͠ొ 5JNFSΛදݱ͢ΔKTͷΫϥε σϞ
DMBTTDPNQPOFOUͷ5JNFS DMBTTDPNQPOFOUͱͯ͠ొ lUJNFSzΫϥεΛ࣋ͬͨTQBOλά͕ 5JNFSDMBTTʹఆٛ͞Εͨৼ͍Λ͢Δ 5JNFSΛදݱ͢ΔKTͷΫϥε σϞ
ίϯηϓτ
ίϯηϓτ
ίϯηϓτ ී௨ͷEPN XJUIK2VFSZ FH bUJNFS` +4ͷDMBTT FHDMBTT5JNFS\ʜ^
ίϯηϓτ ී௨ͷEPN XJUIK2VFSZ FH bUJNFS` +4ͷDMBTT FHDMBTT5JNFS\ʜ^ ࢀরՄ ࢀরՄ
DMBTTDPNQPOFOUKTͷࣄ ˣ͜ΕΛ ͜Εˣʹ͢Δ͜ͱ
τϦΨʔ w EJWDMBTTlUJNFSzEJW
τϦΨʔ w EJWDMBTTlUJNFSzEJW
τϦΨʔ w EJWDMBTTlUJNFSzEJW IUNMͷDMBTTͰొ͞ΕͨDPNQPOFOU໊ ͱҰக͢ΔͷΛDMBTTDPNQPOFOUͱͯ͠ ॳظԽ͢Δɻ Ұக͠ͳ͍ͷʹରͯ͠Կ͠ͳ͍
ิ w جຊIUNMͷDMBTTʹԠ͢ΔܗͰ͕͢ɺ +4͔Βಈతʹ࡞Γ͍ͨ߹ɺ bTQBO` DD bUJNFS`
ͷΑ͏ͳ࡞ΓํͰ͖·͢
ॳظԽͰى͜Δ͜ͱ
ॳظԽͰى͜Δ͜ͱ ొͨ͠+4$MBTTΛFMFNFOUҾͰOFX
ॳظԽͰى͜Δ͜ͱ ొͨ͠+4$MBTTΛFMFNFOUҾͰOFX @@DD@JOJU@@ؔΛ͍࣋ͬͯΕͦΕΛݺͿ ແ͚ΕFMFNϓϩύςΟʹFMFNFOUΛηοτ
ॳظԽͰى͜Δ͜ͱ ొͨ͠+4$MBTTΛFMFNFOUҾͰOFX @@DD@JOJU@@ؔΛ͍࣋ͬͯΕͦΕΛݺͿ ແ͚ΕFMFNϓϩύςΟʹFMFNFOUΛηοτ ΠϕϯτॳظԽ
ॳظԽͰى͜Δ͜ͱ ొͨ͠+4$MBTTΛFMFNFOUҾͰOFX @@DD@JOJU@@ؔΛ͍࣋ͬͯΕͦΕΛݺͿ ແ͚ΕFMFNϓϩύςΟʹFMFNFOUΛηοτ ΠϕϯτॳظԽ ॳظԽࡁΈͷ͠Δ͠Λ͚ͭΔ
ॳظԽͰى͜Δ͜ͱ ొͨ͠+4$MBTTΛFMFNFOUҾͰOFX @@DD@JOJU@@ؔΛ͍࣋ͬͯΕͦΕΛݺͿ ແ͚ΕFMFNϓϩύςΟʹFMFNFOUΛηοτ ΠϕϯτॳظԽ ॳظԽࡁΈͷ͠Δ͠Λ͚ͭΔ FMFNFOUͷதʹDPFMFNFOUΛอଘ ޙͰऔΓग़͢༻
֓೦తʹ্ͷॲཧͰ ˣΛͬͨ͜ͱʹͳΓ·͢
ͪͳΈʹ
ิ w DPFMFNFOUΠϯελϯεʹରͯ͠ɺରԠ͢Δ FMFNFOUͷඞͣݸ w DPFMFNFOUͷछผ͕ҧ͑ɺͭͷFMFNFOUʹ ෳͷDPFMFNFOU͕ରԠ͢Δ͜ͱ͋Γಘ·͢ ˡ͜͏͍͏ͷμϝ ˡ͜ΕΞϦ
ิ w DMBTTDPNQPOFOUࣗମ.7$.71 .77.qVYͳͲɺͲͷΞʔΩςΫνϟͰ ͏͔ʹ͍ͭͯಛʹنఆ͍ͯ͠·ͤΜɻ w .7 ͷ71$7. .Ҏ֎ͷύʔτ ͱ͠
ͯ͏͜ͱՄೳͷͣ
"1*
TUBUJD"1*ݸ JOTUBODF"1*ݸ EFDPSBUPSTݸ
4UBUJD"1* DDؔ w DD ίϯϙʔωϯτ໊ ࣮Ϋϥε Ͱొ w
EJWDMBTTlΫϥεΫϥεʜzEJWͱ͍͏ λά͕͋ͬͨͱ͖ʹɺΫϥε/ͷதͰίϯϙʔ ωϯτొ͞Εͨͷ͕͋Δ࣌ɺࣗಈతʹ࣮ Ϋϥεͱඥ͍ͨঢ়ଶͰॳظԽ͞ΕΔ λάͳΜ Ͱྑ͍
4UBUJD"1* DDJOJU w DDJOJU ը໘ͷDDΛॳظԽ͠·͢ QKBYͳͲͰಈతʹՃ͞ΕΔ߹ʹར༻͢Δ
*OTUBODF"1*T GODDʹఆٛ͞ΕΔͷ EPNDD ίϯϙʔωϯτ໊ EPNΛಈతʹDD ʹ͢Δ ΓEPNࣗ
EPNDDHFU ίϯϙʔωϯτ໊ EPN͔ΒDD Λऔಘ͢Δ ແ͍߹UISPX EPNDDJOJU ίϯϙʔωϯτ໊ EPNΛಈత ʹDDʹ͢Δ ΓDPFMFNFOU
૬ޓࢀরʹ͍ͭͯ ࢀরՄ ࢀরՄ
૬ޓࢀরʹ͍ͭͯ ࢀরՄ ࢀরՄ ্ͷ"1*Ͱ૬ޓࢀর͞Ε·͢ FMFNDDHFU ໊લ UIJTFMFN
EFDPSBUPST w !PO Πϕϯτ໊ w ϝιουΛΠϕϯτϋϯυϥͱͯ͠ొ w !PO Πϕϯτ໊
BU ηϨΫλ w ϝιουΛηϨΫλͰߜͬͨΠϕϯτϋϯυ ϥͱͯ͠ొ
EFDPSBUPST ྫ class Foo { @on(‘click’).at(‘.btn’) onClick(e) { // .btn
ΫϦοΫ࣌ͷॲཧ } } <div class=“foo”> <button class=“btn”>Click!</btn> </div>
EFDPSBUPST w !FNJU Πϕϯτ໊ pSTU w ϝιουͷ࠷ॳʹΠϕϯτͷτϦΨʔΛՃ w !FNJU Πϕϯτ໊
MBTU w ϝιουͷ࠷ޙʹΠϕϯτͷτϦΨʔΛՃ w QSPNJTFΛฦͨ͠߹SFTPMWFޙʹτϦΨ
EFDPSBUPST ྫ class Foo { @emit(‘foo-update’).last start() { return new
Promise(resolve => { // ͜͜ͷॲཧ͕ resolve ͞Εͨ࣌ʹ // foo-update Πϕϯτ͕ emit ͞ΕΔ }) } }
ҙ w Ҏ্͕WYͷެ։"1*Ͱ͕͢ɺࠓޙมΘΔՄ ೳੑ͋Γ·͢ɻ w EFDPSBUPSTCBCFMQMVHJOUSBOTGPSN EFDPSBUPSTMFHBDZͰUSBOTQJMFͯ͠ಈ͘Α͏ ʹ࣮͞Ε͍ͯ·͕͢ɺEFDPSBUPSTࣗମ͕༷ ͱͯ͠pY͞Ε͍ͯͳ͍ͨΊཁҙɻ
༷આ໌Ҏ্Ͱ͢
࣮ͷ
ΞʔΩςΫνϟ
ઃܭํ w %%% w ϨΠϠʔυΞʔΩςΫνϟ w ΠϯϑϥυϝΠϯ ΞϓϦέʔγϣϯ"1* ʹ͚ͯߟ͑Δ
υϝΠϯϞσϧ ݸ w $MBTT$PNQPOFOU$POpHVSBUJPO w DMBTTDPNQPOFOUͷॳظԽʹඞཁͳใΛอ࣋ w ίϯϙωϯτ໊$PFMFNFOUͷΫϥεͳͲ w -JTUFOFS*OGP
w ΠϕϯτϋϯυϥͷใΛอ࣋ w Πϕϯτ໊ϋϯυϥࣗମηϨΫλͳͲ
ΞϓϦέʔγϣϯ Ϋϥε w $MBTT$PNQPOFOU.BOBHFS w TUBUJD"1*୲ DDͷొɺॳظԽͳͲ w $MBTT$PNQPOFOU$POUFYU
w JOTUBODF"1*୲ FMFNFOU͔ΒDDͷऔΓ ग़͠ͳͲ
"1* w DD w GODD w EFDPSBUPST w Ϣʔβʔʹ࿐ग़͢Δ"1*ͱΞϓϦΛͭͳ͙ ׂ
Πϯϑϥ w ͳ͠ K2VFSZࣗମ͕Πϯϑϥͱͯ͠ػೳ͢Δ ͷͰɺಛʹ͜ͷϨΠϠʔͷॲཧΛॻ͘ඞཁ͕ͳ ͍
ςετ
ςετπʔϧ w LBSNB ϒϥβϥϯφʔ w NPDIB ςετϥϯφʔ w
DIBJQPXFSBTTFSU Ξαʔγϣϯ w ϞοΫϑϨʔϜϫʔΫඞཁͳ͔ͬͨͷͰ͍ͬͯ·ͤΜɻ
ςετํ w ެ։"1*͚ͩςετ͍ͯ͠·͢ɻ w ·ͣެ։"1*ͷςετΛॻ͍͍ͯͨΒɺDPWFSBHF͕ ʹͳͬͯɺԼͷϨΠϠʔͷςετΛॻ͘ؾ͕ແ͘ͳͬ ͨͨΊɻ w ࠓޙػೳ͕૿͖͑ͯͨΒԼͷϨΠϠʔ υϝΠϯΞϓ
Ϧ ͷςετΛՃ͢Δ͔͠Ε·ͤΜɻ
πʔϧհ
ͦͷଞπʔϧ w FTMJOU TUBOEBSEελΠϧ ελΠϧνΣοΧ w CBCFM FTτϥϯεύΠϥ
w CSPXTFSJGZ όϯυϥ w JTQBSUB ΧόϨοδ
$*πʔϧ w DJSDMFDJ ςετͷ࣮ߦ w DPEFDPW ΧόϨοδੳ w
CJUIPVOE ίʔυ࣭ੳ w HSFFOLFFQFS ґଘੑอक w ˢݸਓతʹࠓ+4Ͱ044Λॻ্͘Ͱϕετͱ ࢥ͍ͬͯΔߏ
ࢀߟࢿྉ
DMBTTDPNQPOFOUKTΛ ͬͯॻ͔Ε͍ͯΔϓϩάϥϜͷྫ w DMBTTDPNQPOFOUUPEPNWD w NVMUJqJQ w QVODIFS w MPOHESFBNDPSF
ύζϧήʔϜ
5IBOLTGPSMJTUFOJOH LULDMBTTDPNQPOFOU