
ãã®æçš¿ã§ã¯ãé¢é£ãããããã¡ã€ã«ã®ããã°ã©ããŒãç¥ã£ãŠããã¹ãWebéçºã®ããŸããŸãªåŽé¢ã«ã€ããŠèª¬æããŸããå¯èœã§ããã°ã察å¿ããæ©èœã®äœ¿çšäŸãšãã®æ£ãã䜿çšã«é¢ããæšå¥šäºé ã瀺ãè³æãžã®ãªã³ã¯ãæäŸããŸããããã§ã¯ãAngularãReactãVueã§ã®ç¹å®ã®ã¡ã«ããºã ã®å®è£ ã«çŠç¹ãåœãŠãŸãã
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹
âããŒãžã¬ã€ã¢ãŠã
Webã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã¯ããŠãŒã¶ãŒã«ã¢ããŒã«ãããµã€ãã§å€ãã®æéãéããã®ã«åœ¹ç«ã€é åçã§ãã¡ããšããã¬ã€ã¢ãŠããèšèšããããšããå§ãŸããŸãã
ããã«ã¯å€ãã®CSSãã¬ãŒã ã¯ãŒã¯ããããŸãããããããããã®äžã§ããªãã¯ããªãã«ãŽã£ããã®ãã®ãèŠã€ããã§ãããããããã®äžã§æãæåãªã®ã¯Bootstrapã§ãããCSSããªããã»ããµã®æ°æ©èœã®ãããã§ããã®ãã¬ãŒã ã¯ãŒã¯ã®ã¹ã¿ã€ã«ãå€§å¹ ã«ã«ã¹ã¿ãã€ãºã§ããŸããããã«ã¯ããŸããŸãªã³ã³ããŒãã³ããšã³ã³ãããŒã«ããããããããäžè²«ããŠäœ¿çšããããšã§ãäžè²«ããŠèšèšããããµã€ããäœæã§ããŸããBootstrapã®ããŒãžã§ã³5
ã®ã¢ã«ãã¡ãªãªãŒã¹ã¯çŸåšãªãªãŒã¹ãããŠããŸãã
ãããžã§ã¯ãã®ã¹ã¿ã€ã«ã»ããïŒã³ã³ããŒãã³ããããã£ã³ã°ãã³ã³ãããªã©ïŒãèªåã§äœæãããå Žåã¯ãCSS Flexboxã«æ³šæãåããŠããã®WebããŒãžèŠçŽ ã®æè»ãªã¬ã€ã¢ãŠããç¬èªã®CSSãã¬ãŒã ã¯ãŒã¯ã®åºç€ã«ããããšãã§ããŸãã
CSSã°ãªããã¯ãWebããŒãžã®ã³ã³ãã³ããã°ãªããã«é 眮ããããšã«ãããã³ã³ãã³ããæŽçããããã®ç°ãªãã¢ãããŒããæ¡çšããŠããŸãã
âå¿çæ§ã®é«ããã¶ã€ã³
å¿çæ§ãšã¯ããµã€ãã®ã³ã³ãã³ãããããã衚瀺ãããŠããããã€ã¹ã«é©åãããèœåã§ããããšãã°ãã¹ããŒããã©ã³ãšã©ãããããã§ã¯ããã®èšäºã®èŠãç®ã¯ç°ãªããŸãã
Webã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ã«ãããããŸããŸãªç»é¢ã«æ£ãã衚瀺ãããã³ã³ãã³ãã®èªã¿ããããšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããŸãã
ã§MDNããªããïŒäŸãã°ãããªã³ã¿ãã¢ãã¿ã®ããã«ïŒç°ãªãããã€ã¹çšã«ç°ãªãCSSã¹ã¿ã€ã«ãé©çšããå¿ èŠãããå Žåã«ãã¡ãã£ã¢ã¯ãšãªã䜿çšãããŠããããšãç¥ãããšãã§ããåæ§ã«ïŒäŸãã°ãç°ãªãç»é¢è§£å床ã®ã¢ã«ãŠã³ãåºæã®ç¹æ§ãããã€ã¹ã®ãã©ã¡ãŒã¿ãèæ ®ããŠãããã©ãŠã¶ãã¥ãŒããŒãã®å¹ ãç°ãªãå ŽåïŒã
CSSã¡ãã£ã¢ã¯ãšãªã¯ãã¬ã¹ãã³ã·ããã¶ã€ã³ããµããŒãããããã®åŒ·åãªããŒã«ã§ãã
ãããã¯ããã§ã«èª¬æããCSSFlexboxãŸãã¯CSSã°ãªãããšçµã¿åãããŠäœ¿çšââã§ããŸããCSSãã¬ãŒã ã¯ãŒã¯ã䜿çšãããå Žåããããã®ãã¬ãŒã ã¯ãŒã¯ã¯éåžžã察å¿ããæ©èœããã§ã«å®è£ ããŠããŸãããã®ã¢ãããŒãã§ã¯ãå¿çæ§ã®é«ãããŒãžãäœæããã«ã¯ãé©åãªã¯ã©ã¹ãèŠçŽ ã«è¿œå ããã ãã§ããç»åã«
é©çšãããå¿çæ§ã®æŠå¿µã«é¢ããŠã¯ã屿§ãèããããšãã§ããŸãããã®å±æ§ã䜿çšãããšãããã€ã¹ã®ç»é¢ã®ç¹æ§ã«å¿ããŠããŸããŸãªãµã€ãºã®ç»åã衚瀺ã§ããããããµãŒããŒãããã©ãŠã¶ãŒã«è»¢éãããããŒã¿ã®éãæžããããšãã§ããŸãã
srcset
âåçš®ã®ã³ã³ããŒãã³ããšã³ã³ãããŒã«
ãŠãŒã¶ãŒã¯ãã³ã³ããŒãã³ããšã³ã³ãããŒã«ãåãã¹ã¿ã€ã«ã§åäžã«èšèšãããŠãããµã€ããåãã§æäœã§ããŸãããã®èšèšã¢ãããŒãã«ããããŠãŒã¶ãŒã¯ãµã€ãã®æ°æ©èœãç°¡åã«ç¿åŸã§ããäŒç€Ÿã®ååºã®ãããªãã®ãšããŠæ©èœããŸãã
æ¢åã®ãã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãªãAngularãReactããŸãã¯Vueã䜿çšããŠãããžã§ã¯ããéçºããå Žåã¯ããããã®ããŒã«çšã«èšèšããããããªã¢ã«ãã¶ã€ã³ã®ååãå®è£ ããã¹ã¿ã€ã«ã©ã€ãã©ãªã®äŸã次ã«ç€ºããŸãã
- è§åŒµã£ãã匷åãªã³ã³ããŒãã³ããšå®å šãªCDKãèŠã€ããããšãã§ããAngularMaterialã©ã€ãã©ãªã
- åå¿ããããããªã¢ã«ãã¶ã€ã³ã®ååã¯ããããªã¢ã«UIWebã³ã³ããŒãã³ãã«å®è£ ãããŠããŸãã
- Vueãããã«ãVueãããžã§ã¯ãã®ãããªã¢ã«ãã¶ã€ã³å®è£ ã§ããVuetifyããããŸãã
âãã©ãŒã ã®æ€èšŒãšãšã©ãŒåŠç
ããŒã¿æ€èšŒã¯ããŠãŒã¶ãŒããäœããåãåããããžã§ã¯ãã«ãšã£ãŠæãéèŠãªã¿ã¹ã¯ã§ããããã«ãã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒããæ£ããããŒã¿ãåä¿¡ããããšã劚ãããã®ã¯äœããããŸããããããã¯ãŒã¯ã®åé¡ããµãŒããŒäžã®ãšã©ãŒããŠãŒã¶ãŒèªèº«ã«ãããšã©ãŒã®ãããã§ããããŸãããããŸããŸãªãã¬ãŒã ã¯ãŒã¯çšã«æ§ç¯ããããŠãŒã¶ãŒå ¥åæ€èšŒãœãªã¥ãŒã·ã§ã³ã®äžéšã次ã«ç€ºããŸãã
- è§åŒµã£ããAngularã¯æ¬æ Œçãªãã¬ãŒã ã¯ãŒã¯ã§ããããããã©ãŒã æ€èšŒçšã®ç¹å¥ãªAPIãæäŸããŸãã
- åå¿ãããReact Hook Formã©ã€ãã©ãªã¯ãããããReactãããžã§ã¯ãã§æãäžè¬çã«äœ¿çšããããã©ãŒã æ€èšŒããŒã«ã§ãã
- VueãVueã«å¯Ÿå¿ããã©ã€ãã©ãªã®ååã§ããvuelidateã¯ãè峿·±ããã³ã«åºã¥ããŠããŸãã
ãŠãŒã¶ãŒäœéš
âéåæã¡ã«ããºã ã®äœ¿çš
ã¢ããªã±ãŒã·ã§ã³ãžã®ããŒã¿ã®ããŒããŸãã¯ããŒã¿ã®ä¿åã«ã¯ãæ°ããªç§ãæ°ç§ãããã«ã¯æ°åãããå ŽåããããŸãããã®ãããé©åãªã€ã³ãžã±ãŒã¿ãŒã䜿çšããŠãã®ãããªæäœã«ã€ããŠãŠãŒã¶ãŒã«éç¥ãããããžã§ã¯ãã§ã®ãŠãŒã¶ãŒã®äœæ¥ããããã¯ããªãããšãéèŠã§ãã
promiseã®ãããªJavaScriptãšã³ãžã³ãFetchã®ãããªãã©ãŠã¶ãŒAPIã¯ããããã®ã¿ã¹ã¯ã«åœ¹ç«ã¡ãŸãã
âå€ããã©ãŠã¶ïŒããªãã£ã«ïŒã®ãµããŒã
ããã³ããšã³ãéçºã®äžçã¯éåžžã«æ¥éã«é²åããŠããŸãããã©ãŠã¶ãŒã«ã€ããŠãåãããšãèšããŸããããããããŸããŸãªäººã ãããŸããŸãªãã©ãŠã¶ãšãããã®ããŸããŸãªããŒãžã§ã³ã䜿çšããŠããŸãããããã£ãŠã䜿çšãããã¹ãŠã®ãã©ãããã©ãŒã ã§ã³ãŒããæ£ããæ©èœããããã«ããã«ã¯ãéçºè ã¯äºææ§ã«æ³šæããå¿ èŠããããŸããããšãã°ãå€ãããŒãžã§ã³ã®IEã¯ãææ°ããŒãžã§ã³ã®GoogleChromeãšåãJSããã³CSSæ©èœããµããŒãããŠããŸãããããªãã£ã«
ã¯ããããžã§ã¯ããå€ããã©ãŠã¶ã§æ£ããæ©èœããããšãä¿èšŒããããã«äœ¿çšãããŸãããããã«ã€ããŠã¯ããã®èšäºã§è©³ãã説æããŠããŸãããããªãã£ã«ïŒããªãã£ã©ãŒïŒã¯ãéçºè ãæšæºã®ãã©ãŠã¶ãŒæ©èœã®äžã§èŠã€ããããšãæåŸ ãããã¯ãããžãŒã®å®è£ ãæäŸããã³ãŒãïŒãŸãã¯ãã©ã°ã€ã³ïŒã§ããã
ç¹å®ã®CSSã«ãŒã«ãŸãã¯ç¹å®ã®JSæ©èœãç¹å®ã®ãã©ãŠã¶ããŒãžã§ã³ã§ãµããŒããããŠãããã©ããã確èªããã«ã¯ãCan IUseãµã€ããåç §ããŠãã ããã
AngularãReactãVueã§ã®ãã©ãŠã¶ãµããŒãã®åé¡ã®è§£æ±ºã«ã€ããŠè©±ããšãç¶æ³ã¯æ¬¡ã®ããã«ãªããŸãã
- è§åŒµã£ããAngularã®ããã¥ã¡ã³ãã«ã¯ããã©ãŠã¶ããµããŒãããããã®ç¹å¥ãªã»ã¯ã·ã§ã³ããããŸãã
- åå¿ãããCreate React Appã§äœæããããããžã§ã¯ãã¯ãReactDOMã®ããã«ãIE 9以éã®ãã©ãŠã¶ãŒããµããŒãããŸãããã®ãµããŒãã¯ãããªãã£ã«ã®äœ¿çšã«åºã¥ããŠããŸãã
- Vueãããã§ã¯ãã¬ã¬ã·ãŒãã©ãŠã¶ã®ãµããŒãã®è©³çްãCLIããã¥ã¡ã³ãã«èšèŒãããŠããŸãã
âããŒã«ãªãŒãŒã·ã§ã³ãšåœéå
ãµã€ãã«ã¯ãäžçäžã®ãŠãŒã¶ãŒãå«ããããšãã§ããŸãããããžã§ã¯ããäœæãããšãã«ãã®äºå®ãèæ ®ã«å ¥ãããšããµã€ããèŠãããšã«ãããã¹ãŠã®äººã«ãšã£ãŠãµã€ãã®äœ¿ãããããåäžããŸãã
ããŒã«ãªãŒãŒã·ã§ã³ïŒl10nãããŒã«ãªãŒãŒã·ã§ã³ïŒã¯ãW3Cã§å®çŸ©ãããŠããããã«ã補åãããã°ã©ã ããŸãã¯ããã¥ã¡ã³ãã®ã³ã³ãã³ãããç¹å®ã®ã¿ãŒã²ããåžå Žã®èšèªãæåãããã³ãã®ä»ã®èŠä»¶ã«é©åãããããšã§ãã
åœéåïŒi18nãåœéåïŒã¯ãW3Cè³æã«åºã¥ããŠãæåãå°åããŸãã¯èšèªãç°ãªãã¿ãŒã²ããåžå Žã«ç°¡åã«ããŒã«ã©ã€ãºã§ãã補åã³ã³ãã³ããããã°ã©ã ããŸãã¯ããã¥ã¡ã³ãã®äœæãšéçºã§ãã
ãããã®æŠå¿µã¯äž¡æ¹ãšãçžäºã«é¢é£ããŠãããããŸããŸãªæ¹æ³ã§å®è£ ã§ããŸããããã«ã¯ãããšãã°ãæ¬¡ã®ææ³ãå«ãŸããŸãã
- ãããžã§ã¯ãã§ãµããŒããããŠããèšèªã®ãªã¹ããå«ããµã€ãã®ããããããŠã³ãªã¹ãã䜿çšããã
- ïŒGeolocation browser APIã䜿çšããŠïŒãŠãŒã¶ãŒã®å°ççäœçœ®ã«é¢ããæ å ±ã«ã¢ã¯ã»ã¹ããåä¿¡ããããŒã¿ã«åŸã£ãŠWebãµã€ããé©åãããŸãã
- URLã«èšèªæ
å ±ãæå®ãããããšãã°ã次ã®ããã«ãªããŸãã
example.com?lang=enãŸãã¯æ¬¡ã®ããã«ãªããŸããexample.com/enãŸãã¯æ¬¡ã®ããã«ãªããŸãen.example.comã
次ã«ãAngularãReactãVueã®ãããã®æŠå¿µã«ã€ããŠèª¬æããŸãã
- è§åŒµã£ããAngularããŸããæ¬æ Œçãªãã¬ãŒã ã¯ãŒã¯ã§ãããéçºè ã«æ¢è£œã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã
- åå¿ããããããžã§ã¯ãã®åœéåã¿ã¹ã¯ã¯ãReactç°å¢ã§äººæ°ã®ããreact-i18nextã©ã€ãã©ãªã䜿çšããŠè§£æ±ºã§ããŸãã
- Vue. vue-i18n.
â
ã¢ã¯ã»ã·ããªãã£ïŒa11yãã¢ã¯ã»ã·ããªãã£ïŒã¯ãé害ãæã€ãŠãŒã¶ãŒã®ããŒãºã«é©å¿ãããµã€ãã®æ©èœã§ãã
ãŠã§ããµã€ãã®ã¢ã¯ã»ã·ããªãã£ã¯èŠéããããã¡ã§ããé害ã®ãããŠãŒã¶ãŒããããžã§ã¯ãã«ã¢ã¯ã»ã¹ã§ããããã«ããããã«ããããžã§ã¯ãã§äœ¿çšããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åœ¢æãžã®ã¢ãããŒããä¿®æ£ããå¿ èŠãããå Žåãããããããžã§ã¯ãã®å€§å¹ ãªåèšèšãå¿ èŠã«ãªãå ŽåããããŸãããããã«ããããã¹ãŠã®ãŠãŒã¶ãŒã®ããŒãºãèæ ®ããããšãéèŠã§ããç¹ã«ããããžã§ã¯ãã³ãŒããå°ã倿Žããã ãã§ããéåžžã®ãµã€ãã䜿çšããã®ãé£ãããšæãããŠãŒã¶ãŒã«ãšã£ãŠããµã€ãã®äœ¿ãããããå€§å¹ ã«åäžããå¯èœæ§ãããããšãèæ ®ãããšéèŠã§ãã
Webãããžã§ã¯ããã¢ã¯ã»ã¹å¯èœã«ããããã«ãããŸããŸãªææ³ãé©çšã§ããŸãããããã«ã¯æ¬¡ã®ãã®ãå«ãŸããŸãã
- image屿§ã䜿çšããŸã
altã - ãµã€ãã®ããŒãžã®ã³ã³ãã³ãã®èª¬æãèšèšããããã®ARIA屿§ã®é©çš
- ããã¹ãã®ãµã€ãºã倿Žããæ©èœã®ãµããŒãã
- ãã€ã³ã³ãã©ã¹ãã¢ãŒãããå©çšããã ããŸãã
- ããŒããŒããç¹ã«ããŒ
TABãšç¢å°ããŒã䜿çšãããµã€ãããã²ãŒã·ã§ã³ã®ãµããŒãã
a11yproject.com ãããžã§ã¯ãã¯ããããã®æŠå¿µãæšæºåãããšããã¢ã€ãã¢ãå®è£ ããŠããŸãããã®ã€ãã·ã¢ããã¯å°æ¬ã«å€ããŸãïŒäž»èŠãªJSãã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãªããã¢ã¯ã»ã¹å¯èœãªãµã€ãã®éçºããµããŒãããããã«åªåããŠããŸãã
- è§åŒµã£ãããã®ãã¬ãŒã ã¯ãŒã¯ã®ããã¥ã¡ã³ãã«ã¯ç¹å¥ãªã»ã¯ã·ã§ã³ããããŸããã¢ã¯ã»ã¹å¯èœãªãããžã§ã¯ãã®éçºã¯ãAngularCDKã¬ãã«ã§ãµããŒããããŠããŸãã
- åå¿ãããã¢ã¯ã»ã·ããªãã£ã«ã€ããŠã¯ãReactã©ã€ãã©ãªã®ããã¥ã¡ã³ãã§ã説æãããŠããŸããç¹å¥ãªã©ã€ãã©ãª-react-a11yããããŸãããã ãããã®ã©ã€ãã©ãªã¯ãµããŒããããªããªã£ããããæ³šæããŠäœ¿çšããreact-axã©ã€ãã©ãªã«çœ®ãæããäºå®ã§ããããšã«æ³šæããŠãã ããã
- Vueãvue-a11yãã©ã°ã€ã³ã¯ãVueã§ã¢ã¯ã»ã¹å¯èœãªãããžã§ã¯ããéçºããã®ã«åœ¹ç«ã¡ãŸããvuetifyã©ã€ãã©ãªãäœæããéã«ã¯ãã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé ãèæ ®ãããŸããã
âéç¥
ãµã€ãã®èšªåè ãšé£çµ¡ãåãåãããã«ããã©ãŠã¶ã®APIéç¥ã䜿çšã§ããŸãããã®å©ããåããŠãããªãã¯äœãæ°ãããã®ããµã€ãã«çŸããããšããŠãŒã¶ãŒã«ç¥ãããããšãã§ããŸãã
ããŒã¿ã®ããŒããšåŠç
âä¿¡é Œã§ããããŒã¿ã®åäžã®ãœãŒã¹
2015幎ã«äººæ°ãåããã¢ããªã®ç¶æ 管çããŒã«ã¯ãä»ã§ã¯ã»ãšãã©ãã¹ãŠã®Webãããžã§ã¯ãã«ãªããŠã¯ãªããªããã®ã§ããã¢ããªã±ãŒã·ã§ã³ã®ç¶æ 管çã®åéã§ã¯å€å°ã®æ··ä¹±ããããŸãããéåžžãç¹æ®ãªãœãªã¥ãŒã·ã§ã³ã䜿çšããããšã¯ãã¢ããªã±ãŒã·ã§ã³ããŒã¿ãäžå åããããã®ã·ã³ãã«ã§å¹æçãªæ¹æ³ã§ãããã¹ãŠã®ç¶æ 管çããŒã«ã¯ããã©ãã¯ã¹ãã¿ãŒã³ã«åºã¥ããŠããŸãã

