
誰ããç§ãããŸãã«ãåŠå®çã«æžããããŠããŠã§ãã®è¯å®çãªåŽé¢ã«æ³šæãæããªããšæ±ºããã ã€ãŸããæåã®éšåã¯ãç§ãã¡ã¯æ·±ãç©Žã«èœã¡ããšããäºå®ãè°è«ããããšããã¹ã¿ã€ã«ã§ããã2çªç®ã®éšåã¯ãããè¯ããã®ãéçºããæ¹æ³ãã§ãããããã¯å€§ããªãããã¯ãªã®ã§ã2ã€ã®éšåã«éå®ãããŸããã
競åä»ç€ŸãNewWeb WebãšåŒã³ãŸãããïŒãã©ã³ãèšå®ã¯åŸã§è¡ãããšãã§ããŸãïŒã æåã«ããŠã§ããæåã«æåããçç±ãç解ããå¿ èŠããããŸãã Webã¯ãæé«ã®GUIéçºããŒã«ãåããä»ã®ã¢ããªã±ãŒã·ã§ã³éçºæè¡ãè¿åããŠãããããæ¬ é¥ãäžåãããã€ãã®å質ãæããã«æã£ãŠããŸãã ãããã®è³è³ªãæºãããªããã°ãéåœã«ããã
èªåé 眮ãšåºåãæåãåããUIãšãã£ã¿ãŒã§ããMatisseã§GUIãäœæããŸãã ïŒæ°ããã¹ã¿ã€ãªãã·ã¥ãªïŒçæ§ã®é·çãïŒ
å®ãã«ãéäžããªããã°ãªããŸããã Webã«ã¯å€æ°ã®éçºããŒã ããããŸãã 圌ãã®ä»äºã®ã»ãšãã©ã¯è€è£œãŸãã¯ç Žæ£ãããäœããåå©çšããããšãã§ããŸãã å°ããªæ°ããéçºãå¯èœã§ãããæŠããŠãNewWebãã¯ãããžãŒã¯æ¢åã®ãœãããŠã§ã¢ããçµã¿ç«ãŠãå¿ èŠããããŸãã 貧ãã人ã ã¯éžæããå¿ èŠã¯ãããŸããã
以äžã«ãWebã®5ã€ã®äž»èŠãªããããã£ã®å人ãªã¹ãã瀺ããŸãã
- ãµã³ãããã¯ã¹ã®å±éãšåé¢
- ãŠãŒã¶ãŒãšéçºè ãç¿åŸãããã
- äºåæ³ææž/ã¢ããªã±ãŒã·ã§ã³ãæé€
- é«åºŠãªãã¶ã€ã³ãšãã©ã³ãã£ã³ã°
- ãªãŒãã³ãœãŒã¹ãšç¡æ䜿çš
ããã¯ããŸãã«ã¢ãŒããã¯ãã£ã®äž»èŠãªååãšèŠãªããããã®ã§ã¯ãããŸãããéçºè ã«ã€ã³ã¿ãã¥ãŒãããšãã»ãšãã©ã®éçºè ã¯ãWeb URLã®ã¢ãŒããã¯ãã£ã®æ¬è³ªãåŒã³åºãããœãŒã¹ã³ãŒããã¯ãã¹ãã©ãããã©ãŒã ãHTTPãªã©ã衚瀺ããŸãã ãããããããã¯ãã¹ãŠå®è£ ã®è©³çŽ°ã«ãããŸããã JavaScriptããšãŠãã¯ãŒã«ã ããã§ã¯ãªããWebã¯DelphiãšVisual Basicãããè¯ãããŸããã ããæ·±ãçç±ããããŸãã
äžèšã®ããšã¯ãååãšããŠéåžžã«ç解ãããããã®ã§ãã èšäºã®éçšã§ãããããã詳现ã«åæããŸãã ãŠã§ããæã¡è² ããã«ã¯ããã®åŒ·ã¿ãç¹°ãè¿ãã ãã§ã¯ååã§ã¯ãããŸããããŠã§ããç°¡åã«çµ±åã§ããªãç¬èªã®æ¹åãæäŸããå¿ èŠããããŸãã ãã以å€ã®å Žåã¯æå³ããããŸããããããžã§ã¯ãã®ä»£ããã«ãåã«Webã®æ¹åã«åãçµã¿ãŸãã
ãã®èšäºã§ã¯ã2ã€ã®ããšãææ¡ããŸããç¹å®ã®ã¢ãŒããã¯ãã£ã®ååïŒç§ã®æèŠã§ã¯ãWebã®æ·±å»ãªç«¶åä»ç€ŸãåŸãã¹ããã®ïŒãšãããŸããŸãªãªãŒãã³ãœãŒã¹ãããžã§ã¯ãããåéããå ·äœäŸã§ãã å€ãã®èªè ã¯ç¹å®ã®äŸã奜ãŸãªãã§ãããããªããªã圌ãã¯ä»ã®ãããžã§ã¯ããããã°ã©ãã³ã°èšèªã奜ãããã§ããå¿é ããå¿ èŠã¯ãããŸããã æ°ã«ããŸãã ããã¯åãªãäŸã§ã-ååã¯æ¬åœã«éèŠã§ãã ãããã®å€¢ãå®å šã«éçŸå®çã§ã¯ãªãããšã説æããããã«ãç¹å®ã®ã³ãŒãããŒã¹ãåŒã³åºããŸãã
建ç¯ã®åå
å°ãªããšãã¢ããªã±ãŒã·ã§ã³ã«é¢ããŠã¯ãWebã«ã¯ããããããã¢ãŒããã¯ãã£ã®å²åŠããããŸããã ç§ã®æèŠã§ã¯ã圌ãæ¬ ããŠããå¿ èŠãªãã®ã¯æ¬¡ã®ãšããã§ãã
- ã¢ããªã±ãŒã·ã§ã³èå¥åã®æ確ãªæŠå¿µã
- ããã¯ãšã³ãããããã³ããšã³ããžã®ããŒã¿ã®çµ±äžããããã¬ãŒã³ããŒã·ã§ã³ã
- ãã€ããªãããã³ã«ãšAPIã
- ãã©ãããã©ãŒã ã¬ãã«ã§ã®ãŠãŒã¶ãŒã®èªèšŒã
- IDEäžå¿ã®éçºã
- ã³ã³ããŒãã³ããã¢ãžã¥ãŒã«ãããã³åªããUIã¬ã€ã¢ãŠãã·ã¹ãã -ãã¹ã¯ãããã³ã³ãã¥ãŒã¿ãŒãŸãã¯ã¢ãã€ã«ããã€ã¹ã®éåžžã®éçºãšåãã§ãã
- ãŸããWebãããŸãæ©èœããããšãå¿ èŠã«ãªããŸãïŒã¹ããªãŒãã³ã°ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãŸãã¯æåã§æŽæ°ããã«å³åº§ã«èµ·åãããããã®ã¢ããªã±ãŒã·ã§ã³ããµã³ãããã¯ã¹ã«éé¢ããè€éãªUIã¹ã¿ã€ã«ãèšå®ãããããã¥ã¡ã³ã¿ãªãŒããšããœãããŠã§ã¢ãçŽ æãçµã¿åãããŠäžèŽãããïŒç¹å®ã®ãªã³ã¯æ©èœãªã©ïŒã¢ããªã±ãŒã·ã§ã³ã®çš®é¡ïŒã段éçãªãã¬ãŒãã³ã°ã®å¯èœæ§ãããã³éçºè ãè€éãããUIãäœæããããšã劚ããªãã¢ãŒããã¯ãã£ã
倪åã®æåã®4ã€ã®ãã€ã³ãã¯ã»ãã¥ãªãã£ã«é¢é£ããŠããŸããããã¯ãã»ãã¥ãªãã£ã®åé¡ãåå ã§ãã®ãããªæ¥é²çãªç«å Žãåãããšãäœåãªããããããã§ãã ãããããæ°ããJavaScriptãã¬ãŒã ã¯ãŒã¯ã䜿çšãããšãWebã®ããã©ãŒãã³ã¹ã®äœäžãä¿®æ£ã§ããå¯èœæ§ããããŸãã ããããã»ãã¥ãªãã£ã®åé¡ã¯è§£æ±ºã§ãããšã¯æããŸããã åŸç¶ã®èšäºã§ã¯ã倪åã§ãªãé ç®ã«ã€ããŠèª¬æããŸãã
ã¢ããªã±ãŒã·ã§ã³èå¥åãšãªã³ã¯
ãµã³ãããã¯ã¹ã§ã®Webå±éãšåé¢ã®å©ç¹ãåŸãã«ã¯ãã¢ããªã±ãŒã·ã§ã³çšã®ãã©ãŠã¶ãŒãå¿ èŠã§ãã ã¢ããªã±ãŒã·ã§ã³ã®åã ã®éšåããã€ããŒããã¹ãããã¥ã¡ã³ãã®äžéšãšããŠåç §ã§ãããšäŸ¿å©ã§ãã ããã¯ãŠã§ãã®æåã®éèŠãªèŠçŽ ã§ããAmazonã®æ€çŽ¢çµæããŒãžã¯äœããã®ã¢ããªã±ãŒã·ã§ã³ã®ããã«èŠããŸããããªã³ã¯ã§ããã®ã§ãããã¥ã¡ã³ãã§ããããŸãã
ãã ããã¢ããªã±ãŒã·ã§ã³ãã©ãŠã¶ã¯ãç©ççã«Webãã©ãŠã¶ã«äŒŒãŠã¯ãªããŸããã èŠçŽããŠãã ããïŒWebãã©ãŠã¶ãŒã®UIã¯å®ç§ã§ã¯ãããŸããã

