ããã³ããšã³ãã§ä»å¹Žã®çµæã®è°è«ã¯çªç¶è°è«ã®äž»é¡ã«ãªããŸãã ã ç§ã®æèŠãè¿œå ããä»ã®äººã®æèŠãèããŠããããã§ãã
çŸä»£ã®ãŠã§ãã§äœãèµ·ãã£ãŠããã®ãã話ãã®ã¯çã«ããªã£ãŠããããã«æããŸãããå€éšãšå éšããç¥èŠããããã®ã¯å®å šã«ç°ãªã£ãŠããŸãã ã¯ãããå éšãã«ã¯ããã€ãã®ã¬ãã«ããããŸãã ãåã³ã¬ã€ã¢ãŠããè€éã«ããããšããèŠæ¹ã¯ãå®å šã«æ£ãããã®ã§ããã誀ã£ãŠandèœãããã®ã§ããããæœè±¡åã®æ§ç¯ã劚ããªãããšããèŠæ¹ãå¹æããããŸããã
çŸä»£ã®ãŠã§ããè€éã«ãªããããŠãããšèª°ããäžå¹³ãèšããšãããã®çŸä»£ã®ãŠã§ãã¯åœŒããªã³ã©ã€ã³éè¡ãè³Œå ¥ãã©ãŒã ããœãŒã·ã£ã«ãããã¯ãŒã¯ã§ã®å人çãªããåããã€ã³ã¹ã¿ã³ãã¡ãã»ã³ãžã£ãŒã®ãŠã§ãçã§èªåã®ãéãä¿¡é ŒããŠããããšãæãåºããããã³ã«ãã¯ã©ãŠãå ã®å人ãã¡ã€ã«ã ãããŠããããã圌ã¯ãããã®ã·ã¹ãã ã®éçºããã»ã¹ãè€éã§ãé£ããããä¿¡é Œã§ãã倱æããªãããšãæ¬åœã«æãã§ããŸãã
çŸä»£ã®ããã³ããšã³ããšåœŒã®å人ã®äžã§ã圌ãã¯ä»ã§ã¯å€ããèŠãããããã¯ããã«å€ããç解ããŠããŸãã ãããã¯ãå€å žçãªWebãµã€ããšSPAãé»åäžã®ã¢ããªã±ãŒã·ã§ã³ãããã³CordovaãNativeScriptãReact Nativeãããã«ã¯Flutteräžã®ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã§ãã ããã¯ãCDNãå°çåæ£ãµãŒãã¹ãJSäžã®ãã£ããããããããã«ã¯æ©æ¢°åŠç¿ããŒã«ãåããè€éãªã€ã³ãã©ã¹ãã©ã¯ãã£ã§ããã ã¢ã»ã³ããªãã¬ã€ã¢ãŠãã®çæãæé©åã ãŸã ã
ãŸããWebèªäœã«ã¯ã以åã¯ãã¹ã¯ãããã¢ãŒãã§ã®ã¿åäœããå¯èœæ§ããã£ãéåžžã«è€éãªãœãªã¥ãŒã·ã§ã³ã衚瀺ãããŸãã ç§èªèº«ãæ°å¹Žåã«ãã©ãŠã¶ãŒã§æ¬æ Œçãªã²ãã ãã©ãŠã¶ãŒã®éçºã«è§ŠããŸãããããã©ãŒãã³ã¹ãš60FPSãæäŸããããšã«åŸäºããŠããŸãããããã¯ååã«å€§ããã解決å¯èœãªåé¡ã§ããã 5幎åã§ãããã²ãã ãã©ãŠã¶ã匷åãªã³ã³ãã¥ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ããããšã¯ã§ããªããšèª°ãèããããªãã£ããããå»åž«ãç 究è ã¯ã¿ãã¬ããã軜éã®ã©ãããããããã§ãã²ãã ãæäœã§ããŸããã
ãªãã§ïŒ
çŸæç¹ã§ã¯ãHTML + CSS + JSãã³ãã«ã¯ããã®æ©èœã ãã§ãªãããã®äžã«æ§ç¯ããããœãªã¥ãŒã·ã§ã³ã®æ°-CSSãã¬ãŒã ã¯ãŒã¯ãããžã¥ã¢ã«ã³ã³ããŒãã³ãã®ã©ã€ãã©ãªãèšå€§ãªæ°ã®ãµãŒãã¹ãžã®ã€ã³ã¿ãŒãã§ãŒã¹ãããã³SAASã®é¢ã§ãæã匷åãªã€ã³ã¿ãŒãã§ãŒã¹ã®1ã€ã§ãã ã æœåšçãªãªãŒãã£ãšã³ã¹ãšã¢ã¯ã»ã·ããªãã£ã®éçºæéã®å¹çãšããç¹ã§ã¯ãWebãã¯ãããžãŒã¯ã¢ãã€ã«ãœãªã¥ãŒã·ã§ã³ãšãã¹ã¯ããããœãªã¥ãŒã·ã§ã³ã®äž¡æ¹ãå åãããŠããŸãã ãããŠä»ãããã¯3ã€ã®é åã«åãããŠããŸãïŒ
- éšåçã«åçãªã³ã³ãã³ãïŒã®ã£ã©ãªãŒããããã¢ãããªã©ïŒãæã€å®å šã«éçãªãµã€ããšã»ãŒéçãªãµã€ãã®éçº
- ãµãŒããŒãã¬ãŒã ã¯ãŒã¯ïŒdjangoãrailsïŒã§ã®ãã¯ã©ã·ãã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®éçº
- Webã¯ã©ã€ã¢ã³ãéçº
ãããŠããããã¯ããããå®å šã«ç°ãªãç¹ç°æ§ãæã£ãŠããŸãã
JSã®éçºã¯æ¬åœã«èŠçã ã£ãã®ã§ããã®çã¿ã解決ãããœãªã¥ãŒã·ã§ã³ãç»å Žãå§ããŸããã
ããããèŠããšãéåžžã«èå³æ·±ãããšãããããŸãããŸããjQueryãCoffeeScriptãªã©ã®ãœãªã¥ãŒã·ã§ã³ãç»å Žãå§ããèšèªã®åé·æ§ãšåé·æ§ãäœæžãããŸããã ãããããããã¯ããã«æ¶ããŠããã代ããã«ã³ãŒããå¯èœãªéãå¹ççã«åå©çšãããšã©ãŒãéçã«æ€åºããå¹æçãªæœè±¡åãæ§ç¯ããã·ã³ãã«ã§ãã説æãããã€ã³ã¿ãŒãã§ãŒã¹ã®èåŸã«åã ã®é£æ床ããé ããããŒã«ãå°å ¥ããŸããã
GraphQLãç»å ŽããŸãããããã¯ãRESTã®èšè¿°ãææžåãããã³ä¿å®ã®è€éãã«é¢ããåé¡ã解決ããŸãã TypeScriptãšFlowãç»å Žããã¿ã€ãã³ã°äžè¶³ã®åé¡ã解決ããŸããã éåææäœãã¯ã©ã¹ãããã³ããŒã¿ã¹ããªãŒã ãå¹æçã«æäœã§ããæ°ããèšèªãšã³ãã£ãã£ãç»å ŽããŸããã WebAssemblyãç»å ŽããŸãããããã«ãããä»ã®èšèªã®ã³ãŒããåå©çšãããã°ããå®è¡ã§ããŸãã
ãããã®ãœãªã¥ãŒã·ã§ã³ã¯ãã¹ãŠåãããšãç®çãšããŠããŸããã³ãŒãã®åå©çšãšããã©ãããªãããŒã ãæ§ç¯ããå¯èœæ§ã§ãã ä»ã®äººã®ã³ãŒããååŸããŠäœ¿çšãéå§ããããã«ãåé¡ã解決ããŸãã
ããã¯ãWebã倧èŠæš¡ãªããŒã ã§ã®äœæ¥ã«åããŠçºå±ããŠããããšã瀺ãæ確ãªèšŒæ ã§ããããã¢ãã«ãããœãªã¥ãŒã·ã§ã³ã®ãã©ãããã©ãŒã ã«ãªã£ãŠããŸãã
ããã«çºçããäžé£ã®ã€ãã³ãã¯ãããã«æ確ãªèšŒæ ã«ãªããŸãããReactNativeãNativeScriptãDart + Flutterãããã³ãã€ãã£ããã©ãããã©ãŒã ã§ã³ãŒããåå©çšããããã®ä»ã®ãœãªã¥ãŒã·ã§ã³ãç»å ŽããŸããã ããã¯éåžžã«éèŠãªãã€ã³ãã§ããWebäžã§ä»ã®èšèªã䜿çšããæ©èœããªããããäŒæ¥ã¯ããã¹ãŠã®é¡§å®¢ã«æ°ããæ©èœãæäŸããããã®å°ããªéçºã³ã¹ããšæéãåæžã§ãããéã®åŒŸäžžããæ±ããŠããã»ã¹ã埮調æŽãå§ããŸããã ã©ã®ãããžã§ã¯ãã§ãè¿ éã§ããããšãéèŠã§ãããé«ã¬ãã«ã®å°é家ãJSã§å¹æçã«äœæ¥ããæ©äŒãæ±ããŠå£çµãå§ããŸããã
ã¡ãªã¿ã«ãåãçç±ã§ããã³ãã¬ãŒããšã³ãžã³ã¯éšåçã«åæ¢ãå§ããŸããïŒå¥ã®ã»ãã³ãã£ã¯ã¹ã®äœ¿çšã¯ãJSïŒAngularãVueïŒã®å°ããªæ¡åŒµåãæã€äœ¿ãæ £ããHTMLã䜿çšããããã¬ã€ã¢ãŠããèšè¿°ããããã®èšèªïŒReactãFlutterïŒã䜿çšãããããå¹æãäœãããšãå€æããŸãã æ¡åŒµã§ããªããéçºè ãæ°ããèšèªã«å°å ¥ããå¿ èŠãããããã©ãããã©ãŒã ãæ»ã¬ãªã¹ã¯ãåæ£åã«ãããHTML / DOMãã©ãããã©ãŒã ã«å¯èœãªéãè¿ã¥ããããšãããã¬ãŒã ã¯ãŒã¯ãã³ãã¬ãŒã¿ãŒã奜ãããã«ãªããŸããã
ãã ããã³ãŒããå¹ççã«èšè¿°ããããšã«å ããŠãã³ãã³ããåæããããã®ãä¿æ°ãããããŸãã ãã®èšèªã§è¶ é«éã§äœæ¥ã§ããããåæã«2人ã®éçºè éã§åã ã®æ©èœãåæããããšã²ã©ãçã¿ãçããå Žåã¯ããããã®ãŸãŸã§ããå¯ââèœæ§ãé«ãã§ãã ãããã£ãŠãå€ãã®èšèªæ©èœãšãœãªã¥ãŒã·ã§ã³ã¯ãåæã®åé¡ãšåé¡ããªãããšãæžããããšãç¹ã«ç®çãšããŠããŸãã 圌ãã¯ãã®ãä¿æ°ããæžãããŸããããã¯ãäœäººã®ãžã¥ãã¢ãåæã«ããã«ãã³ã³ãããŒã«ã§ãããããããŠäœäººã®ããã«ããªãŒãéçºè ã«ãã£ãŠã³ã³ãããŒã«ã§ãããã瀺ããŸãã ãã®ãããªæ©èœã®ææ°ã®äŸã®äžã§ães6ã€ã³ããŒãã¯åŸªç°äŸåæ§ã®åé¡ãéšåçã«è§£æ±ºããŸãããéçºè ã®èšè¿°æ¹æ³ã«é¢ä¿ãªãã ãããããã«gitã³ãŒãã§æåŸ éãã®é©åãªããŒãžãååŸã§ããŸãã ããã¯çŸããããã¹ãã§ã¯ãªããããŸãåæãããã¹ãã§ãã
ãã®çµæããããæ°å¹Žã§ããã©ãããã©ãŒã ãšããŠã®ãŠã§ãã倧äŒæ¥ãçé¢ç®ãªããŒã ã«åŒãç¶ãããããã倧å€æ°ããjavascriptç²åŽããçµéšããŸããã ã¡ãªã¿ã«ãChromiumã«ä»£è¡šããããŠã§ãäžã®Googleã®ã»ãŒç¬å ã®äž»ãªäž»åŒµã¯ããŠã§ããã©ãããã©ãŒã ãšJSã®æ©èœã«å¿ èŠãªãã®ãæŒã蟌ããããšã§ãïŒãã ããããã¯éåžžãã»ãšãã©ã®äŒæ¥ãå¿ èŠãšãããã®ãšäžèŽããŸãïŒã
ãã®çµæãäžæ¹ã§ã¯ãã©ãã§ãåå©çšã§ããã³ãŒãã®ããã®éåžžã«æ¥œãããã©ãããã©ãŒã ã倧èŠæš¡ãªãã©ããã³ãã³ãã䜿çšã§ããæ§æãåŸãããŸããã ããã...
ãã¹ãŠãè€éã«ãªãã誰ããæ··ä¹±ããŸãã
ãããŠã誰ãäœããã¹ããç解ã§ããŸããã§ããã å®éãåé¡ã¯äœã§ããïŒ ããã3ã€ã®ç°ãªãã«ããŽãªã
- éšåçã«åçãªã³ã³ãã³ããå«ãå®å šã«éçãªãµã€ããšã»ãŒéçãªãµã€ãã®éçºïŒãã®ã¿ã€ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ããšã³ããªãã€ã³ããšããŠã®HTMLãæ倧ããŠã³ããŒãé床ããªãã·ã§ã³ã®JSãç¹åŸŽã§ãã
- ãµãŒããŒãã¬ãŒã ã¯ãŒã¯ïŒdjangoãrailsïŒã§ã®ãã¯ã©ã·ãã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®éçºïŒãããã®ãœãªã¥ãŒã·ã§ã³ã¯çŸåšããšã³ããªãã€ã³ããšããŠHTMLãèªã¿èŸŒãããšãç¹åŸŽãšããŠããŸãããæ倧ããŠã³ããŒãé床ã§ã¯ãªããã³ãŒãã®åå©çšãDRYãããã¯ãšã³ãçµ±åã«çŠç¹ãåœãŠãŠããŸãã JSã³ãŒãã¯ããã¬ãŒã ã¯ãŒã¯ïŒéç¥ããã©ãŒã ãã¿ãŒããªã³ã¯ãªã©ïŒã«ãã£ãŠéšåçã«çæãããŸããéšåçã«ã¯ãèªåã§èšè¿°ããå¿ èŠããããŸã
- ã¯ã©ã€ã¢ã³ãWebã¢ããªã±ãŒã·ã§ã³ã®éçºã ããã§äºæããªãããšãèµ·ãããŸãããšã³ããªãã€ã³ãã§ã¯ãªãHTMLãã¢ããªã±ãŒã·ã§ã³ãããã§ã¹ããšã¬ã³ããªã³ã°ãã©ãããã©ãŒã ã®äž¡æ¹ã«ãªããããšã³ããªãã€ã³ãããJSã«ãªããŸãã
ãšã³ããªãã€ã³ããæå³ããããšïŒããã¯ç¹å®ã®ãšã³ãã£ãã£ã§ããããã®èªã¿èŸŒã¿ã¯è£œåãŠãŒã¶ãŒãžã®æå°é ä¿¡ã«çãããªããŸãã ãŠãŒã¶ãŒãæ å ±ã衚瀺ããå¿ èŠãããå Žåã¯ãHTML + CSSãå¿ èŠã§ããã¢ããªã±ãŒã·ã§ã³ãå®è¡ããå Žåã¯ãHTMLããå®è¡ãããJSãå¿ èŠã§ãã
ãããŠãå šå¡ãå®å šã«æ··ä¹±ãããããã«ã4çªç®ã®ã«ããŽãªãŒãç»å ŽããŸããã
ååã¢ããªã±ãŒã·ã§ã³
Webéçºã®ãå圢ããšã¯ãéåžžããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ã§æ©èœãããã®ãæå³ããŸãã ãã®ã¢ãŒãã§ã¯ãreactãangularãvue.jsã®ã¢ããªã±ãŒã·ã§ã³ãåäœããŸããããšãã°ãæ¢è£œã®ãã¬ãŒã ã¯ãŒã¯ããããŸã-NextãNuxtãªã©ã
äž¡æ¹ã®ã¿ã¹ã¯ã¯ãããã«é¢é£ããŠããŸããWebã¢ããªã±ãŒã·ã§ã³ã¯ãã§ããã ãæ©ãåæç¶æ ããŠãŒã¶ãŒã«æäŸããã¢ããªã±ãŒã·ã§ã³ãšããŠæ©èœããå¿ èŠããããŸãã ã€ãŸããHTMLãšJSã®äž¡æ¹ããã³ã³ãã³ãçšãšã¢ããªã±ãŒã·ã§ã³çšã®2ã€ã®ãšã³ããªãã€ã³ããšããŠé ä¿¡ããå¿ èŠããããŸãã ããã«ããã2ã€ã®ççŸãã段èœãäœæãããŸããäžæ¹ã§ã¯ãé ä¿¡ãããããŒã¿ã®éãæå°éã§ããå¿ èŠããããä»æ¹ã§ã¯ã³ãŒãã®åå©çšãå¿ èŠã§ãã JSã®å Žåãããã¯Webpackãã£ã³ã¯ãã³ãŒãåå²ãåçã³ãŒãã®ããŒããJSã«æ®ããããã³ãã¬ãŒãã«ãã£ãŠè§£æ±ºãããŸãããCSSã¯ãŸã æ®ã£ãŠããŸãã ãããŠæãéèŠãªã®ã¯ããŠãŒã¶ãŒã«1ãã€ãäœåã«é ä¿¡ããªãããšã§ãã ãããŠã誰ããã¢ã€ãã¢ãæãã€ããïŒãã®ãããªã¢ããªã±ãŒã·ã§ã³ã¯æ¬åœã«2ã€ã®ãšã³ããªãã€ã³ããæã£ãŠããŸãã ãããã¯ã2ã€ã®ç¬ç«ãããšã³ãã£ãã£ãšããŠåŠçã§ããŸãã
ãããããCSS-in-JSã®æŠå¿µãçãŸããŸãããéçã³ã³ãã³ãçšã®CSSãã¡ã€ã«ã®çæãšãã³ã³ããŒãã³ãã®æšªã«ããã¹ã¿ã€ã«ã®ä¿åãšãã2ã€ã®å¥åã®ããã»ã¹ã«çŠç¹ãåœãŠãŠããŸãã
JSã«æ®ããããã¹ãŠã
JSã§ã¯ãã¹ã¿ã€ã«ãã¬ã€ã¢ãŠããå®éã®ã³ãŒããèŠã€ããããšãã§ããŸãã
ä»ã§ã¯ãã¹ãŠãjsã«ãããããã¯è¯ãããšã§ã
å¥ã®äœè«ããã䟡å€ããããŸã-ä»é£æååŽã«ã
éçºäžãŸãã¯éçºäžã®è£œåãä»ã®æ¹åã«ã移åãã§ããããšãéèŠã§ãã 次ã®ããããã®ã¬ãã«ã§æ©èœããŸãã
ã³ãŒãè¡ãè¿œå ããããšã«ãããèŠèŠçãªã³ã³ããŒãã³ããæå°éã®ããžãã¯ã§ã³ã³ããŒãã³ãã«å€æããæ©èœã¯éåžžã«åªããŠããŸãã æåããæžãçŽãå¿ èŠã¯ãããŸããã
SPAãŸãã¯ãµãŒããŒåŽã®ã¢ããªã±ãŒã·ã§ã³ã«å®äŸ¡ã«å€ããããšã¯æ¬åœã«ã¯ãŒã«ã§ãããããã¯ãã£ãã«äžå¯èœã§ãã ã³ã¹ãã課ããªãã®ã§ããã°ããã®ãããªãã©ãããã©ãŒã ã§æåããå§ããæ¹ãè³¢æã§ãã
ãããã£ãŠããµãŒããŒäžã§ã¬ã³ããªã³ã°ãããå¿ èŠããããªã¹ã¯ãã€ãŸãã³ã³ããŒãã³ãããªãã¡ã¯ã¿ãªã³ã°ããå¿ èŠããããªã¹ã¯ããã³ãã¬ãŒããšã³ãžã³éã移åãããªã¹ã¯ãããWebãããžã§ã¯ãã®ã»ãšãã©ã¯ããªã¹ã¯ãåé¿ããããšããŸãã
äžéšã®ãšã³ãã£ãã£ãéåžžã«å®äŸ¡ã«ä»ã®ãšã³ãã£ãã£ã«å€ããåäžã®ãã©ãããã©ãŒã ãããå Žåãéçºã¯éåžžã«é«éã§ãã
è§åºŠ/åå¿/ãã¥ãŒã®ã¢ããªã±ãŒã·ã§ã³ã®å Žåãããã¯ãŸãã«ããã§ãã 圌ãã¯ç解ããã®ãé£ããã§ãã ãã¡ãããAngular 1ã»ã©è€éã§ã¯ãããŸãããããšã«ãã-ããããç解ããããã®éã®ãã¯é·ãã6ã¶æã®ãªã³ã©ã€ã³ã³ãŒã¹ã§ã¯ããããç解ããã®ã«ååã§ã¯ãããŸããã ãããã圌ãã¯æ°é±éåã«ããããŠæ°æ¥ã§-æ°ã¶æããã£ãŠãããã®ããæ°æéã§è¡ãæ©äŒãæäŸããŸãã
ããããéããŸãçã§ã-å€ãã®äººã¯ããããå¿ èŠãšããŸããããããã¡ãã·ã§ããã«ãã§ããããã«äœ¿çšãããŸãã
Webããã³ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã°ã«ãŒãã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã¢ãŒããã¯ããšã¬ã€ã¢ãŠããã¶ã€ããŒã話ããŠãããšãã圌ãã«ãšã£ãŠã¯å€§å€ãªããšã§ãã çŸåšããããã¯éåžžã«ç°ãªãæ¹åã§ãããããJSãé€ããç¥èã«å ±ééšåã¯ãããŸããã
次ã«ãWebã¯éåžžã«è€éã«ãªããè¥å€§åããããšèšããããšãã¯ãGoogleã®åä¿¡ãã¬ã€ã¡ãŒã«ã¯ã©ã€ã¢ã³ãïŒã¬ã¿ãŒã«å¿ããŠå«ãŸããã€ã³ããªãžã§ã³ããšã³ãã£ãã£ãå«ãïŒãCloud9ãã€ã³ã¿ãŒããããã³ãã³ã°ãªã©ã®Web IDEã®èšèšãšäœæãã©ãã»ã©é£ããããèããŠãã ããã
ããããã³ãŒããŒãããªãã®ãšããã«æ¥ãŠã圌ãåå¿ããå¿ èŠããããšããäºå®ã«ã€ããŠè©±ãå§ãããã圌ã¯ã©ã³ãã£ã³ã°ããŒãžã®ã¬ã€ã¢ãŠãã«å³å¯ãªã¿ã€ãã³ã°ãšãã³ã¬ãŒã¿ãŒãå¿ èŠãªã®ã§ã説åŸã«å±ããªãã§ãã ããã