Fluxãã¿ãŒã³ã®NgRxå®è£ ïŒãœãŒã¹--ngrx.ioïŒ
ãããã®ããŒã«ã¯ãåããšã³ãã£ãã£ã«ç°ãªãååã䜿çšããŸããããšãã°ãNgRxãã»ã¬ã¯ã¿ãŒãšåŒã¶ãã®ã¯ãVuexã§ã¯ã²ãã¿ãŒãšåŒã°ããŸããAngularãã¬ãã¥ãŒãµãŒãšåŒã¶ãã®ã¯ãVueã§ã¯ãã¥ãŒããŒã·ã§ã³ãšåŒã°ããŸãã
AngularãReactãVueã§äœ¿çšãããç¶æ 管çããŒã«ã¯æ¬¡ã®ãšããã§ãã
- è§åŒµã£ãããAngularã®ãªã¢ã¯ãã£ãç¶æ 管çãïŒNgRxã
- åå¿ãããããã§ã¯ããã¡ãããReduxã䜿çšãããŸãã
- VueãVuexã¯ãVueã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ã管çããããã«äœ¿çšãããŸãã
âããŒã¿ã®ããŠã³ããŒã
ããŒã¿ãã¢ããªã±ãŒã·ã§ã³ã«ããŒãããã«ã¯ãããŸããŸãªæ¹æ³ããããŸãããããã®äžã§æãäžè¬çãªã®ã¯ãWebAPIã«åããããHTTPèŠæ±ã®äœ¿çšã§ãããã©ãŠã¶ã«ã¯ãããŒã¿ã®èªã¿èŸŒã¿ãæŽçããããã«èšèšãããFetch APIããããŸãããäž»èŠãªãã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãªçšã«ãç¬èªã®ãœãªã¥ãŒã·ã§ã³ãéçºãããŠããŸãã
- è§åŒµã£ããAngularã®ããã¥ã¡ã³ãã§ã¯ãrxjsãšãªãã¶ãŒããŒããŒã¹ã®ã¢ãããŒãã®äœ¿çšãæšå¥šããŠããŸãïŒããã§ã¯ãªãã¶ãŒããã«ãŸãã¯ãµããžã§ã¯ãã䜿çšãããŸãïŒã
- åå¿ãããReactã®ããã¥ã¡ã³ãã§ã¯ãFetchAPIã䜿çšããŠããŒã¿ãããŒãããããšãæšå¥šããŠããŸãã
- VueãVueã³ãã¥ããã£ã¯ãAxiosã©ã€ãã©ãªã®äœ¿çšã奜ã¿ãŸããããŒã¿èªã¿èŸŒã¿ã¡ã«ããºã ã®ãã®å®è£ ã¯ãpromiseã«åºã¥ããŠããŸãã
Webã¢ããªã±ãŒã·ã§ã³ã«ããŒã¿ãããŒãããã¡ã«ããºã ã«ã€ããŠè©±ããšããGraphQLã¯èšåãã䟡å€ããããŸãããã®ãã¯ãããžãŒã«ãããããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã§ããŒã¿ãããŒããããšãã«äœ¿çšãããã¢ãããŒããå€ãããŸããããããé©çšãããšãããã¯ã©ã€ã¢ã³ãã¯ã¯ãšãªèšèªã䜿çšããŠå¿ èŠãªãã®ã決å®ããŸãããGraphQLã䜿çšãããšããªã¢ãŒãããŒã¿ãœãŒã¹ããå¿ èŠãªãã®ãæ£ç¢ºã«ååŸã§ããŸãã
é¢å¿ã®ããããã³ããšã³ãããŒã«ã®GraphQLå®è£ ã¯æ¬¡ã®ãšããã§ãã
- è§åŒµã£ããã¢ããã¢ã³ã®ã¥ã©ãŒ
- åå¿ãããåå¿-ã¢ãã
- Vue.jsãvue-apollo
âããŒã«ã«ããŒã¿ã¹ãã¬ãŒãž
ããŒã«ã«ããŒã¿ã¹ãã¬ãŒãžã¯ããŠãŒã¶ãŒã®ã³ã³ãã¥ãŒã¿ãŒäžã®ããŒã¿ã®ã¹ãã¬ãŒãžã§ããããŒã¿ã¯ãcookieã䜿çšããã ãã§ãªããlocalStorageããã³ã䜿çšããŠä¿åã§ããŸã
sessionStorageã
âãŠã§ãã¯ãŒã«ãŒ
Webã¯ãŒã«ãŒã¯ãæ°ãããã©ãŠã¶ãŒAPIã«ãã£ãŠå°å ¥ããããã¯ãããžãŒã§ããããã«ãããJavaScriptã³ãŒããããã¯ã°ã©ãŠã³ãã§å®è¡ã§ãããããã¡ã€ã³ã¹ã¬ããã®è² è·ã軜æžãããWebããŒãžã³ãŒãã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããããšã¯ãããŸããã
Webã¯ãŒã«ãŒã¯ãAngularãReactãããã³Vueã«é©çšã§ããŸãã
- è§åŒµã£ãããã®ãããã¯ã®Angularããã¥ã¡ã³ãã«ã¯ç¹å¥ãªã»ã¯ã·ã§ã³ããããŸãã
- åå¿ãããããã«ããç¹å¥ãªReactããã¯ããããŸãã
- VueãVueã¢ããªã±ãŒã·ã§ã³ã§ã¯ãWebã¯ãŒã«ãŒã¯vue-workerã©ã€ãã©ãªã䜿çšãããšäŸ¿å©ã§ãã
ãããã¯ãŒãã³ã°ãšããã©ãŒãã³ã¹
âã¢ããªãã³ãã«ãµã€ãº
ã¹ããŒããã©ã³åžå Žã®æé·ã¯ãWebéçºã®äžçã«é©åœããããããŸãããããŠããŠã§ããµã€ããäœæãããšãã¯ããŸãã¢ãã€ã«ãŠãŒã¶ãŒã®ããŒãºãèæ ®ããå¿ èŠããããŸããWebãããžã§ã¯ãã§äœæ¥ãããšãã«ãã¢ãã€ã«ããã€ã¹ãããŒãããå¿ èŠã®ããããŒã¿ã®éãå°ãªãã»ã©è¯ãã§ããäžã®ã°ã©ãã«ãããšã2016幎ã«ã¯ãã¢ãã€ã«ã€ã³ã¿ãŒãããã®äœ¿çšéããã¹ã¯ãããã®äœ¿çšéãäžåããŸããã