URLã¯ãã©ãŠã¶ã®ãã¶ã€ã³ã®éèŠãªéšåã§ãããæã«ã¯æ··ä¹±ãæãããšããããŸãïŒ
æåã®åé¡ã¯ãURLãUIã«äŸµå ¥ããããšã§ãã ã¢ãã¬ã¹ããŒã«ã¯ããã©ãŠã¶ã®ã¡ã¢ãªããã®ã©ã³ãã ãªããããåžžã«å«ãŸããŠããã人éãšãã·ã³ã®äž¡æ¹ãç解ããã®ãå°é£ãªåœ¢åŒã§ãšã³ã³ãŒããããæªçšã®ãã¬ãŒãã«ã€ãªãããŸãã ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ãã©ã³ãã ãªå éšå€æ°ãã¿ã€ãã«ããŒã«ã¢ã³ããŒãããå Žåãããã¯äŒç€Ÿã®è©å€ãè ããæ·±å»ãªãã°ãšèŠãªãããŸãããªãããã§ããã蚱容ããå¿ èŠãããã®ã§ããããã
2çªç®ã®åé¡ã¯ããã·ã³ãURLãèªèãã«ããããšã§ãïŒ ããã§ã¯ã¬ã€ãžãŒãªãšã¯ã¹ããã€ããäœæããããšã¯å¯èœã§ã ïŒã ãã®ãããªcãªããªãã¯ãèæ ®ããªããŠããã¢ããªã±ãŒã·ã§ã³ã®ã¢ã€ãã³ãã£ãã£ã確ç«ããããŸããŸãªæ¹æ³ãWebäžã«ãããŸãã Cookieã¹ãã¢ãçžäºã«åé¢ããçºè¡ãããã¢ã¯ã»ã¹èš±å¯ã远跡ããããã«ããã©ãŠã¶ãŒã«ã¯ã¢ããªã±ãŒã·ã§ã³IDã®ç¹å®ã®æŠå¿µãå¿ èŠã§ãã ãããããœãŒã¹ãïŒèµ·æºïŒã§ãã æéãçµã€ã«ã€ããŠãWebäžã®ãœãŒã¹ã®æŠå¿µãé²åããä»ã§ã¯æ¬è³ªçã«å®åŒåããããšã¯äžå¯èœã§ãã RFC 6454ã¯ãããå®è¡ããããšããŸãããããã¥ã¡ã³ãèªäœã«ã¯æ¬¡ã®ããã«èšèŒãããŠããŸãã
æéãçµã€ã«ã€ããŠãå€ãã®æè¡ãæç±æã®äŸ¿å©ãªãŠããããšããŠã®ãœãŒã¹ã®æŠå¿µã«åæããŸããã ãã ããCookie [RFC6265]ãªã©ãçŸåšäœ¿çšãããŠããæè¡ã®å€ãã¯ãWebäžã®ãœãŒã¹ã®ææ°ã®æŠå¿µãããåã«äœæãããŸããã ãããã®æè¡ã«ã¯ããã°ãã°ç°ãªãåé¢ãŠãããããããè匱æ§ã«ã€ãªãããŸãã
ããšãã°ããµãŒããŒã.comãã¡ã€ã³ã®Cookieãèšå®ã§ããªãåå ãèããŠãã ããã kamagaya.chiba.jpã¯ã©ãã§ããïŒ ïŒããã¯Webãµã€ãã§ã¯ãªãã.comã®ãããªéå±€ã®åãªãã»ã¯ã·ã§ã³ã§ãïŒïŒ
äºæããã¢ããªã±ãŒã·ã§ã³ã®äžéšã«ãªã³ã¯ãé 眮ããæ©èœã¯ãããããäœã®å©çãåŸããããããå±éºãªãªã³ã¯ãã®åé¡ã®åå ã®1ã€ã§ãã é«åºŠãªURLæåã®èšèšã«ãããã¢ããªã±ãŒã·ã§ã³å šäœãç¡èš±å¯ã®ãŠãŒã¶ãŒã«ããããŒã¿æ³šå ¥ã®ãªã¹ã¯ã«ãããããŸãã ããã¯ã察åŠãã»ãŒäžå¯èœã§ããããšãç¥ãããŠããèšèšäžã®å¶éã§ãããWebã¢ãŒããã¯ãã£èªäœã«ãã£ãŠå¿«ã奚å±ãããŠããŸãã
ããã§ãããã¹ãŠãéçºè ã®æå³ãããšããã«æ©èœããå Žåãããã¥ã¡ã³ãããã¢ããªã±ãŒã·ã§ã³ã®äžå€®ãžã®ãªã³ã¯ãäœæããæ©èœã¯éåžžã«äŸ¿å©ã§ãã ããã§ãããã€ãã®èŠä»¶ãçå®ããŸãã
èŠä»¶ïŒã¢ããªã±ãŒã·ã§ã³IDïŒåé¢ïŒã¯åçŽã§äºæž¬å¯èœã§ãªããã°ãªããŸããã
èŠä»¶ïŒã¢ããªã±ãŒã·ã§ã³ãžã®ãã£ãŒããªã³ã¯ãé 眮ã§ããå¿ èŠããããŸãããåžžã«ã§ã¯ãããŸããã
圌ãã®å瞟ãšããŠãAndroidã¢ãŒããã¯ãã¯ãããã®èŠä»¶ãç解ãããœãªã¥ãŒã·ã§ã³ãææ¡ããŸããã ããããéå§ã§ããŸãïŒ
- ã¢ããªã±ãŒã·ã§ã³ã®IDãå ¬ééµã決å®ããŸãã 1ã€ã®ããŒã§çœ²åããããã¹ãŠã®ããã¥ã¡ã³ãã¯ã1ã€ã®ãã¡ã€ã³ã«åé¢ãããŸãã è¡è§£æã¯ãåé¢ã®å€å¥ã«ã¯äœ¿çšãããŸããã
- ã¢ããªã±ãŒã·ã§ã³ã¯ãäœããã®ç¶æ ã§éãããã«èŠæ±ãã匷ãåä»ããããããŒã¿ãã±ãããåä¿¡ããããã«ãµãã¹ã¯ã©ã€ãã§ããŸãã Androidã¯ãã®æŠå¿µããæå³ããšåŒã³ãŸãã æå³ã¯Androidã§å®éã«éåžžã«åŒ·ãåä»ããããããã§ã¯ãããŸããããããããããšã¯ã§ããŸãã å éšããã²ãŒã·ã§ã³ã«ã䜿çšã§ããŸãããä»ã®ã¢ããªã±ãŒã·ã§ã³ããã®ãªã³ã¯ãèš±å¯ããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãããã§ã¹ãã§æå³ãå ¬éããå¿ èŠããããŸãã ããã©ã«ãã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯ãªã³ã¯ã«å¿çããŸããã
- ããŠã³ããŒãããã¢ããªã±ãŒã·ã§ã³ã¯ã©ãã«ãããŸããïŒ ãã¡ã€ã³åã¯ãéå§ããã®ã«ååãªå Žæã§ãã HTTP [S]ããŠã³ããŒãããµããŒãã§ããŸãããããç¥ãããŠããããŒãã§NewWebãµãŒããŒãèŠã€ããããããã³ãŒããååŸããŸãã ãããã£ãŠããã¡ã€ã³åã¯ã¢ããªã±ãŒã·ã§ã³ãåãåãããã®åºçºç¹ã«ãªããŸãããä»ã®ç¹ã§ã¯ããã»ã©éèŠã§ã¯ãããŸããã
URLãšä»ã®äººã®æå³ãèªåã®ãã®ãšåºå¥ããããã«ãä»ã®äººã®ãªã³ã¯ããã±ãŒãžãšåŒã³ãŸã ã
ããã©ã«ãã§å€éšãªã³ã¯ã®åä¿¡ããªãã«ãããšãNewWebã®ãªã³ã¯æ¥ç¶æ§ã¯äœäžããŸãããã»ãã¥ãªãã£ã¯åäžããŸãã ãã¶ãããã¯æªã劥åã§ãããèŽåœçã«ãªãã§ãããã ããããçŸä»£ã®Webã§äººã ãçè«çã«äœæã§ããå€ãã®ãªã³ã¯ã¯ãèªèšŒèŠä»¶ã®ããããŸãã¯æå³ã®ããåæç¶æ ïŒå€ãã®SPAïŒãå«ãŸãªããããæ¬è³ªçã«ã¯åœ¹ã«ç«ã¡ãŸããã ãããã£ãŠãã¢ããªã±ãŒã·ã§ã³ã¯æ»æé åãæå°éã«æããŸãã ãã®ãããªå€æ°ã®ãšã¯ã¹ããã€ãã®éå§ç¹ã§ããæªæã®ãããªã³ã¯ã¯ãããã«å±éºãå°ãªããªããŸãã ããã¯è²Žéãªææã®ããã§ãã
ããããä»ã«ãå©ç¹ããããŸããWebã¢ããªã±ãŒã·ã§ã³ã®ãã¡ã€ã³åã®éèŠæ§ã¯ã 管çè ã奜ãŸãããªããã¡ã€ã³ã没åããèªæã«é§ãããŸãã åçŽãªãµã€ãã¯åé¡ãªãå¥ã®ãã¡ã€ã³ã«è»¢éã§ããŸãããããè€éãªãµã€ãã§ã¯ãã¡ãŒã«ã¢ãã¬ã¹ãOAuthããŒã¯ã³ãªã©ã®ç¢ºç«ãããè©å€ã倧äºã«ããããšãã§ããŸãã ç§å¯éµã¯çŽå€±ãããçãŸãããããå¯èœæ§ããããŸããããã¡ã€ã³åãšåãã§ãã ç§å¯éµãçŽå€±ããå Žå-å°ãªããšãããªãã®ããã§ãã
ãã©ãŠã¶UIã®æ®ãã®éšåã«ã€ããŠã¯ãããããããããåãé€ãããšãã§ããŸãã ã¿ãã¯äŸ¿å©ãããããŸããããããŒãžã®åèªã¿èŸŒã¿ãã¿ã³ã¯æ±ºããŠäœ¿çšããªãã§ãã ããããŸããçã«ããªã£ãŠããå Žåã¯ãiOSã®ããã«ãåã®ç¶æ ã«æ»ãããã®ãã¿ã³ãã¢ããªã±ãŒã·ã§ã³èªäœã«çµã¿èŸŒãããšãã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ãã©ãŠã¶ãŒã®äœææ¹æ³ NewWebã¯Webãšã¯ãŸã£ããç°ãªããŸããããã«ã¹ã¯ãªãŒã³ã¢ããªã±ãŒã·ã§ã³ã®åºæ¬çãªUIã¯ããªãæšæºçãªãã®ã§ããããŠãŒã¶ãŒã¯åãæ¿ããå¿ èŠããããŸãã ã§ã¯ãChromiumããã©ãŒã¯ããŠãæ°ããã¢ãŒãã§ã¿ããè¿œå ããŠã¿ãŸãããïŒ
ïŒç·šéïŒäžèšããããã«ãªã¹ããããŠãããã¹ãŠã«Chromeã䜿çšããããšæã£ãŠãã人ã¯ããŸãããã¿ãä»ãUIã䜿çšããŠãNewWebãšOldWebãé£ã§éãããã«ããŸããããã ããã¿ãUIã¯ç°¡åã«äœæã§ããChromiumã䜿çšããå¿ èŠã¯ãããŸãããã¢ããªã±ãŒã·ã§ã³ãã©ãŠã¶ã¯ãã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠãŒãããäœæããããšãã§ããŸãã
çµ±äžãããããŒã¿è¡šç€º
ãªã³ã¯ããã±ãŒãžã®æŠå¿µã¯å°ããŒãããŠããããã«èããããããããŸããã ããã¯äœã§ãã å®çŸ©ãæ確ã«ããããã«ãããŒã¿æ§é ãå¿ èŠã§ãã
ãŠã§ãäžã§ãããè¡ãã«ã¯å€ãã®æ¹æ³ããããŸããããããã¯ãã¹ãŠããã¹ãããŒã¹ã§ãã ç§ã®ååã®èšäºã®è«æãæãåºããŠãã ããïŒããã¹ããããã³ã«ïŒJSONã ãã§ãªãïŒã«ã¯æ ¹æ¬çãªè匱æ§ããããŸãïŒããã¯ãã€ã³ãã³ãããããã¡ãŒã·ã°ããªã³ã°ã§ããã€ãŸããããŒã¿ã®çµäºäœçœ®ãèŠã€ããã«ã¯ãç¹å®ã®æåã·ãŒã±ã³ã¹ãæ€çŽ¢ããŠãã¹ãŠãèªãå¿ èŠããããŸãã ãããã®ã·ãŒã±ã³ã¹ã¯ããŒã¿ã®æ£åœãªéšåã«ãªãå¯èœæ§ããããŸããã€ãŸããã¹ã¯ãªãŒãã³ã°ã¡ã«ããºã ãå¿ èŠã§ãã ãããŠããããã®ãããã³ã«ã¯äººéãèªããããå°ãªããšãèªããªããšæ³å®ãããŠããããã空çœåŠçãæ£èŠåããããŠãã³ãŒãã«å¥åŠãªå¢çç·ã®ã±ãŒã¹ããããHTTPããããŒåå²æ»æãªã©ã®æªçšã«ã€ãªãããŸãã
æãããã¹ããããã³ã«ã¯Webéçºè ãæ¯æŽããŠããŸããã æ å ±æºãèŠããšãæ°ãåããªãã»ã©äœåºŠãå©ãã«ãªããŸããã ããããçŸåšã§ã¯ãWebã¢ããªã±ãŒã·ã§ã³ã¯ãã¡ããã®ããšãWeb ããŒãžã®å¹³åãµã€ãºã¯2ã¡ã¬ãã€ããè¶ ããŠããŸãã éçãªããã¹ããå«ãéå±ãªWebããŒãžã§ãããå€ãã®å Žåãæ©æ¢°ã®å©ãããªããã°ç解ããããšããã§ããªãå€ãã®çž®å°ãããã¹ã¯ãªãããå«ãã§ããŸãã ããã¹ããããã³ã«ã®å©ç¹ã¯ãåŸæ¥ãããå°ããããã§ãã

