ææ°ã®Webéçºã¯ãããã€ãã®å€§èŠæš¡ãªã³ãã¥ããã£ã«éäžããŠããŸãã éå»5幎éãReactã¯ããŸããŸãªæ¥çã®ããã°ã©ããŒã®å ±æãç²åŸããŠããŸããã Reactã¯ãWebã€ã³ã¿ãŒãã§ã€ã¹ã®ããã°ã©ãã³ã°ã§MVCãåæ©çãªãã®ã«ããå¯äžã®ã©ã€ãã©ãªã§ãã ä»æ¥ãReactã¯ãFacebookãAirbnbãBBCãCourseraãeBayãExpediaãIMDBãªã©ãããŸããŸãªè£œåãéçºããããã«å€§äŒæ¥ã§äœ¿çšãããŠããŸãã
Reactã¯ãŒã«ãã®ãŠããŒã¯ãªæ©èœã®1ã€ã¯ããã®åšãã®ãªãŒãã³ãœãŒã¹éçºè ã®æ倧ãã€éåžžã«æŽ»çºãªã³ãã¥ããã£ã§ãã Max Stoiberã¯ãReactãä»æ¥ã®ãããžã§ã¯ããšããŠäœæãã人ã ã®1人ã§ãã éå»æ°å¹Žã«ããã£ãŠã圌ã¯äººæ°ã®ããã³ãã¥ããã£ã®å®åãããžã§ã¯ãã«åãçµãã§ãããææ°ãã€æé«ã®æè¡ã倧é䜿çšã«å°å ¥ããŠããŸãã
Maxãšã³ãã¥ããã£ã®æ°ãããã¬ã³ããReactã§éçºããããã®éçåä»ããã³ã³ããŒãã³ãã®ã¹ã¿ã€ãªã³ã°ãžã®æ°ããã¢ãããŒããã¹ãããã·ã§ãããã¹ãã«ã€ããŠè©±ããŸããã
Reactéçºã®ç§å¯ã¯ãã€ã³ã¿ãã¥ãŒã§ä»¥äžã§å ±æã§ããŸãã
-ããã«ã¡ã¯ãããã¯ã¹ïŒ Reactã³ãã¥ããã£ã§çŸåšèµ·ãã£ãŠããèå³æ·±ãããšã¯äœã§ããïŒ
-styled-components -React-componentsãã¹ã¿ã€ã«ããããã®æ°ããçŽ æŽãããæ¹æ³ïŒãã¡ãããç§èªèº«ã¯Glen Maddernã§ãã®ãããžã§ã¯ããäœæããã®ã§ã åèŠããããŸã ïŒã ããããçå£ã«ã React VRã¯éåžžã«ææã«èŠããŸããè©ŠããŠã¿ãè¯ãæ©äŒãåŸ ã¡é ããã§ãã
-FlowãšReactã¯Facebookã«ãã£ãŠéçºãããŠãããReactããŒã ã¯ãããããŒããããããã§ãïŒããšãã°ãreact-nativeã¯ãããŒã§å®å šã«ã«ããŒãããŠããŸãïŒ åå¿ããããŒã䜿çšããŸãã ããã¯ãTypeScriptãããReactã§ãããŒã䜿çšããæ¹ãè¯ããšããããšã§ããïŒ TypeScriptã¯Flow + Babelã®æœåšçãªä»£æ¿åã«ãªãå¯èœæ§ããããŸããïŒ
-ç§ã®ä»äºã§ã¯ãããã2ã€ã®ããŒã«ãFacebookã®éçºè ã«ãã£ãŠäœæããããããReactãšã®äºææ§ãä¿èšŒãããŠãããšããåçŽãªçç±ã§ãFlowãšBabelã䜿çšããŸããã C TypeScriptã¯å°ãç°ãªã話ã§ãã ãããŒéçºè ã®èšç»ã«ã¯å€ãã®èå³æ·±ãã¢ã€ãã¢ããããŸããTypeScriptã¯ãããã€ã¹ã®æ©èœïŒãããã³ãŒãã®é€å»ãªã©ïŒã®ããã«å¿ ç¶çã«é ããåããŸãã
Flowã¯ãããããFlowgraphãäœæããŸããããã¯ãã¢ããªã±ãŒã·ã§ã³å šäœã®ã°ã©ãã§ããã©ã®ã¢ãžã¥ãŒã«ãçžäºã«æ¥ç¶ãããŠããããèšæ¶ããŸãã TypeScriptã«ã¯ãã®ãããªæ©èœã¯ãããŸãããã¿ã¹ã¯ã倧ãããããããFlowã¯ããã«é²ãã§ããŸãã ãããŒã¯ãã¢ããªã±ãŒã·ã§ã³ã®å€§éšåãæ®ãã®ã³ãŒãããåãé¢ãããŠãããã©ãããå€æããããããåé€ããããšãææ¡ããŸãïŒ ãžã§ãã»ã¢ãªãœã³ã¯ ReactEuropeã§ããã«ã€ããŠå€ãã®ããšã話ããŸãã ã
-React-boilerplateã¯ããã¹ãŠã®GitHubã§æãæåã§äœ¿çšãããŠããããã10ã®ãã€ã©ãŒãã¬ãŒããããžã§ã¯ãã§ãïŒ äœã圌ããããªã«äººæ°ã«ãããšæããŸããïŒ
-React-boilerplateã¯ã create-react-appãã«ãŠã³ãããŠäžäœ3äœã«ãªããŸãã ã³ãã¥ããã£ã¯åœŒãæ¬åœã«ããã3ã«å ¥ãã®ãå©ãããšæããŸãã ãã®ãããžã§ã¯ãã¯ãåšå²ã®ã³ãã¥ããã£ã®æŽ»åã«ãã人æ°ããããŸãã ã©ãããããããç§ã¯ãããæ¹åããããã«å€ãã®æéãè²»ããåå è ã®çµ¶ãéãªãæµå ¥ã確ä¿ããããšãã§ããŸããã ä»ã®å€ãã®ãã€ã©ãŒãã¬ãŒããšã¯ç°ãªããããã¯1人ã®æ奜家ã®ãããžã§ã¯ãã§ã¯ãããŸãã-ããã¯äººã ã®å·šå€§ãªã°ã«ãŒãã®ä»äºã§ãïŒ
åå¿ãã€ã©ãŒãã¬ãŒãã䜿çšãããšãå°æ¥ã®Reactã¢ããªã±ãŒã·ã§ã³ãéçºããã³ãã¹ãããããã®æ¢è£œã®ç°å¢ãè¿ éã«ãããã€ã§ããŸãã ãããžã§ã¯ãã«ã¯ãããã€ãã®çãã³ãã³ãã§å°æ¥ã®ã¢ããªã±ãŒã·ã§ã³çšã®æ°ããã³ã³ããŒãã³ããçæããã®ã«åœ¹ç«ã€ã³ãã³ãã©ã€ã³ããŒã«ãå«ãŸããŠããŸãïŒ ã³ã³ããŒãã³ããã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã Babelã䜿çšããããã«å¿ èŠãªãã¹ãŠã®æ§æãããã³ã³ã³ãã€ã«ããããããžã§ã¯ãã®åœ¢ã§çšæãããŠããæ¢è£œã®ãã©ã«ããŒæ§é ãããã®ãããžã§ã¯ãã§å©çšã§ããŸãã
ã³ãã¥ããã£ã«åå ããŠã ãã£ãŒãããã¯ãšåå ãæè¿ããŸã ã
-æè¿ãReactã¢ããªã±ãŒã·ã§ã³ãšcss-in-js ã§äººã ãã¹ã¿ã€ã«ã管çããæ¹æ³ã«ã€ããŠã¢ã³ã±ãŒããå®æœããŸããã ã©ã®ãããªçµè«ãå°ãåºãããšãã§ããŸããïŒ äžè¬çãªcss-in-jsãšã¯äœã§ããïŒäººã ã¯ããã«ã€ããŠç°ãªãæå³ãæã£ãŠããŸãïŒïŒ åãªãCSSãããåªããŠãããã®ã¯äœã§ããïŒ Reactã³ã³ããŒãã³ããã¹ã¿ã€ã«ããæ¹æ³ã¯ïŒ ã€ã³ã©ã€ã³ã¹ã¿ã€ã«ã¯è¯ãã§ããïŒ ãŸã BEM / OOCSSã䜿çšããŠããŸããïŒ
-ç§ã®çµè«ã¯ãã³ã³ããŒãã³ããã¹ã¿ã€ã«ããããã®ãã䟿å©ãªæ¹æ³ãå¿ èŠã ãšããããšã§ãããããããã¹ãŠã®åé¡ã解決ããããšãæåŸ ããŠã ã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã§ã°ã¬ã³ã»ããããŒã³ãšååãå§ããçç±ã§ãïŒ ã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã䜿çšããŠãã ããïŒ
ã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã®ç¹åŸŽã¯ãã³ã³ããŒãã³ãæåã·ã¹ãã ã§é«åºŠãªæè¡ã䜿çšã§ããããšã§ãã ReactiveConfã«é¢ããç§ã®ãã¬ãŒã³ããŒã·ã§ã³ã§ã¯ãããã«ã€ããŠè©³ãã説æããŠããŸãã äžèšã§èšãã°ãèŠç¹ã¯ãã³ã³ããŒãã³ããšã¹ã¿ã€ã«ïŒã¯ã©ã¹åïŒã®éã®æ¥ç¶ãåãé€ããåäžã®ã¿ã¹ã¯ã«å®å šã«çŠç¹ãåœãŠãå°ããªã³ã³ããŒãã³ãã®ã·ã¹ãã å šäœãäœæããããšã§ãããŸãã ã³ã³ããã³ã³ããŒãã³ããšãã¬ãŒã³ããŒã·ã§ã³ã³ã³ããŒãã³ããåºå¥ããã®ã«ã圹ç«ã¡ãŸã ã
èè 泚ïŒä»æ¥ã®ã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã¯ããã¹ãŠã®äžè¬çãªãšãã£ã¿ãŒããã³IDEã§æ§æã®åŒ·èª¿è¡šç€ºããµããŒãããŠããŸããããMaxã¯ReactiveConf 2016ã§ã®ãã¬ãŒã³ããŒã·ã§ã³ã§ããã®éèŠãªæ©èœãAtomãWebStormãªã©ã§ããã«å©çšã§ããããšãä¿èšŒããŸããã
-Reactã®ã©ã®éçºããŒã«ããå§ãããŸããïŒ
-Redux DevToolsã¯ãå®è¡äžã«ã¢ããªã±ãŒã·ã§ã³ã§çºçãããã¹ãŠã®å€æŽãéåžžã«ç°¡åã«è¿œè·¡ã§ãããããåªããããŒã«ã§ãã åæ¹åã®ããŒã¿ãã€ã³ãã£ã³ã°ã䜿çšããAngularãªã©ã®ä»ã®ãã¬ãŒã ã¯ãŒã¯ãšã¯ç°ãªããã¢ããªã±ãŒã·ã§ã³ã§äœãèµ·ãã£ãŠããã®ãããªãèµ·ãã£ãŠããã®ããæ£ç¢ºã«ææ¡ããŠããŸãã
ReactãšReduxã®DevToolsã¯çŽ æŽãããã ãã§ããããã®ãã¹ãŠããŸã ããã䜿çšããŠããããã§ã¯ãªãã®ã¯æ®å¿µã§ãã
èè ã®ã¡ã¢ïŒ React Developer Toolsã¯ãã¢ããªã±ãŒã·ã§ã³å ã®ã³ã³ããŒãã³ãã®éå±€ãèŠèŠåããããã«äžå¯æ¬ ãªããŒã«ã§ãã ãããã¬ã«é Œãããã³ãŒããå€æŽããã«ãStateãPropsã³ã³ããŒãã³ããåæã§ããŸãã
-ç¹ã«jsãšReactããã¹ãããŠãããã®ãèŠããšãé ãå°ãå転ããŠããŸãã ã¢ã«ãavaãjestãé µçŽ ...ãŸããããã€ãã®æ¹æ³ããããŸããæµ ããã¹ããjsdomã䜿çšã§ããŸããjestã«ã¯æè¿ãããå€ãã®ã¹ãããã·ã§ãããç»å ŽããŠããŸãã ããããã¹ãŠã§äœãããŸããïŒ ããã«Reactãã¹ãã®ç²åŽã¯ãããŸããïŒ
-ããã«ããããã®ããŒã«ã®ã»ãšãã©ã¯Reactå°çšã§ã¯ãªããšæããŸãã ãã¹ãããŒã«ã¯é·å¹Žäœ¿çšãããŠããŸããã ç§ã¯Jestã®å€§ãã¡ã³ã§ããããã¯ãªãŒã¹ããªã¢äººïŒ Christoph Pojer ïŒã«ãã£ãŠäœæãããã ãã§ãªããã¹ãããã·ã§ãããã¹ããReactã³ã³ããŒãã³ãã®ãã¹ãæ¹æ³ããã³äžè¬çãªãã¹ãã®çã®é©åœã ããã§ãïŒ
ã¹ãããã·ã§ãããã¹ãã¯ãåäœãã¹ããç°¡çŽ åããŸãã å®éã以åã¯æåã§è¡ãå¿ èŠããã£ããã¹ãŠã®äœæ¥ãèªååããŸããåçãæ®ãã ãã§ãäœããå€æŽãããšãJestã«ãã¯ããããã¯æ£ããå€æŽã§ããïŒã³ãŒãã¬ãã¥ãŒäžã«ç¢ºèªãããŸãïŒãŸãã¯ããããããã¹ãŠãå£ããŠãå éãã«æ»ããŸãïŒã ãã¹ãŠãèªåçã«è¡ãããããããŠããããã¹ãã®å®è¡ãç°¡åãã€è¿ éã«ãªããŸããã
Reduxã¯ãŸã 銬ã«ä¹ã£ãŠããŸããïŒ MobXã䜿çšããå¿ èŠããããŸããïŒ
-redux-sagaãšãšãã«ã¢ããªã±ãŒã·ã§ã³ã§Reduxã䜿çšãããã®çµã¿åããã«éåžžã«æºè¶³ããŠããŸãã
Sagaã¯ã¢ããªã±ãŒã·ã§ã³å ã®ç¬ç«ããã¹ã¬ãããšèããããšãã§ããŸãïŒJavaScriptã¯ãã¡ããã·ã³ã°ã«ã¹ã¬ããã®ãŸãŸã§ãïŒã ãµã¬ã¯ãActionïŒ Redux Actions ïŒãéåæçã«äœ¿çšããŠã¡ã€ã³ã¹ã¬ãããšéä¿¡ããŸãã ãã¿ã³ãæŒããåŸã«äœãèµ·ãããã¯ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠéèŠã§ã¯ãªããã¢ã¯ã·ã§ã³ãèµ·åããã ãã§ãã Sagaã¹ã¬ããã¯ãã¢ã¯ã·ã§ã³ãå°çãããŸã§åŸ æ©ããäœããå®è¡ããŠãããã¢ã¯ã·ã§ã³ãéãè¿ãããšãã§ããŸãããã®å Žåãã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã¯ãã¢ã¯ã·ã§ã³ãå®è¡ãããŠããããšããŸã£ããçã£ãŠããŸããã äœè³ãã¢ã¯ã·ã§ã³ãè¿ããšããããã¯åã¬ã³ããªã³ã°ããã ãã§ãããã¯ããã ããã§ãïŒ
ããã«ãããã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãšé·æéç¶ç¶ãããã©ã³ã¶ã¯ã·ã§ã³ãéåžžã«ãããã«ãªããé©ãã»ã©éçºãæ¹åãããŸãã ã¢ããªã±ãŒã·ã§ã³å šäœãã¯ãªãŒã³ã§æ©èœãããã¹ããããããªããŸãã
-ããªããåããã®ã¯äœã§ãïŒCSSããã¹ããã¿ã€ãã³ã°ããã³ãã«-Reactã«ã¯ããããã®è§£æ±ºçããããŸãã ããã¯åé¡ã ãšæããŸããïŒ Reactã®ã¢ããªã±ãŒã·ã§ã³ã¯ãã¹ãŠãéªçã®ããã«ç°ãªããŸãããããããæšæºãå¿ èŠã§ããïŒ
-ããããæšæºãå¿ èŠã ãšã¯ãŸã£ããæããŸããã Reactã¯ãè€éãªå¯Ÿè©±åã¢ããªã±ãŒã·ã§ã³ãäœæããããã«äœ¿çšãããŸãïŒå°ãªããšããããç®çã§ãïŒã ãã®ãããªåã¢ããªã±ãŒã·ã§ã³ã¯ããã®èªç¶ãªè€éãã«ããããŸã£ããç°ãªãèŠæ±ãè¡ããŸãã
èããããããŸããŸãªè§£æ±ºçãããããã«èŠããŸãããä»æ¥ã§ã¯ãReactã³ã³ããŒãã³ãã®æ§åŒåããã¹ãããããã°ãªã©ãã¢ããªã±ãŒã·ã§ã³éçºã®äžè¬çãªã¿ã¹ã¯ã解決ããããã®ããã€ãã®æšå¥šãããé«åºŠãªã¢ãããŒããéžæã§ããŸãã
ã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã¯ãä»æ¥ã®æ¬æ Œçãªã¢ããªã±ãŒã·ã§ã³ã§ã®äœ¿çšã«ã¯å°ãæ°å³ãæªããããããŸãããããããçŸåšåãçµãã§ããReactã³ãã¥ããã£ã®è²¢ç®è ã®åªåã«ãã¹ãŠäŸåããŠããŸãã 6ãæéããŸãã¯ä»æ¥æã人æ°ã®ããææ°ã®ã©ã€ãã©ãªã®éçºã«è²¢ç®ããŠãã ããã Maxãšè©±ãããåŸãReactã®åã¯ããã©ãŒãã³ã¹ããã¿ãŒã³ã§ã¯ãªããæ°ããã¢ã€ãã¢ãåãå ¥ããWebã€ã³ã¿ãŒãã§ãŒã¹éçºãããè¯ãå¹ççã«ãããšããå ±éã®ç®æšã«ã³ãããããŠãã人ã ã®å奜çãªã³ãã¥ããã£ã«ãããšçµè«ä»ããããšãã§ããŸãã
JavaScriptã®äžçãè¿œããããããšããŠãããªãã次ã®ãããã§ãã·ã§ãã«ãªã€ãã³ãã¯HolyJS 2016ã¢ã¹ã¯ã¯ãã¯ãããžãŒäŒè°ã§ãã ãã®ã«ã³ãã¡ã¬ã³ã¹ã«ã¯ãããã³ããšã³ããããã¯ãšã³ãããã¹ã¯ããããããã«ã¯VRåãã®JavaScriptéçºã«é¢ãã20ã®è¬æŒããããŸãã