Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ざっくりとjavascriptを知ろう

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →
Avatar for なり なり
November 09, 2019

 ざっくりとjavascriptを知ろう

Avatar for なり

なり

November 09, 2019

Other Decks in Programming

Transcript

  1. ྺ࢙ʢུ֓ʣ • 1995೥ ஀ੜ • Netscape͕Netscape Navigatorʢϒϥ΢βʣʹ౥ࡌ • ։ൃ౰࣌͸LiveScriptͱ͍͏ݺশ •

    Java͕ਓؾ͔ͩͬͨΒɺ͔ͦ͜Β໊લΛ͍ͨͩ͘ • ౰࣌͸ϒϥ΢β͝ͱʹJavaScriptͷΑ͏ͳ΋ͷΛ։ൃ • ϒϥ΢βؒͷޓ׵ੑͷͨΊඪ४Խ͢Δ • Ecma International͕ECMA-262ͱ͍͏ن֨൪߸Ͱඪ४Խ • ͦΕ͕ECMAScriptʢ1997೥ʹॳ൛͕Ͱ͖Δʣ • ECMAScript + α ͕JavaScript
  2. ྺ࢙ʢ࢓༷ʣ • 1998೥ ECMA-262 ୈ2൛ • 1999೥ ECMA-262 ୈ3൛ •

    ͜͜·Ͱ͸͏·͍͍ͬͯͨ͘ • ୈ4൛ ࢓༷ࡦఆ1ճ໨ʢ2000೥ʙ2003೥͝Ζʣ • ୈ4൛ ࢓༷ࡦఆ2ճ໨ʢ2007೥ʙ2008೥͝Ζʣ • ECMA-262 ୈ4൛Ͱ·ͱ·Βͣ͜ͷόʔδϣϯ͸ഁغ͞ΕΔ • 2009೥ ECMA-262 ୈ5൛ ʢES5ʣ • 2015೥ ECMA-262 ୈ6൛ʢES2015ɺES6ʣ • 2016೥ ECMA-262 ୈ7൛ʢES2016ʣ • 2017೥ ECMA-262 ୈ8൛ʢES2017ʣ
  3. ྺ࢙ʢൃలʣ • 2005೥ AjaxʢAsynchronous JavaScript + XMLʣ ͕GoogleͰ࢖ΘΕΔ • 2005೥

    Prototype.jsʢRuby on Railsͷඪ४ϥΠϒϥϦͱͯ͠࡞ΒΕͨʁʣ • 2006೥ jQueryʢ2011೥~2017೥ Ruby on Railsͷඪ४ϥΠϒϥϦʣ • 2008೥ Google Chrome஀ੜ • V8Λ౥ࡌɻଞͷϒϥ΢βʹൺ΂JavaScriptͷ࣮ߦ͕଎͔ͬͨʁ • 2009೥ Node.jsϦϦʔεɺCommonJSͱ͍͏ϓϩδΣΫτൃ଍ • 2010೥ npmϦϦʔε • 2012೥ Backbone.js • 2014೥ npmʹ6to5ʢBABELͷલ਎ʣ ͕ొ৔ɺReact • 2015೥ webpack
  4. ಛ௃ • ΠϯλϓϦλݴޠ • ϓϩτλΠϓϕʔε • ϒϥ΢βͰಈ͘ • ಈతܕ෇͚ݴޠ ΠϯλϓϦλݴޠͱ͸ɺιʔείʔυΛղऍ͠ͳ͕Β࣮ߦ͢Δݴޠͷ͜ͱɻ

    ͭ·ΓɺJavaScript͸ιʔείʔυΛίϯύΠϥͰม׵͠ͳͯ͘΋ɺίϯϐϡʔλ ͰίʔυΛ࣮ߦͰ͖·͢ɻJavaScriptͷଞʹ΋ɺPerlɺPHPɺRubyɺPythonͳͲ΋ ΠϯλϓϦλݴޠʹͳΓ·͢ɻ ίϯύΠϧݴޠͷΑ͏ʹػցޠʹίϯύΠϧ͞Εͨ΋ͷΛ࣮ߦͤ͞ΔΑΓ͕͔࣌ؒ ͔Γ·͢ɻ ରͯ͠ɺίϯύΠϧݴޠͱ͸ɺ࣮ߦͱ͸ผʹίϯύΠϥΛ௨ͯ͠ػցޠʹίϯύΠ ϧͨ͠΋ͷΛ࣮ߦ͢Δݴޠͷ͜ͱɻ
  5. ಛ௃ • ΠϯλϓϦλݴޠ • ϓϩτλΠϓϕʔε • ϒϥ΢βͰಈ͘ • ಈతܕ෇͚ݴޠ JavaScriptʹ͸ɺݩʑΫϥεͱ͍͏΋ͷ͕ଘࡏ͠·ͤΜʢES5ʣɻ

    Array΍ObjectͳͲͷඪ४ϏϧτΠϯΦϒδΣΫτ΍ؔ਺ͳͲΛprototypeͱ͍͏΋ ͷͰ֦ு͍͖ͯ͠·͢ɻ ͪͳΈʹɺES2015(ES6)͔ΒΫϥεߏจ͕࢓༷ʹ௥Ճ͞ΕͨͷͰɺͦΕͰ͋Ε͹Ϋ ϥεϕʔεͰͷهड़΋ՄೳͰ͢ɻ
  6. ಛ௃ • ΠϯλϓϦλݴޠ • ϓϩτλΠϓϕʔε • ϒϥ΢βͰಈ͘ • ಈతܕ෇͚ݴޠ JavaScript͸ɺϒϥ΢βͷJavaScriptΤϯδϯͱ͍͏΋ͷͰղऍ͞Εɺ࣮ߦ͞Ε·

    ͢ɻͳͷͰɺͦͷϒϥ΢β͕ԿͷJavaScriptΤϯδϯΛ౥ࡌ͍ͯ͠Δͷ͔ʹΑͬͯɺ ಈ͍ͨΓಈ͔ͳ͔ͬͨΓ͢Δॻ͖ํ͕ଘࡏ͠·͢ɻ ࠓͰ͸React΍Vue.jsΛ࢖ͬͯ΄΅͢΂ͯͷHTMLཁૉΛඳը͢ΔΑ͏ʹͳΓ·ͨ͠ ͕ɺϒϥ΢β΍ϢʔβʔͷΞΫγϣϯ͕͖͔͚ͬͰɺίʔυ͕ධՁɾ࣮ߦ͞Εɺ HTMLʹखΛՃ͑ͨΓཁૉΛΞχϝʔγϣϯΛͤͨ͞Γ͢Δ͜ͱ͕Ͱ͖Δͷ͕େ͖ ͳಛ௃Ͱ͢ɻ
  7. ಛ௃ • ΠϯλϓϦλݴޠ • ϓϩτλΠϓϕʔε • ϒϥ΢βͰಈ͘ • ಈతܕ෇͚ݴޠ ಈతܕ෇͚ݴޠͱ͸ɺม਺ͳͲʹͲΜͳܕͷ஋͕ೖͬͯ͘Δ͔͸༧Ίܾ·͓ͬͯΒ

    ͣɺॲཧ͞ΕΔλΠϛϯάͰೖ͍ͬͯΔ஋ʹΑͬͯࣗಈతʹܕͷఆ͕ٛߦΘΕΔϓ ϩάϥϛϯάݴޠʹͳΓ·͢ɻ ࠷ۙ࿩୊ͷTypeScript͸੩తܕ෇͚ݴޠͰ͢ɻ
  8. jQuery • 2006೥ ϦϦʔεʢ࡞ऀ δϣϯɾϨγάʣ • ૉͷJSΑΓ΋༰қʹίʔυΛهड़Ͱ͖Δ • ݱࡏ v3.4.1

    • Πϕϯτ؅ཧ • CSSૢ࡞ • Ξχϝʔγϣϯ • Ajax Ͱ͖Δ͜ͱ ϒϥ΢βؒͰͷڍಈͷҧ͍Λ ͋·Γߟ͑ͳͯ͘΋ ࢖͑ΔΑ͏ʹ࡞ͬͯ͋Δ
  9. ͦͷଞ • GreenSockʢΞχϝʔγϣϯɺTween / Timelineʣ • swiper.jsʢεϥΠμʔʣ • slick.jsʢεϥΠμʔʣ •

    Hammer.jsʢλονδΣενϟʔʣ • highlight.jsʢιʔείʔυͷγϯλοΫεϋΠϥΠτʣ • chart.jsʢάϥϑදࣔʣ • pixi.jsʢ2Dඳըʣ • Three.jsʢ3Dඳըʣ • moment.jsʢ࣌ؒ / ೔࣌ʣ • js-cookieʢΫοΩʔ؅ཧʣ
  10. Ծ૝DOM DOMͱ͸ʁ ΢ΣϒϖʔδΛද͢ HTML ͷΑ͏ʹ — จॻͷߏ଄ΛϝϞϦ಺ʹදݱ͢Δ͜ͱ Ͱɺ΢ΣϒϖʔδͱεΫϦϓτ΍ϓϩάϥϛϯάݴޠΛ઀ଓ͢Δ΋ͷͰ͢ɻ υΩϡϝϯτΦϒδΣΫτϞσϧ (DOM)

    - Web API | MDN ϒϥ΢βͰwebϖʔδʢHTMLϑΝΠϧʣΛը໘ʹදࣔΛ͢Δͱ͖ʹɺHTML ཁૉΛπϦʔঢ়Ͱදͨ͠DOMπϦʔͱ͍͏΋ͷʹม׵͠·͢ɻ JavaScriptͰ͸ɺ͜ͷDOMπϦʔͷதͷҰͭҰͭʢϊʔυʣΛૢ࡞͠·͢ɻ
  11. ։ൃ؀ڥ Vue.js ։ൃ؀ڥ͸େ͖͘෼͚ͯ3ͭ React • Vue.jsͷຊମϑΝΠϧͷಡΈࠐΈ • CLIʢVue CLI /

    Nuxt.jsʣ • όϯυϥʔʢwebpack / Parcel / RollupʣͰ؀ڥΛࣗ෼Ͱ࡞Δ • React / ReactDOMͷຊମϑΝΠϧͷಡΈࠐΈ • CLIʢCreate React App / Next.jsʣ • όϯυϥʔʢwebpack / Parcel / RollupʣͰ؀ڥΛࣗ෼Ͱ࡞Δ
  12. ։ൃ؀ڥ ͦΕͧΕͷ։ൃ؀ڥͰԿ͕ҧ͏ͷ͔ ʲຊମϑΝΠϧͷಡΈࠐΈʳ දࣔ͢ΔHTMLϑΝΠϧʹVue.js΍ReactͷϑΝΠϧΛಡΈࠐΉscriptλάΛ ॻ͘ํ๏ɻίϯύΠϧɾτϥϯεύΠϧ͕ඞཁͳه๏͸Ͱ͖·ͤΜɻ ʲCLIʢVue CLI / Nuxt.js /

    Create React App / Next.jsʣʳ ίϚϯυҰͭͰίϯύΠϧɾτϥϯεύΠϧΛউखʹͯ͘͠ΕΔ؀ڥΛ࡞ͬͯ ͘Ε·͢ɻϑΥϧμɾϑΝΠϧͷ਽ܗ΋࡞ͬͯ͘Ε·͢ɻ࢓૊ΈΛཧղ͢Δ͜ ͱ΍ࣗ෼ͳΓʹ֦ு͢Δ͜ͱ͸ॳΊͯͷਓʹͱͬͯ͸೉͍͠ɻ ʲόϯυϥʔʢwebpack / Parcel / Rollupʣʳ ίϯύΠϧɾτϥϯεύΠϧΛͯ͘͠ΕΔ؀ڥΛࣗ෼Ͱ࡞ΔɻϑΥϧμɾϑΝ Πϧ΋ࣗ෼Ͱߟ͑ߏ੒͢Δඞཁ͕͋Γ·͢ɻઃఆϑΝΠϧΛॻ͍ͨΓɺBabel ͷઃఆΛͨ͠Γ͕େมͰ٧·Γ͕ͪɻ
  13. ։ൃ؀ڥ Ͱ͖Δ͜ͱɾͰ͖ͳ͍͜ͱ جຊతͳ ॻ͖ํ &4Ҏ߱ͷ ه๏ +494'$ ϑΥϧμߏ੒ ͷ֦ு ։ൃ؀ڥͷ

    ཧղͱ֦ு ຊମϑΝΠϧ ಡΈࠐΈ ˓ ˚ º º º $-* ˓ ˓ ˓ ˚ º όϯυϥʔ ˓ ˓ ˓ ˓ ˚ XFCQBDLͳΒ˓
  14. ։ൃ؀ڥ Vue.jsͰͷ։ൃ࣌ʹ͢Δ͜ͱ .vue .js .vue .js .scss .sass ߏจνΣοΫ JavaScriptͷίʔυ΁ม׵

    ʢର৅ϒϥ΢βͰಡΈࠐΊΔ΋ͷʣ ES6Ҏ߱ͷίʔυΛ ର৅ϒϥ΢βͰಡΈࠐΊΔΑ͏ʹม׵ cssʹม׵ cssϑΝΠϧΛు͖ग़͢ headλάʹૠೖ