ããªããã£ããã³ã³ãã€ã©
æ£çŽã«èšããšãè¿å¹ŽãWebã¯ããã¹ããããã³ã«ãåŸã ã«æŸæ£ããŠããŸãã HTTP / 2ãã€ããªã ãããŠãåºãç¥ãããŠãããWebAssemblyãã¯ãã³ãŒããè¡šçŸããããã®ãã€ããªã®æ¹æ³ã§ãããç§ãã¡ã話ããåé¡ãå®éã«è§£æ±ºããããã§ã¯ãããŸããã ããããããã§ãã
èŠä»¶ïŒããŒã¿ã·ãªã¢ã«åã¯ãããŒã¿ãŠã§ã¢ããŠã¹ããããã³ããšã³ããŸã§ãèªåçã«å ¥åããããã€ããªã§å€æŽãããªãå¿ èŠããããŸãã
ã·ãªã¢ã«åã®ããã®ã³ãŒãã¯æžãã®ãé¢åã§ããã ãã§ãªããæ·±å»ãªæ»æçµè·¯ã§ããããŸãã åªãããã©ãããã©ãŒã ã課é¡ã«åãçµãã¹ãã§ãã ããŒã¿æ§é ãè¡šçŸããããã®æãåå§çãªæ§æãå®çŸ©ããŸãããã
enum SortBy { Featured, Relevance, PriceLowToHigh, PriceHighToLow, Reviews } @PermazenType class AmazonSearch( val query: String, val sortBy: SortBy? ) : LinkPacket
ãŠã§ãã§ã¯ãåçã®ãã®ã¯amazon.comã®URLã§ãã ç¹å®ã®ç¶æ ã§ã¢ããªã±ãŒã·ã§ã³ãéãèŠæ±ã瀺ãããã«ãäžå€åã®ããŒã¿æ§é ãå®çŸ©ããŸãã
ãã®ããŒã¿æ§é ã¯
@PermazenType
ãšããŠããŒã¯ãããŠã
@PermazenType
ã ããã¯ã©ãããæå³ã§ããïŒ
æ¥é èŸä»ãã®é·ããã¹ã¿ãã¯å šäœãžã®ã€ã³ãžã§ã¯ã·ã§ã³ã«å¯Ÿãã匷åãªåä¿è·ãåããã³ãŒãã䜿çšããå ŽåãSQLã§äœããããå¿ èŠããããŸãã æ§é åã¯ãšãªã®èšèªã¯ãããŸããŸãªéåžžã«åŒ·åãªããŒã¿ããŒã¹ãšã³ãžã³ã«è€éãªã¯ãšãªãè¡šçŸããããã®åªãããããç解ãããæ¹æ³ãªã®ã§ãæ®å¿µã§ãã ãã ããSQLã¯ããã¹ãAPIã§ãã SQLã€ã³ãžã§ã¯ã·ã§ã³ã¯ãç°¡åã«ç解ããŠä¿®æ£ã§ããæãåçŽãªã¿ã€ãã®ãšã¯ã¹ããã€ãã®1ã€ã§ãããWebãµã€ãã§æãäžè¬çãªãã°ã®1ã€ã§ããããŸãã äžæè°ã§ã¯ãããŸããïŒWebãµãŒããŒã§æãæçœãªæ¹æ³ã§SQLã䜿çšãããšãSQLã¯æ£åžžã«æ©èœããŸããããµãŒããŒãéãã«ãããã³ã°ã«å¯ŸããŠè匱ã«ããŸãã ãã©ã¡ãŒã¿åãããã¯ãšãªã¯åœ¹ç«ã¡ãŸãããããã¯ããã¹ãŠã®ç¶æ³ã§äœ¿çšã§ããããã§ã¯ãªãåŽé¢ã®ãã¡ããã¡ããªãœãªã¥ãŒã·ã§ã³ã§ãã æè¡ã®ç©ã¿éãã¯ãç§ãã¡å šå¡ã«ãšã£ãŠããé ãããã¯ãã®ããªãäœãåºããç§ãã¡ã®ç®æšã¯ãæ©èœãšãªã¹ã¯ã®æ¯çãæå°éã«æããããšã§ãã
SQLã«ã¯ä»ã«ãããã€ãã®åé¡ããããŸãã ãªããžã§ã¯ããªã¬ãŒã·ã§ãã«ãããã³ã°ã®åé¡ãããã«çºçããŸãã SQLã¯ãšãªã®çµæãHTTPæ¥ç¶çµç±ã§ãã€ãã£ãã«éä¿¡ããããWebããŒãžã«åã蟌ãã ãããããšã¯ã§ããªããããå¥ã®åœ¢åŒãžã®å€æãåžžã«å¿ èŠã«ãªããŸãã SQLã¯ãåºã«ãªãã¯ãšãªã®ããã©ãŒãã³ã¹ããŠãŒã¶ãŒããé ããŸãã ããã¯ãšã³ãã®ã¹ã±ãŒãªã³ã°ã¯å°é£ã§ãã å€ãã®å Žåãã¹ããŒãã®å€æŽã«ã¯ããŒãã«ã®ããªãŒãºãå¿ èŠã§ããããã蚱容ã§ããªãããŠã³ã¿ã€ã ãªãã§ã¯å±éã§ããŸããã
NoSQLãšã³ãžã³ã¯ããã»ã©åªãããã®ã§ã¯ãããŸãããéåžžããããã®åé¡ã®1ã€ãŸãã¯2ã€ãä¿®æ£ããŸããããã以å€ã®ãã¹ãŠã®ããã«SQLãœãªã¥ãŒã·ã§ã³ãç Žæ£ããŸãã ãã®çµæãå€ãã®å Žåãç°ãªã決å®ãè¿«ãããŸãããå¿ ãããæè¯ãšã¯éããŸããã ãã®çµæãGoogleãBloombergãªã©ã®å€§æäŒæ¥ã¯ãSQLããŒã¿ããŒã¹ïŒ F1 ã ComDB2 ïŒãã¹ã±ãŒãªã³ã°ããæ¹æ³ãèŠã€ããããã«å€ãã®æéãè²»ãããŠããŸãã
Permazenã¯ãçŸåšç§ã«ãšã£ãŠé åçãªããŒã¿ã¹ãã¬ãŒãžãžã®æ°ããã¢ãããŒãã§ãã 圌ãã®ãŠã§ããµã€ãããã®åŒçšïŒ
Permazenã¯ãæ°žç¶çãªããã°ã©ãã³ã°ã«å¯ŸãããŸã£ããæ°ããã¢ãããŒãã§ãã ã¹ãã¬ãŒãžãã¯ãããžã®äžéšã§éçºãéå§ãã代ããã«ã圌ã¯ããã°ã©ãã³ã°èšèªã®äžéšããå§ããŠã次ã®ç°¡åãªè³ªåãããŸãããããŠèšèªã®é¢ã§æãèªç¶ãªæ¹æ³ã§ïŒã
Permazenã¯Javaã©ã€ãã©ãªã§ãã ãã ãããã®ã¢ãŒããã¯ãã£ãšæè¡ã¯ãä»»æã®ãã©ãããã©ãŒã ãŸãã¯èšèªã§äœ¿çšã§ããŸãã 圌女ã¯ãå€ãã®ã¯ã©ãŠããããã€ããŒãæäŸã§ããçš®é¡ã®ãœãŒããããããŒãšå€ã®ã¹ãã¬ãŒãžãå¿ èŠãšããŸãïŒK / Vã¹ãã¬ãŒãžãšããŠRDBMSã䜿çšããããšãã§ããŸãïŒããä»ã®ãã¹ãŠã¯ã©ã€ãã©ãªå ã§è¡ãããŸãã 圌女ã«ã¯ããŒãã«ãSQLããããŸããã 代ããã«ã圌女ïŒ
- ãã¹ãèšèªæŒç®åã䜿çšããŠãçµåããã³äº€å·®ïŒæ¥ç¶ïŒãå®è¡ããŸãã
- ã¹ããŒãã¯ã¯ã©ã¹ã«ãã£ãŠçŽæ¥å®çŸ©ãããããããªããžã§ã¯ããªã¬ãŒã·ã§ãã«ãããã³ã°ãèšå®ããå¿ èŠã¯ãããŸããã
- ããªã³ã¿ã€ã ãã¹ããŒã ã®æ®µéçãªé²åãå®è¡ã§ããããããŠã§ã¢ããŠã¹å ã®ããŒã¿ã®è¡šç€ºãå€æŽããããã«ããŒãã«ãåçµããå¿ èŠããªããªããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³ã¯æ確ã«èšå®ããããã©ã³ã¶ã¯ã·ã§ã³ããã®ããŒã¿ã®ã³ããŒãšãã®éã®ã³ããŒã¯éçºè ã«ãã£ãŠæ確ã«å¶åŸ¡ãããŸãã
- ããã»ã¹éã®å€æŽãå«ããåºã«ãªãããŒã¿ãå€æŽããããšãã«ã³ãŒã«ããã¯ãåä¿¡ã§ããããã«å€æŽã远跡ããŸãïŒK / VãªããžããªãããããµããŒãããå€ãã®å Žåããã§ãïŒã
- ããŒã¿ãŠã§ã¢ããŠã¹ã®ã¯ãšãªãšæäœïŒããšãã°ãã¹ã±ãžã¥ãŒã«ããã移è¡ã«æºè¶³ã§ããªãå Žåã¯ããŒã¿ã®ç§»è¡ãéå§ããïŒãå¯èœã«ããã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ãšGUIããããŸãã
å®éãçŽ æŽãããã¬ããŒããèªãããã¹ã©ã€ããèŠãã ãã§ãïŒã¹ã©ã€ãã¯ã©ã€ãã©ãªã®å€ãååã䜿çšããŸãããããã¯åããœãããŠã§ã¢ã§ãïŒã Permazenã¯ããŸãç¥ãããŠããŸãããããããŸã§èŠãããŒã¿ãŠã§ã¢ããŠã¹ãšãªããžã§ã¯ãæåèšèªãç·å¯ã«çµ±åããããã®æãè³¢æã§æãè³¢ãã¢ãããŒãã§ãã
Permazenã®èå³æ·±ãæ©èœã®1ã€ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã¹ãããã·ã§ããã䜿çšããŠãªããžã§ã¯ãã°ã©ããã·ãªã¢ã«åããã³éã·ãªã¢ã«åã§ããããšã§ãã ãã®ã¹ãããã·ã§ããã«ã¯ã€ã³ããã¯ã¹ãå«ãŸããŸããã€ãŸããååãªã¡ã¢ãªããªããã°ããŒã«ã«ã¹ãã¬ãŒãžã«ããŒã¿ãã¹ããªãŒãã³ã°ã§ãããã§ã«ã€ã³ããã¯ã¹ã¯ãšãªãå®è¡ã§ããŸãã ããã§ããªãã©ã€ã³åæã®ãµããŒãã«ããããã®ã©ã€ãã©ãªãããŒã¿ã¹ãã¬ãŒãžãã©ã®ããã«çµ±åããããæããã«ãªãã¯ãã§ãã Permazenã®ãã¹ãŠã®æäœã¯ã·ãªã¢ã«åå¯èœãªãã©ã³ã¶ã¯ã·ã§ã³å ã§å®è¡ã§ããããã競åã®è§£æ±ºã¯ãã©ã³ã¶ã¯ã·ã§ã³ã§å®è¡ã§ããŸãïŒæäœå¯èœãªå€æã©ã€ãã©ãªãå¿ èŠãšããGoogleããã¥ã¡ã³ãã®ã¹ã¿ã€ã«ã§ç«¶åã®ãªãäœæ¥ãå¿ èŠãªå ŽåïŒã
NewWebã¯ãã®ãããªã¢ãããŒãã䜿çšããå¿ èŠã¯ãããŸããã protobufã®ãããªããå°ãäŒçµ±çãªãã®ãéžæã§ããŸããããã¹ãŠã®èšèªã§åæ§ã«äžäŸ¿ãªç¹å¥ãªIDLãšã¿ã°ãã£ãŒã«ãã䜿çšããå¿ èŠããããŸãã CBORãŸãã¯ASN1ã䜿çšã§ããŸãã çŸåšã®Cordaãããžã§ã¯ãã§ã¯ãAMQP / 1.0äžã«æ§ç¯ãããããªããžã§ã¯ããã·ãªã¢ã«åããç¬èªã®ãšã³ãžã³ãäœæããŸããã ããã©ã«ãã§ã¯ãã¡ãã»ãŒãžã¯ããèªäœã説æãããããç¹å®ã®ãã€ããªããã±ãŒãžããšã«åžžã«ã¹ããŒã ãååŸããŸãããããã£ãŠãXMLãJSONã®ããã«ããœãŒã¹ã³ãŒãã衚瀺ããæ©èœããããŸãã AMQPã¯ãªãŒãã³ã¹ã¿ã³ããŒãã§ãããåºç€ãšãªãåã·ã¹ãã ãéåžžã«åªããŠããããïŒããšãã°ãæ¥ä»ãšæ³šéãèªèããããïŒAMQPãæšå¥šãããŸãã
ãã€ã³ãã¯ãæœåšçã«æ害ãªãœãŒã¹ããããŒã¿ãåä¿¡ããã®ã¯å±éºã§ãããšããããšã§ãããã®ããã圢åŒãšå®å šæ§ãã§ãã¯ã®æ倧æ°å ã§ã§ããã ãå€ãã®èªç±åºŠãååŸããããšãæãŸããã§ãã ãã¹ãŠã®ãããã¡ãŒã«ã¯é·ãã®ãã¬ãã£ãã¯ã¹ãå¿ èŠã§ããããããŠãŒã¶ãŒã¯ãã£ãŒã«ãã«æªæã®ããããŒã¿ãæ¿å ¥ããããšããããšã¯ã§ããŸããããã®ãããªè©Šã¿ã¯æ©æã«åæ¢ããŸãã ããŒãäžã«ããŒã¿ãæ éã«ãã§ãã¯ããå¿ èŠããããŸãããã®ãããªãã§ãã¯ã«æé©ãªå Žæã¯ãåã·ã¹ãã ãšããŒã¿æ§é èªäœã®ã³ã³ã¹ãã©ã¯ã¿ãŒã§ããããã¯ããã§ã«å¿ããŠãããããããŸããã ãã€ã¢ã°ã©ã ã¯ãæ§é ãã©ãããã¹ãããç解ããã®ã«åœ¹ç«ã¡ãäŸµå ¥è ãã¿ã€ãããã·ã³ã°ã䜿çšããã®ãé²ããŸãã
ææ¡ãããã¹ããŒã ã¯çµ¶å¯Ÿã«ãã€ããªã§ããã«ããããããããããã°ãæè²ç®çã§ããã¹ããžã®äžæ¹åã®å€æãå®è¡ããããšã¯å¯èœã§ãã å®éã«ããŒããŒã³ãšãããå¯èœã§ãã
ã·ã³ãã«ããšæ®µéçãªåŠç¿
åã·ã¹ãã ã«ã¯1ã€ã®åé¡ããããŸã-è€éããå¢ããŸãã åã«åºäŒã£ãŠããªãéçºè ã«ãšã£ãŠã圌ãã¯ããçš®ã®ç¡æå³ãªå®å䞻矩ã®ããã«èŠããŸãã ãŸããé©åãªããŒã«ããªããšããã€ããªãããã³ã«ãåŠç¿ããŠãããã°ããã®ãé£ãããªããŸãã
èŠä»¶ïŒç¿åŸãç°¡å
ãŠã§ãã®æåã®å€§éšåã¯ããããæ¬è³ªçã«é¡ååãããŠããªããšããäºå®ã«ãããã®ãšç¢ºä¿¡ããŠããŸãã ããã®ãã¹ãŠã¯åãªãè¡ã§ãã å®å šæ§ãæ§èœãããã³ä¿å®æ§ã«ã¯å£ããŸããããã¬ãŒãã³ã°ã«ã¯éåžžã«é©ããŠããŸãã
Webã®äžçã§ãã®ãããªæ§é ãåŠçãã1ã€ã®æ¹æ³ã¯ãJavaScriptããŒãžã§ã³ã§æ®µéçã«å ¥åããããšã§ãã ããã¯åªãã貎éãªç 究äœæ¥ã§ããããã®ãããªæ¹èšã¯åºã䜿çšãããŠããããæ°ããèšèªã®ã»ãšãã©ã¯å°ãªããšãéšåçã«åŒ·ãåä»ããããŠããŸãïŒRustãSwiftãGoãKotlinãCeylonãIdris ...ïŒã
ãã®èŠä»¶ãæºãããã1ã€ã®æ¹æ³ã¯ãã¹ããŒãIDEã§ããéçºè ãæåã«åæå®ã®ãªãæ§é ïŒ
Any
ãšããŠå®çŸ©ãããŠãããã®ïŒã§äœæ¥ã§ããããã«ãããšãã©ã³ã¿ã€ã ã¯å ã®åã決å®ãããã®æ å ±ãIDEã«å€æããããšããŸãã ãã®åŸã圌女ã¯æé©ãªã¿ã€ãã®æ³šéã®ä»£æ¿ãææ¡ã§ããŸãã éçºè ãããââã°ã©ã ã®å®è¡äžã«åå€æãšã©ãŒã«ééããå ŽåãIDEã¯å¶éãå床緩åããããææ¡ããå ŽåããããŸãã
ãã¡ããããã®ã¢ãããŒãã¯ãéçºè ã«äºåã«åãæ€èšããããããã»ãã¥ãªãã£ãäœããã¡ã³ããã³ã¹ã容æã§ãããã©ã³ã¿ã€ã ãšã©ãŒã«ã€ãªããããšãå€ãæ¯èŒç匱ããã¥ãŒãªã¹ãã£ãã¯ãªåã§ãããå€æ°ã®æªçšããä¿è·ããŸãã JVMãV8ãªã©ã®ã©ã³ã¿ã€ã ç°å¢ã¯ããã§ã«ãã®çš®ã®ã¿ã€ãæ å ±ãåéããŠããŸãã Java 9ã«ã¯ãä»®æ³ãã·ã³ãäœã¬ãã«ïŒJVMCIïŒã§å¶åŸ¡ã§ããæ°ããAPIãããããã®ãããªãããã¡ã€ãªã³ã°ã«åãçµãã§ããŸã-ãã®ãããªããŒã«ã§å®éšããã®ãã¯ããã«ç°¡åã«ãªããŸãã
èšèªãšä»®æ³ãã·ã³
NewWebã¯ã©ã®èšèªã䜿çšããå¿ èŠããããŸããïŒ ãã¡ãããããã¯ç°¡åãªè³ªåã§ã¯ãããŸããããã©ãããã©ãŒã ãèžè¡çã«ãªãã¹ãã§ã¯ãããŸããã
é·å¹Žã«ããããJavaScript以å€ã®èšèªãWebã«å°å ¥ããè©Šã¿ãæ°å€ãè¡ãããŠããŸãããããããã¯ãã¹ãŠããã©ãŠã¶ãŒéçºè ïŒäž»ã«MozillaããïŒã®ã³ã³ã»ã³ãµã¹ãåŸãããšãªãæåããŠããŸããã å®éããã®ç¹ã§Webã¯éå»ã«æ»ã£ãŠããŸããJavaãActionScriptãVBScriptãªã©ã®èšèªãå®è¡ã§ããŸããããã©ãŠã¶ãŒã¡ãŒã«ãŒã¯ãã¹ãŠã®éJavaScriptãã©ã°ã€ã³ããã©ãããã©ãŒã ããäœç³»çã«åé€ããŸããã ããã¯å°ãæ®å¿µã§ãã ãã¡ããã競äºãç¶æããããšã¯å¯èœã§ããã Webãã©ãããã©ãŒã ã«å¯Ÿããæ²ããæç« ã¯ãWebAssemblyãæ°ããèšèªãè¿œå ããå¯äžã®è©Šã¿ã§ããããã®èšèªã¯Cã§ãããšããããšã§ã...ãã®äžã§ãWebã¢ããªã±ãŒã·ã§ã³ãæžããããªããšæããŸãïŒ XSSã¯ãäžããåãã¡ã¢ãªãäºéã«è§£æŸãããªã©ã®è匱æ§ãè¿œå ããã®ã«ååã§ãã
解決çãããåé¡ãåãå ¥ããæ¹ãåžžã«ç°¡åã§ããã倧äžå€«ã§ã-ïŒããå€ãã®ïŒççŸããè«æãæåºããæãæ¥ãŸããã ç§ã®å人çãªNewWebèšèšã®äžæ žã¯JVMã§ãã ããã¯ç§ãç¥ã£ãŠãã人ãé©ããããã®ã§ã¯ãããŸããã ãªãJVMãªã®ãïŒ
- HotSpotã¯ãä»ã®ä»®æ³ãã·ã³ãããå€ãã®ç°ãªãããã°ã©ãã³ã°èšèªããµããŒãããŸãããŸããäœã³ã¹ãã®ååã«ããããªãŒãã³ãœãŒã¹ã³ãŒããæ倧éã«äœ¿çšããããšãã§ããŸãã
ã¯ããããã¯ã Ruby ã Python ã Haskellã«å ããŠJavaScriptã ïŒé«éã§ïŒäœ¿çšããæ©èœãæ®ããããšããããšãæå³ããŸããCãC ++ãããã³Rustãã²ãŒã ã«æ®ããŸãã ããã¯ãã¹ãŠãGraalãšTruffleãšãã2ã€ã®éåžžã«ã¯ãŒã«ãªãããžã§ã¯ãã®ãããã§å¯èœã«ãªããŸããã ãããã®ãããžã§ã¯ãã«ãããJVMã¯ä»®æ³åç°å¢ã§äºæããªãèšèªïŒRustãªã©ïŒã®ã³ãŒããè¿ éãã€çžäºéçšå¯èœã«å®è¡ã§ããŸãã ç§ã¯ãéåžžã«å€ãã®èšèªãææ©çã«æ··åãããã®ãããªé«ãããã©ãŒãã³ã¹ã§ãããè¡ãä»ã®ä»®æ³ãã·ã³ãç¥ããŸããã - OpenJDKãµã³ãããã¯ã¹ã¯é·å¹Žã«ããã£ãŠé åºã«æ»æãããŠããŸããããã©ãŠã¶ãŒéçºè ã¯å€ãã®èŠçãªæèšãåŠã³ãŸããã æåŸã®0æ¥éã®ãšã¯ã¹ããã€ãã¯2015幎ã«ããã®ãŒãã以åã®ãšã¯ã¹ããã€ãã¯2013幎ã§ããã ãµã³ãããã¯ã¹ã§ã®5幎éã§ã®2ã€ã®0ãã€ãšã¯ã¹ããã€ã-ç§ã®æèŠã§ã¯ãæªãã¯ãããŸãããç¹ã«ãããããã®æèšãåŠç¿ãããé·æã«ããã£ãŠæ ¹æ¬çãªã»ãã¥ãªãã£ã®æ¹åãè¡ããããšèããŠããŸãã çæ³çãªè©å€ãæã€ãµã³ãããã¯ã¹ã¯ãªããããå®éã«ã¯ãã¹ãŠãå人çãªå¥œã¿ã«åž°çããŸã-ã©ã®ã¬ãã«ã®ã»ãã¥ãªãã£ã§ååãšèŠãªãããã¹ãã§ããïŒ
- PermazenãJavaFXãªã©ãããºã«ã®äž»èŠéšåãè¿œå ããé«å質ã®ã©ã€ãã©ãªãå€æ°ãããŸãã
- ããŸããŸJVMãããç¥ã£ãŠããã®ã§ãJVMããã¯ãšã³ãã«é©ããKotlinã奜ãã§ãã
å€ãã®äººãç§ã®éžæã«åæããªãããšãç解ããŠããŸãã åé¡ãããŸãã-PythonãV8ãGoãHaskellãªã©ãããªããæµ®ããã§ãããã®ã«åºã¥ããŠåãã¢ãŒããã¯ãã£ã®ã¢ã€ãã¢ãå®è£ ã§ããŸãã ãªãŒãã³ä»æ§ã§ç«¶åããå®è£ ïŒJVMãªã©ïŒãååšãããã®ãéžæããããšããå§ãããŸãã
Javaã«ã¯ãªãŒãã³ãœãŒã¹ããããããOracleããªã·ãŒã¯æ°ã«ããŸããã é«å質ã§é«æ§èœãªãªãŒãã³ãœãŒã¹ã©ã³ã¿ã€ã ã®äžã«ã¯ãéžæè¢ãã»ãšãã©ãããŸããã æ¢åã®ãããžã§ã¯ãã¯ãéå»ã«ç©è°ãéžã決å®ã«äžæºãæ±ãã倧äŒæ¥ã«ãã£ãŠäœæãããŠããŸãã éçºã®ããŸããŸãªæ®µéã§ãWebã¯MicrosoftãGoogleãMozillaãAppleã®åœ±é¿ãåãããçŽæ¥å¶åŸ¡ããããããŸããã ãããã¯ãã¹ãŠãç§ãéé£ã§ãããšèããè¡çºãã³ãããããŸãããããã¯å€§äŒæ¥ã®ç¹åŸŽã§ãã ããªãã¯åœŒãã®è¡åã«åžžã«åæããããããŸããã ãªã©ã¯ã«ã人æ°ã³ã³ãã¹ãã«åã€ããšã¯ãŸããããŸãããããªãŒãã³ãœãŒã¹ã®å©ç¹ã¯ããã«åå ããå¿ èŠããªãããšã§ãã
å ·äœçã«ã¯ãGoogle ChromeããäœããåããŸãã ç§ã®ã¢ããªã±ãŒã·ã§ã³ãã©ãŠã¶ã¯WebGLïŒeGLãªã©ïŒãšåçã®ãã®ããµããŒãããå¿ èŠããããChromium ANGLEãããžã§ã¯ãã¯ãã®ç®çã«é©ããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ãã©ãŠã¶ãŒã¯ãChromeã®ããã«ãµã€ã¬ã³ãã«èªåçã«æŽæ°ããå¿ èŠããããGoogleèªåæŽæ°ãšã³ãžã³ãç¡æã©ã€ã»ã³ã¹ã§é åžãããŸãã æçµçã«ãPack200圢åŒã¯ã³ãŒããå€§å¹ ã«å§çž®ããŸããã Zopfliã®ãããªé«å質ã®ã³ãŒããã¯ã䜿çšããŠã害ã¯ãããŸããã
RPC
ãã€ããªããŒã¿æ§é ã§ã¯äžååã§ãã ãã€ããªãããã³ã«ãå¿ èŠã§ãã ã¯ã©ã€ã¢ã³ãããµãŒããŒã«æ¥ç¶ããæšæºçãªæ¹æ³ã¯RPCã§ãã
çŸåšãè±åœã§æãã¯ãŒã«ãªã¹ã¿ãŒãã¢ããã®1ã€ã¯Improbableã§ãã éçºè ã¯æè¿ããã©ãŠã¶ãããµãŒããŒã«REST + JSONããgRPC + protobufã«åãæ¿ããæ¹æ³ã«é¢ããçŽ æŽãããããã°æçš¿ãæçš¿ããŸãã ã ããåŸãªãããšã¯ãçµæããå®å šãªã¿ã€ãã³ã°ã®irããšèª¬æããŠããŸãã ãã©ãŠã¶ã¯ãHTTP + XMLãŸãã¯JSONã»ã©ç°¡åã«ããã«å¯ŸåŠã§ããŸããããå¿ èŠãªJavaScriptã©ã€ãã©ãªã䜿çšããŠãå¿ èŠãªã¹ã¿ãã¯ãäžçªäžã«åºå®ã§ããŸãã ããã¯è¯ãèãã§ãã ç§ãã¡å šå¡ãWebã¢ããªã±ãŒã·ã§ã³ãäœæããçŸå®ã®äžçã«æ»ã£ãå Žåããã®ãªãã·ã§ã³ãå¿ ãæ€èšããå¿ èŠããããŸãã
RPCãããã³ã«ã¯æ¢åã®çµéšã䜿çšããå¿ èŠããããŸãã ç§ã®çæ³çãªRPCã¯ä»¥äžããµããŒãããŠããŸãïŒ
- å ç©ïŒçŽæïŒãšReactiveX Observablesã®ãªã¿ãŒã³ãããã«ãããããã·ã¥ã€ãã³ããèªç¶ãªæ¹æ³ã§ãããŒããã£ã¹ãã§ããŸãã
- ãµã€ãºã倧ãããŸãã¯ç¡éã®ãã€ãã¹ããªãŒã ãè¿ãïŒããšãã°ãã©ã€ããããªã¹ããªãŒã ã®å ŽåïŒã
- äœ/é«åªå 床ã§ãã©ãã£ãã¯ãéä¿¡ãããšãã®ãããŒå¶åŸ¡ã
- ããŒãžã§ã³ç®¡çãã€ã³ã¿ãŒãã§ãŒã¹ã®é²åãåãã§ãã¯ã
ç¹°ãè¿ããŸãããCordaãããžã§ã¯ãã§ã¯ããŸãã«ãããã®ããããã£ãæã€RPCã¹ã¿ãã¯ãèšèšããŠããŸãã åå¥ã®ã©ã€ãã©ãªãšããŠã¯ãŸã ãªãªãŒã¹ããŠããŸããããå°æ¥çã«ã¯ãªãªãŒã¹ããäºå®ã§ãã
HTTP / 2ã¯ãWebã®ææ°ãã€æã粟巧ãªéšåã®1ã€ã§ãããããªããŸãšããªãã¬ãŒã ãã©ã³ã¹ããŒããããã³ã«ã§ãã ãããã圌ã¯HTTPã¹ã©ãã·ã¥ããå€ãã®ãžã£ã³ã¯ãç¶æ¿ããŸããã ãšã«ãã決ããŠäœ¿çšãããªãHTTPã¡ãœãããæŸæ£ãããšããããã³ã°ãå¯èœã«ãªãããšãæ³åããŠãã ãã ã ç¶æ ãèšè¿°ããããã®å¥åŠãªHTTPã¢ãããŒãã¯å¿ èŠãããŸããã HTTPèªäœã¯å®è¡äžã«ç¶æ ãå€æŽããŸããããã¢ããªã±ãŒã·ã§ã³ã¯ã¹ããŒããã«ã»ãã·ã§ã³ãå¿ èŠãšãããããã¢ããªã±ãŒã·ã§ã³éçºè ã¯ãç°¡åã«çãCookieãããŒã¯ã³ãªã©ã®ããã·ã¥ããã·ã¥ã䜿çšããŠããããã³ã«ã®äžã«ç¬èªã®å®è£ ãè¿œå ããå¿ èŠããããŸãã ããã¯ã ã»ãã·ã§ã³ã³ãããæ»æãªã©ã®åé¡ãåŒãèµ·ãããŸãã
ãã¹ãŠãããæ確ã«ã¬ã€ã€ãŒã«åå²ããããšããå§ãããŸãã
- æå·åãèªèšŒãããã³ã»ãã·ã§ã³ç®¡çã TLSã¯ããªãè¯ãä»äºãããŸãã ãã®ãŸãŸäœ¿çšã§ããŸãã
- ãã©ã³ã¹ããŒãããã³ãããŒå¶åŸ¡ã HTTP / 2ããããè¡ããŸãããAMQPã®ãããªã¡ãã»ãŒãžã³ã°ãããã³ã«ãä»äºãè¡ããã¬ã¬ã·ãŒã®è² æ ããããŸããã
- RPC
æããã«ãRPCã¹ã¿ãã¯ã¯ããŒã¿æ§é ãã¬ãŒã ã¯ãŒã¯ãšçµ±åãããŠããããããã¹ãŠã®ããŒã¿è»¢éãå ¥åãããŸãã éçºè ãæåã§è§£æãè¡ãå¿ èŠã¯ãããŸããã RPCã®åœåã¯ãåçŽãªæååæ¯èŒã§ãã ãããã£ãŠãçŸåšã®ãã£ã¬ã¯ããªãçµäºããããšã«ããè匱æ§ã¯ãããŸããïŒãã¹ãã©ããŒãµã«ïŒã
ãŠãŒã¶ãŒèªèšŒãšã»ãã·ã§ã³
NewWebã¯Cookieã䜿çšããŸããã ã»ãã·ã§ã³ã®èå¥ã«ã¯ãå ¬ééµãšç§å¯éµã®ãã¢ãé©ããŠããŸãã Webã¯ãã®æ¹åã«é²ã¿ãŸãããæ¢åã®Webã¢ããªã±ãŒã·ã§ã³ãšã®äºææ§ãç¶æããããã«ãCookieãªã©ã®ææè ã®ããŒã¯ã³ããã¹ãæå·åã»ãã·ã§ã³ã«æ¥ç¶ãããè€éãªããã€ã³ãã£ã³ã°ãã¹ããŒãžãå¿ èŠã§ããããã«ãããéèŠãªã»ãã¥ãªãã£ã³ã³ããŒãã³ããããã«è€éã«ãªããŸããå®å šãªåèšèšã ã»ãã·ã§ã³ã¯ãå ¬ééµã«ãã£ãŠã®ã¿ãµãŒããŒåŽã§èå¥ãããŸãã
ãŠãŒã¶ãŒèªèšŒã¯ãWebã¢ããªã±ãŒã·ã§ã³ã«é©åã«å®è£ ããã®ãé£ããæãé£ããããšã®1ã€ã§ãã 以åã«ãã®ããŒãã«ã€ããŠããã€ãã®èããè¿°ã¹ãã®ã§ãç¹°ãè¿ãã¯ããŸããã ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã§ãã€ãŒã«ãåžžã«åçºæããããããã»ãã·ã§ã³ãããŒã¹ãã©ãããã©ãŒã åŽã®ã¡ãŒã«ã¢ãã¬ã¹ã«ãã€ã³ãããæ¹ãè¯ããšèšãã°ååã§ãã ã¯ã©ã€ã¢ã³ãåŽã®TLS蚌ææžã¯ãåºæ¬çãªã·ã³ã°ã«ãµã€ã³ãªã³ã·ã¹ãã ãå®è£ ããã®ã«ååã§ããããã¬ã¿ãŒãéä¿¡ããåä¿¡ããå Žåã¯èšŒææžã«çœ²åããããªã©ã®ã¯ãŒã¯ãããŒã¯éåžžã«å®äŸ¡ã§ãããããLet's Encryptã¹ã¿ã€ã«ã®ç¡æ蚌ææžã®ãããã€ããŒã¯éåžžã«çŸå®çã§ãã
ãã®ã¢ãããŒãã¯æ¢åã®ãã¯ãããžãŒã«åºã¥ããŠããŸããããã£ãã·ã³ã°ããã¹ã¯ãŒãã«ããããŒã¿ããŒã¹ã®ã¯ã©ããã³ã°ããã«ãŒããã©ãŒã¹ãããã³ãã®ä»ã®å€ãã®ã»ãã¥ãªãã£é¢é£ã®åé¡ãå€§å¹ ã«åæžããŸãã
ãããã«
Webãšç«¶åããããã©ãããã©ãŒã ã¯ãã»ãã¥ãªãã£ã®åé¡ã«çå£ã«åãçµãå¿ èŠããããŸããããã¯ããã®äœæãšç«¶äºäžã®åªäœæ§ã®ããã®æãéèŠãªæ£åœåã§ããããã§ãã ããã¯ããŠã§ãäžã§ç°¡åã«ä¿®æ£ã§ããªãäž»ãªãã®ã§ãã ã€ãŸããå®å šãªã¿ã€ãã³ã°ãšãã€ããªAPIãåãããã€ããªããŒã¿æ§é ãRPCãæå·åã»ãã·ã§ã³ããŠãŒã¶ãŒèå¥ãå¿ èŠã§ãã
ãŸããæ°ããWebã«ã¯ããµã³ãããã¯ã¹ãšã¹ããªãŒãã³ã°ã³ã³ãã³ãã§ã®ã³ãŒãåé¢ãåªããã¬ã€ã¢ãŠããåããUIããããŸãããåæã«å¿çæ§ãé«ããã¹ã¿ã€ã«ããµããŒããããŠããŸããWebãšåãããã«ããã¥ã¡ã³ããšã¢ããªã±ãŒã·ã§ã³ãæ··åšãããæ¹æ³ãããã³éåžžã«çç£çãªéçºç°å¢ã§ããæ°ãããŠã§ãã®ããªã·ãŒãæ€èšããå¿ èŠããããŸãã
ãããã®åé¡ã«ã€ããŠã¯ã次ã®èšäºã§èª¬æããŸãã