äžççãªã€ã³ã¿ãŒãããã®äœ¿çšïŒåºå ž-broadbandsearch.netïŒ
ããã¯ãæè¿ã®Webãããžã§ã¯ãã®ãã³ãã«ãµã€ãºãã©ãã»ã©éèŠã§ããããäžç¢ºããªèšèã§æããŠãããŸããã¢ãã€ã«ãŠãŒã¶ãŒã®ãªãœãŒã¹ãç¯çŽããããã«ãããŠã³ããŒããããã¡ã€ã«ã®ãµã€ãºã¯ã§ããã ãå°ããããå¿ èŠããããŸããç§ãã¡ã«ãšã£ãŠå¹žããªããšã«ãã¡ã€ã³ã®ããã³ããšã³ãããŒã«ãšããããžã®ã¢ããªã³ã®éçºè ã¯ããããžã§ã¯ããéçºãããšãã«ãããèæ ®ã«å ¥ããŠããŸããã¢ããªã±ãŒã·ã§ã³ãã³ãã«ã®ãµã€ãºãå°ãããããšãããã©ãŒãã³ã¹ãåäžããŸãã
- è§åŒµã£ããAngularã¢ããªãã³ãã«ã¯ãwebpack-bundle-analyzerã§ç°¡åãã€äŸ¿å©ã«èª¿ã¹ãããšãã§ããŸããããã«ãAngular CLIã«ã¯
stats-jsonããã³ãã«ã®äœæåŸã«ã¬ããŒããçæã§ãããªãã·ã§ã³ããããŸãã - React. Create React App , .
- Vue. Vue, Angular,
report, .
â- -
Service Workerã¯ãWebãã©ãŠã¶ãŒã§å®è¡ãããã¢ããªã±ãŒã·ã§ã³ããŒã¿ã®ãã£ãã·ã¥ã管çããã¹ã¯ãªããã§ããããã¯ãéåžžã®Webãµã€ããããã°ã¬ãã·ãWebã¢ããªã±ãŒã·ã§ã³ïŒPWAïŒã«å€æããããã«äœ¿çšãããã¡ã«ããºã ã®1ã€ã§ããHTTPSã䜿çšããŠéåžžã®Webãµã€ãã®ããã«PWAãæäœã§ããŸãããããã°ã¬ãã·ãWebã¢ããªã«ã¯ããã€ãã®ç¹å¥ãªæ©èœããããŸãããã®ãããªæ©èœã«ã¯ãããšãã°ãå°éã®ã¢ããªã±ãŒã·ã§ã³ã¹ãã¢ã«å ¬éããã«ã¢ãã€ã«ããã€ã¹ã«ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããããã€ã³ã¿ãŒãããã«ã¢ã¯ã»ã¹ããã«ã¢ããªã±ãŒã·ã§ã³ããµããŒããããããããšãå«ãŸããŸãã
AngularãReactãVueã§ãµãŒãã¹ã¯ãŒã«ãŒã䜿çšã§ããŸãã
- è§åŒµã£ããAngularã¯ããµãŒãã¹ã¯ãŒã«ãŒã䜿çšããããã®ã¡ã«ããºã ãæäŸããŸãã
- åå¿ãããããã¯ãCreate ReactAppã䜿çšããŠPWAãéçºããæ¹æ³ã«é¢ãããã¥ãŒããªã¢ã«ã§ãã
- VueãVueã§PWAãäœæããæ©èœã¯ãCLIã¬ãã«ã§ãµããŒããããŠããŸãã
âãµãŒããŒã¬ã³ããªã³ã°
ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒã¯ãAngularãReactãVueã«åºã¥ãã¢ããªã±ãŒã·ã§ã³ã®éçºã«é©åœããããããŠããäžé£ã®ãã¯ãããžãŒã§ããSSRã䜿çšãããšãHTMLããµãŒããŒäžã§çæããããã©ãŠã¶ãŒã«éä¿¡ãããŸãããã®åŸãéçHTMLããŒã¯ã¢ãããåäœç¶æ ã«ãªããWebã¢ããªã±ãŒã·ã§ã³ã¯ã¯ã©ã€ã¢ã³ãã§å®å šã«äœ¿çšã§ããããã«ãªããŸãããµãŒããŒã¬ã³ããªã³ã°ã䜿çšããå Žåãããã€ãã®ç®æšããããŸãã
- SEOãµã€ãã®æ¹åã
- ãã©ãŠã¶ã§ã®ãµã€ãã®è¡šç€ºã®é«éåã
調æ»äžã®ããã³ããšã³ãããŒã«ã®SSRãœãªã¥ãŒã·ã§ã³ã¯æ¬¡ã®ãšããã§ãã
- è§åŒµã£ããAngularUniversalã䜿çšããŸããã
- åå¿ãããReactã¢ããªã±ãŒã·ã§ã³ã®ãµãŒããŒåŽã¬ã³ããªã³ã°ã«ã¯ãNext.jsã䜿çšãããŸãã
- VueãVueã¢ããªã±ãŒã·ã§ã³ã®ãµãŒããŒåŽã¬ã³ããªã³ã°ã¯ãNuxtJSãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠå®è¡ãããŸãã
âéçãµã€ããžã§ãã¬ãŒã¿
Jamstack㮠䜿çšãå¢ããã«ã€ããStatic Site GeneratorïŒSSGïŒã¯éåžžã«äººæ°ã®ãããã¯ãããžãŒã«ãªããŸãããJamstackã¢ããªã±ãŒã·ã§ã³ã¯ããã©ãŠã¶ã«å¯Ÿå¿ããåºæ¬çã«WebãµãŒããŒãå¿ èŠãšããªãã¿ã€ãã®Webã¢ããªã±ãŒã·ã§ã³ã§ãïŒãããã®è³æã¯ãCDNããçŽæ¥ã¯ã©ã€ã¢ã³ãã«æäŸã§ããŸãïŒããã®ãããªãµã€ãã®è©³çްã«ã€ããŠã¯ãäžèšã®ãªã³ã¯ããã©ã£ãŠãã ãããããã§ã¯ãSSGã®äž»ãªé·æã®ã¿ã瀺ããŸãã
- é床ïŒéçãµã€ããžã§ãã¬ãŒã¿ãŒã¯ããããžã§ã¯ãã®ãã«ãäžã«ãµã€ãããŒãžãäœæããŸããããããã®ããŒãžãã¯ã©ã€ã¢ã³ãããèŠæ±ããããšãã§ã¯ãããŸããã
- ã»ãã¥ãªãã£ïŒSSGã䜿çšãããšãããã«ãŒæ»æã®æšçãšãªãããšãå€ãã³ã³ãã³ã管çã·ã¹ãã ïŒCMSãã³ã³ãã³ã管çã·ã¹ãã ïŒãæŸæ£ã§ããŸãã
- ã¹ã±ãŒãªã³ã°ã®ç°¡çŽ åïŒSSGã䜿çšããWebãããžã§ã¯ãã¯ãã©ãããã§ãã¯ã©ã€ã¢ã³ãã«è»¢éã§ãããã¡ã€ã«ã®ã³ã¬ã¯ã·ã§ã³ã§ããããã«ããããã®ãããªãã¡ã€ã«ãCDNã«ä¿åããã®ãã¯ããã«ç°¡åã«ãªããŸãããã®çµæãéçãµã€ãã¯éåžžã«é©åã«ã¹ã±ãŒãªã³ã°ãããããšãããããŸããã
- éçºããã»ã¹ã®ç°¡çŽ åïŒSSGãããžã§ã¯ãã¯ããã¯ãšã³ããšããŒã¿ããŒã¹ãå¿ èŠãšããŸãããããã«ãããéçºè ã¯ç°¡åã«ãªããŸãã
AngularãReactãVueçšã®SSGãœãªã¥ãŒã·ã§ã³ããããŸãã
- è§åŒµã£ããã¹ã«ãªãŒã
- åå¿ãããGatsbyïŒReact GraphQL +ïŒãNext.jsã
- VueãGridsomeãNuxtã
ãã®ä»ã®SSGãããžã§ã¯ãã«ã¯ã11tyãHugoãJekyllãå«ãŸããŸãã
åæ
âãŠãŒã¶ãŒã®è¡åã®ç£èŠãšA / Bãã¹ã
ãµã€ãã§ã®ãŠãŒã¶ãŒã®è¡åã芳å¯ããããšã¯ä»»æã§ããããã®ãããªããŒã¿ãææããããšã¯Webãããžã§ã¯ãã®æ¹åã«å€§ããè²¢ç®ããŸãããŠãŒã¶ãŒããµã€ããã©ã®ããã«æäœãããã«é¢ããæ å ±ãåéããããã«èšèšãããç¹å¥ãªã¯ã©ã¹ã®ããŒã«ããããŸãããããã®ããŒã«ã䜿çšãããšããµã€ãéçºè ã¯ãŠãŒã¶ãŒã®ããŒãºãããé©åã«æ€èšããA / Bãã¹ããéããŠãæãé©åãªä»£æ¿æ¡ãéžæããã®ã«åœ¹ç«ã¡ãŸãããµã€ãã®æ©èœããµããŒããããŠãŒã¶ãŒã®è¡åãã¿ãŒã³ããã¶ã€ã³ã«ã€ããŠè©±ããŸãã
ãŠãŒã¶ãŒã®è¡åãšA / Bãã¹ããç£èŠããããã®ããã€ãã®ãœãªã¥ãŒã·ã§ã³ã次ã«ç€ºããŸãã
- Google AnalyticsïŒGAïŒãAngularãReactãããã³Vueã§GAã䜿çšããããã®ã¬ã€ãããããŸãã
- Kameleoon. â A/B- -.
â -
髿§èœã®Webã¢ããªã±ãŒã·ã§ã³ãäžåºŠã«éçºããããšã¯å°é£ã§ãããã ããããšãã°ãèªã¿èŸŒã¿ãé«éåããããã«æé©åãããã¢ããªã±ãŒã·ã§ã³ã¯ãäœéããŒãžã§ã³ããããŠãŒã¶ãŒããããè¯å®çãªææ ãçæããŸãããµã€ããåæããæ¹åã®ããã®æšå¥šäºé ãæäŸããããŸããŸãªãããžã§ã¯ãããããŸããäŸ-Googleããã®PageSpeedInsightsã
Google Chromeéçºè ããŒã«ã®äžã«ã¯ããµã€ãã®ããã©ãŒãã³ã¹ãåæããããã®éåžžã«äŸ¡å€ã®ããããŒã«ã§ããLighthouseããããŸãã 100ãã€ã³ãã®ã¹ã±ãŒã«ã䜿çšããŠã5ã€ã®åºæºïŒããã©ãŒãã³ã¹ãã¢ã¯ã»ã·ããªãã£ããã¹ããã©ã¯ãã£ã¹ãSEOãPWAïŒã§ãµã€ããè©äŸ¡ããŸããåæåŸããµã€ããæ¹åããããã®æšå¥šäºé ãå«ãã¬ããŒããçæãããŸãã

Lighthouseã䜿çšãããµã€ãã®åæ
Chromeéçºè ããŒã«ã®äžã«ãããã1ã€ã®ããã©ãŒãã³ã¹ã¢ãã©ã€ã¶ãŒã¯ãæªäœ¿çšã®JSããã³CSSã³ãŒããæ€çŽ¢ã§ãã[ã«ãã¬ããž]ããã«ã§ãããã®ãããªã³ãŒãããããžã§ã¯ãããé€å€ããããšã§ããã³ãã«ã®ãµã€ãºãæžããããšãã§ããŸããããã«ããããµã€ãã®èªã¿èŸŒã¿ãé«éåãããŸããããã¯ãã¢ãã€ã«ããã€ã¹ã§ç¹ã«é¡èã«ãªããŸãã
âSEO
æ€çŽ¢ãšã³ãžã³ã®æé©åã§ããSEOã¯ãGoogleãBingãDuckDuckGoãªã©ã®æ€çŽ¢ãšã³ãžã³ã§ãµã€ãã®ã©ã³ãã³ã°ãäžããããã«å¿ èŠãªããšã§ããé©åã«æé©åããããµã€ããããèŠããããªããŸããå®éãWebéçºã®äžçã§ã¯ããSEOã¹ãã·ã£ãªã¹ãããšããç¹å¥ãªç«å Žããããããšãéåžžã«éèŠã§ãã
AngularãReactãVueã§SEOã«ã€ããŠè©±ããšã次ã®ããã«ãªããŸãã
ããã³ããšã³ãéçºã¯åºå€§ã§çµ¶ããå€åããå°éåéã§ããããšã«åæããŸããå®éã誰ãããã¹ãŠãç¥ã£ãŠããŠã§ããæ®éçãªéçºè ã«ãªãããšãããšããããéæããããšã¯éåžžã«å°é£ã§ããã圌ã«ã¯éåžžã«é·ãæéãããããŸããããã«ãåWebãããžã§ã¯ãã«ã¯ç¬èªã®ããŒãºãšåªå é äœããããŸãããã®ããããããžã§ã¯ãã®äœæ¥ã®éå§æã«æãéèŠãªãã®ã決å®ããå¿ èŠããããŸããããã«ãããæ£ãã°ãããšãªããæãå¿ èŠãªãã®ã ããéžæããŠèª¿æ»ãããããžã§ã¯ãã®ç®æšã«å¯Ÿå¿ããããã«ãããžã§ã¯ãã®ã¢ãŒããã¯ãã£ãèšç»ããããšãã§ããŸãã
ã©ã®ãããªæ°ããããã³ããšã³ãéçºãã¯ãããžãŒãæãææã ãšæããŸããïŒ
