ãšã³ããªãŒ
ãã®èšäºã¯ãæ±çšçãªå®éšæè¡ã¹ã¿ãã¯ã«é¢ãããã®ã§ãã 圌女ã¯OdessaJS 2016ã«ã³ãã¡ã¬ã³ã¹ã§ã®ç§ã®ã¬ããŒããè€è£œããã ãã§ãªããæéã®äžè¶³ãšãããã¯ã®äŸå€çãªã¹ã±ãŒã«ã®ããã«ã¬ããŒããé©åããªãã£ããã¹ãŠã®ãã®ãå«ãã§ããŸãã èšäºã®æ¬æã«é³å£°ã§ã¬ããŒããæžãçŽããããšããããŸãããããã¯èªãããšã§ã¯ãªãèãããšãã§ããŸãã ç§ã¯ãã§ã«æŠæŒ¢å€§åŠ ïŒäžåœïŒã§ãã®ãããã¯ã«ã€ããŠè©±ãã ããšãå·¥ç§å€§åŠã§2015幎ãã2016幎ã«äžé£ã®ã»ãããŒãéå¬ããŸããã äž»ãªã¢ã€ãã¢ã¯ãæè¡ã®æçåã®åé¡ã¯ãæè¡ã¹ã¿ãã¯å šäœãèšèšããããŒã¿æ§é ãæ§æãã³ã³ããŒãã³ãçžäºäœçšã®ãããã³ã«ã«éäžããããšã§è§£æ±ºã§ãããšããããšã§ãã éäºææ§ã®åé¡ã®ã»ãšãã©ã¯èªç¶ã«æ¶ããŸãã ãã®ã¢ãããŒãã代æ¿çãã€å®éšçã§ãã£ãŠãããã¹ã®æŠèŠã瀺ããã·ã³ãã«ã§ãšã¬ã¬ã³ããªæ±çšãœãªã¥ãŒã·ã§ã³ãäœæããåºæ¬çãªå¯èœæ§ãå®èšŒããã°ããã®ã¿ã¹ã¯ã¯å®äºããŸãã ãã®ã¢ã€ãã¢ã¯ãã·ã¹ãã å ã®èšèªãšãã¯ãããžãŒã®æ°ãæžãããã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ãJavaScriptã§éçºãããšãã®Node.jsã¢ãããŒãã®èªç¶ãªç¶ç¶ã§ãã å®éšã«ãé¢ããããJSTPãããã³ã«ã¯ãããšãã°SinceTVã®ã€ã³ã¿ã©ã¯ãã£ããã¬ããªã©ã®åçšè£œåã§æ¢ã«äœ¿çšãããŠãããæ°åäžäººã®ãŠãŒã¶ãŒãåæã«æ¥ç¶ã§ããŸãã ãã®æ±ºå®ã¯ãäžåœæéœã§éå¬ããããŽãŒã«ãã³ãã³ãã¢ã¯ãŒã2015ã§ãã¬ãã€ãããŒã·ã§ã³è³ãåè³ããŸããã ãµãŒããŒã¯ã©ã¹ã¿ãŒç®¡çã®åéã«ã¯å®è£ ãããããœãªã¥ãŒã·ã§ã³ã¯å»çãã€ã³ã¿ã©ã¯ãã£ãã²ãŒã ãé»ååååŒããã³ãµãŒãã¹åãã«æºåãããŠããŸãã
ã¹ã©ã€ã / é³å£°ããŒãžã§ã³
æ§èœ
ããã«ã¡ã¯ãç§ã®ååã¯ãã£ã ãŒã«ã·ã§ã ã»ãã£ããã§ããç§ã¯å»ºç¯å®¶ã®SinceTVãNode.jsã®Impress Application Serverã®èè ãã·ã¹ãã ãã¯ãããžãŒç 究æã®ç 究è ãKPIã®æåž«ã§ãã ä»æ¥ã®ãããã¯ã¯ããŒãã«ã€ããŠã§ã¯ãªããããŒãã®åºç€ã圢æããã¢ã€ãã¢ã®éçºã«ã€ããŠã§ãã
Webã ãã§ãªãã¢ããªã±ãŒã·ã§ã³ãéçºãã人ã¯èª°ã§ããæè¡ã¹ã¿ãã¯ã®è€éããééããåé¡ã®éããããŠæçµçã«ã¯éçºã®é床ããã¢ãã€ã«ããã€ã¹ããã¹ã¯ãããçšã®ãŠã£ã³ããŠã¢ããªã±ãŒã·ã§ã³ãã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒãŸãã¯çµã¿èŸŒã¿æè¡ãããã°ã©ãã³ã°ãšåæ§ã®è€éãªãããžã§ã¯ããšç°¡åã«æ¯èŒã§ããŸããµãŒããŒããã³ç£æ¥ãªãŒãã¡ãŒã·ã§ã³ãããŒã¿åŠçããŸãã¯ãã®ä»ã®ããã°ã©ãã³ã°ã¢ããªã±ãŒã·ã§ã³çšã
Webäžã®ãã¹ãŠã®ã¹ãããã¯éäºã§ããã1åããšã¯çã¿ã§ããããã¹ãŠã®è¡ã¯åŠ¥åãŸãã¯ãããã§ãã ã€ã³ã¿ãŒãããã«ã¯ã«ãªã¹ãèæœåããWebãåžå·»ããŠããå€ãã®èšäºããããåªç§ãªå°é家ã¯ãã¿ã³ã3ãã¯ã»ã«äžã«ç§»åãããããã©ãŠã¶åç©åã§ããŸãããã°ãèŠã€ãããªã©ã®ç°¡åãªã¿ã¹ã¯ã«æ°é±éãè²»ãããŠããŸãã ããšãã°ã ãç§ã¯Webéçºè ã§ãéå»10æ¥éã§æãã·ã³ãã«ãªã¢ããªã«ãã ãã£ãããšããã¡ãã£ã¢ã®èšäºã¯ã ãç§ã¯Webéçºè ã§ããã10æ¥éã¯æãã·ã³ãã«ãªã¢ããªã±ãŒã·ã§ã³ãæžãããšã¯ã§ããŸãã ã ã
åé¡ã¯äœã§ããïŒ ã©ãããã°ãããèå¥ããŠèªèããããšãã§ããŸããïŒ ä»ã®æ¹æ³ã¯ãããŸããïŒ ãããŠãé©åœçãªåãã§ã¯ãªãé²åçã«åããéšåã®åé¡ã解決ã§ããŸããïŒ ããã«ã€ããŠã¯ãç§ãšããŒã å šäœãæºåããŠããäžé£ã®ã¬ããŒããšèšäºã§ããã«è°è«ããŸãã
èæœåãããŠã§ãã¯ããã¹ãŠã®ãœãªã¥ãŒã·ã§ã³ãäžæçãªç¶æ ã«é¥ãã1幎以äžãã®éãä¿®æ£ããã«å®å®ããç掻ãéãããšã¯ã§ããŸããã ã·ã¹ãã ãå€æŽããã«ãã®ãŸãŸã«ããŠãããšãããã«äœ¿çšã§ããªããªããŸãã ããã¯ãããŸããŸãªææã«éçºãããå€ãã®äŸåé¢ä¿ãšããããã®ãœãããŠã§ã¢ã¢ãžã¥ãŒã«ãäžç·ã«äœ¿çšãããããšãæ³å®ããŠããªãã£ãããŸããŸãªäººã ã«ãããã®ã§ãã èæœåããWebã®ãã¹ãŠã¯ãçµ±äžãããèšç»ãªãã«å¶ç¶ã«äœæããããã®ã§ãããäœæè ã¯æšæºã«æºæ ããŸããã ããã¯ãã¯ãããžãŒã®ã°ããŒãã«ãªæçåã§ãããä»ã®æ¹æ³ã§ã¯ããåŸãŸããããWebã®å€éšã§æ¢ã«èšèšãšã©ãŒãæåäŸãé¡äŒŒç©ãèŠããããããããªãåçŽãªãœãªã¥ãŒã·ã§ã³ãæäŸããããšæããŸãã ãã®éã¯ããªãã®äººçå šäœãå£ãããšã¯ãããŸããããããã§ãã·ã§ãã¯ãªãã§ç¥èŠãããã®ã«ååã«éæ¿ã§ãã
HTTPãHTMLãCSSãDOMãURLãXMLHttpRequestãAJAXãJSONãJSONPãXMLãRESTããµãŒããŒéä¿¡ã€ãã³ããCORSãCookieãMIMEãWebSocketãlocalStorageãindexedDBãWebSQLããã®ä»ãã¹ãŠããããããããšããŸã1ã€ã®ããšãé€ããŠãJavaScriptããã®ãŸãŸã«ããŠãã¢ããªã±ãŒã·ã§ã³éçºã«å¿ èŠãªJavaScriptããã¹ãŠäœæããŸãã äžèŠãããã¯å¥åŠã«æãããããããŸãããããã®åŸãã©ã®ããã«è¡ããã瀺ããŸãã ããã¯ãJavaScriptã®ã¿ã«åºã¥ããå®å šãªæè¡ã¹ã¿ãã¯ã§ãããæ°ã«å ¥ã£ãŠããã ããã§ãããã ãã¡ãããä»ã®ãã¯ãããžãŒã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ã©ã³ã¿ã€ã ãäœæããŸããããããã®å éšã¯ãã¹ãŠã¢ããªã±ãŒã·ã§ã³éçºè ããé ãããŸãã
ãã®ãããå¹ åºãã¢ããªã±ãŒã·ã§ã³ã®æŠèŠã説æããããšã§ãå®éšçãªæè¡ã¹ã¿ãã¯ã®èšèšãéå§ã ãäžé£ã®æè¡ãšãããã®èŠä»¶ã決å®ããŸãã äžè¬çã«åãå ¥ããããŠããå®è£ æ¹æ³ãæ€èšãããããã®é倧ãªæ¬ ç¹ãç¹å®ããåŸãå¯èœãªä»£æ¿ãªãã·ã§ã³ã«ã€ããŠæ€èšããŸãã
ç§ãã¡ã¯ãããžãã¹ãçµæžãæè²ãå»åŠãäŒæ¥æ å ±ã·ã¹ãã ããã³ç®¡çã·ã¹ãã ãé»ååååŒãå人ããã³ã°ã«ãŒãã³ãã¥ãã±ãŒã·ã§ã³ããœãŒã·ã£ã«ãããã¯ãŒã¯ãã²ãŒã ã¢ããªã±ãŒã·ã§ã³ããã¬ããªã©ã®åéã®æ å ±ã·ã¹ãã çšã¢ããªã±ãŒã·ã§ã³ãœãããŠã§ã¢ãéçºããããšèããŠããŸãã ã
ãããã®ã·ã¹ãã ã¯æ¬¡ã®ãšããã§ãã
- åæ£ïŒå€ãã®ã¯ã©ã€ã¢ã³ã端æ«ããã€ã¹ãšå€ãã®ãµãŒããŒãå«ãïŒã
- é«è² è·ïŒæ°ååã®åææ¥ç¶ãŠãŒã¶ãŒããã€ã¹ã§åäœããå¯èœæ§ãããïŒ
- ã€ã³ã¿ã©ã¯ãã£ãïŒãªã¢ã«ã¿ã€ã ã«è¿ãåæ¹åã®åæ¹åæ§ããµããŒãïŒã
- å®å šïŒåæã«å¿åã§ãç¹å®ã®æäœã«ååãªã¬ãã«ã®èå¥ãšä¿¡é ŒãæäŸããïŒã
- æè»ã«å€æŽããïŒç»é¢ãæ©èœãããã³ããŒã¿æ§é ããã®å Žã§å€æŽããåã€ã³ã¹ããŒã«ããã³åèµ·åããå¿ èŠã¯ãããŸããïŒã
ä»æ¥ããã®ãããªã¢ããªã±ãŒã·ã§ã³ãéçºã§ãããã¯ãããžãŒã䜿çšããŠã以äžããªã¹ãããŸãã
- AWTãSWINGãWinFormsãWPFãQtãªã©ã䜿çšãããŠã£ã³ããŠããã³ããŒã«ã«ã«ã€ã³ã¹ããŒã«ãããã¢ããªã±ãŒã·ã§ã³ïŒLinuxãMacOSãWindowsçšïŒ
- ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ïŒiOSãAndroidãªã©ïŒ
- ãã©ãŠã¶ã®ã¢ãã€ã«ããŒãžã§ã³ã«é©åãããã®ãå«ãWebã¢ããªã±ãŒã·ã§ã³
- ããã°ã¬ãã·ãWebã¢ã㪠ïŒé衚瀺ã®ãã©ãŠã¶ãŒã§å®è¡ããããã«ã¹ã¯ãªãŒã³ã¢ããªã±ãŒã·ã§ã³ïŒ
- NW.jsãšElectron
ã€ãŸããç°ãªããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšã¢ãã€ã«ãã©ãããã©ãŒã ã«å¯ŸããŠãåãã¢ããªã±ãŒã·ã§ã³ãç°ãªãæè¡ã¹ã¿ãã¯ã«äœåºŠãå®è£ ããå¿ èŠããããŸãã åãã€ã³ã¿ãŒãã§ã€ã¹ãåãæ©èœãæ°åå®è£ ããã ãã§ãªãããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãææ°ã®ç¶æ ã«ä¿ã¡ãªãããåæçã«å€æŽãå ããå¿ èŠããããŸãã ããã«å¯ŸããŠãWebã®å Žåã¯1ã€ã®ã¢ããªã±ãŒã·ã§ã³ã§ããããã¹ãŠã®ãã¯ãããžãŒã¹ã¿ãã¯ããããã³ã«ãã¬ã³ãã©ãŒãããã³åé¡ãåãããã±ãããã©ãŠã¶ãŒãåŒãåºããŸãã
Webã¯ã¯ãã¹ãã©ãããã©ãŒã ãœãªã¥ãŒã·ã§ã³ã«ãªãå¯èœæ§ããããŸãããèæœåãââãWebã«ã¯æ¬¡ã®ãããªãã¯ãããžãŒã»ããããããŸãã
HTTPããå§ããŸãããã ãããã¯ããŠããã®ã¯èª°ã«ãšã£ãŠãç§å¯ã§ã¯ãªããšæããŸãã ãã©ãŠã¶ã確ç«ãã1ã€ã®æ¥ç¶ãä»ããŠããµãŒããŒãžã®èŠæ±ã¯äžåºŠã«1ã€ããéä¿¡ã§ãããæ¥ç¶ã¯ãµãŒããŒãå¿çããã®ãåŸ ã¡ãŸãã HTTPã«ã¯ãªã¯ãšã¹ãã®çªå·ä»ãããªããããéåžžã®ãããªããã£ãã§ãæãåçŽãªçªå·ä»ãã¯ãªããéããŠããæ¥ç¶ãåŸ æ©ããŠããŸãã çµå±ã2çªç®ã®èŠæ±ãéä¿¡ããŠããåçãåãåã£ãå Žåãããã¯æ確ã§ã¯ãªããããã¯æåã®èŠæ±ãŸãã¯2çªç®ã®èŠæ±ã«å¯Ÿããåçã§ãã æ··åšããéšåã§ã®å¿çã®éä¿¡ã¯èšããŸã§ããããŸããã ããããã¢ããªã±ãŒã·ã§ã³ãããŒããããšããå€ãã®èŠæ±ãè¡ãå¿ èŠãããããã©ãŠã¶ã¯2çªç®ã®èŠæ±ã«å¯ŸããŠ2çªç®ã®æ¥ç¶ã確ç«ãã次ã«3çªç®ã®èŠæ±ã確ç«ããŸããã»ãšãã©ã®ãã©ãŠã¶ã§ã¯ããã®æ°ã¯6ã€ã®åææ¥ç¶ã«å¶éãããŸãã ã¹ã¿ãã£ãã¯ã®èªã¿èŸŒã¿çšã§ãAJAXã®å Žåã§ããããå€ãã®åæãªã¯ãšã¹ããè¡ãããšã¯ã§ããŸããã ãã¡ãããæŸèæãæ§ç¯ããªãéããå€ãã®ãµããã¡ã€ã³ãäœæãããµããã¡ã€ã³ã®èŠæ±ãåæ£ãããŸããããã¯ããã©ãŠã¶ãŒäžã®6ã€ã®æ¥ç¶ã®å¶éããã¹ãã«é¢é£ä»ããããŠããããã§ãã ãããããããã®æ°åããã³æ°çŸã®æ¥ç¶ã¯ããããã¯ãŒã¯ãéå¹ççã«äœ¿çšããŸãã
äžè¬ã«ãTCPã¯ä¿¡é Œæ§ã®é«ãé ä¿¡ãšé·æçãªçžäºäœçšãåæãšããŠããŸãããHTTPã¯é »ç¹ã«åæãããã§ã«ç¢ºç«ãããæ¥ç¶ãå¹ççã«åå©çšããæ¹æ³ãç¥ãããåžžã«åæããŠæ°ããæ¥ç¶ãäœæããŸãã ãã¡ãããããŒãã¢ã©ã€ãããããŸãããæå®ããã ãã§ãªããWebãµãŒããŒããã©ãŠã¶ãŒã§ãµããŒãããå¿ èŠããããéçºè ã¯ãããç¥ã£ãŠãããããŒãæ£ããäœæããŠåŠçããå¿ èŠããããŸãã éåžžãäœããæ¬ èœããŠããå Žåã管çè ã¯æã䜿ããã«ãéçºè ã¯ãã®å¯èœæ§ã«ã€ããŠèããŠããŸãããããã©ãŠã¶ãŒã«ã¯æ©èœããããŸãããä»æ§ããéžè±ããŠãããããKeep Aliveã¯ããŸãå¹æçã«æ©èœããŸããããµãŒããŒã¯ãã°ãã°ãã©ãŠã¶ãŒã«åæã§ããŸããæ¥ç¶ã¯ããŒãã¢ã©ã€ãã¢ãŒãã«ãªããŸããã ããã«ã€ããŠã¯æ¢ã«ã¬ããŒããäœæãã1幎åã«ã Node.jsã®ãã°ãä¿®æ£ãã誀ã£ãŠ2åããã©ãŒãã³ã¹ãäžããæ¹æ³ ããšããèšäºãæžããŸãããHTTPåäœã¯ããã©ãŠã¶ãŒã«ããéçºè ããŒã«ã§è¿œè·¡ã§ããŸãã HTTPã®æé©åã¯ç¬ç«ããã¿ã¹ã¯ã§ãããããã«äœ¿çšã§ãããã®ã§ããã誰ã«ãšã£ãŠãéèŠã§ã¯ãããŸããã
TCPæ¥ç¶ã®ç¢ºç«ã¯å°é£ãªã¿ã¹ã¯ã§ãããæ¢ã«éããŠãããœã±ãããä»ããŠæ å ±ãéä¿¡ãããããæéãããããŸãã ãŸããTCPã«å ããŠãæ°ããæ¥ç¶ã確ç«ãããšãHTTPã¯Cookieãå«ãããããŒãåéä¿¡ããŸãã ããããHTTPããããŒã¯gzipãæŒãããæ°åãããã€ããšæ°çŸãããã€ãã®ããããŒã倧èŠæš¡ãªãããžã§ã¯ãã®Cookieã«ä»éããããšãããã£ãŠããŸãã æ¯åããããŠã®ãããªäººã ã®ããã«ãéçã¯ãåãªã¯ãšã¹ãã§ã¯ãããŒãéä¿¡ããããšã§ããããã¹ãŠååŸããŠããŸãã 誰ãæ°ã«ããŸãã
HTTPã«ã¯å€ãã®åé¡ããããWebsocketãSSEãSPDYãHTTP / 2ãQUICã§è§£æ±ºããããšããŸãããããããã¯ãã¹ãŠèæœåããWebããç¶æ¿ãããç¡æ°ã®ç©ã«äŸåããŠããããããã®ãã¯ãããžãŒã¯ãããã蚱容å¯èœãªç¹æ§ãéæããŠããŸããã§ãããå¹ åºããµããŒãããããŸããã æ¢åã®ãã©ãã£ãã¯ãå§çž®ããå¥ã®ãã©ã³ã¹ããŒãå ã§å€éåããããšã¯ã§ããŸããããã©ãã£ãã¯æ§é ã¯å€æŽãããŸãããåãHTMLãAJAXãJSONã«ãªããŸããã¿ã¹ã¯ã¯ãã©ã³ã¹ããŒããä¿®æ£ããäœãå£ããã«ãã¹ãŠã®åãã¢ããªã±ãŒã·ã§ã³ãééãç¶ããããã§ãã ããããç®æšã¯éæãããŠãããããã¹ãŠãè€éã§ããã倧èŠæš¡ã«å®è£ ãããŠããããå®è£ äžã®é床ã®åäžã¯ããŸãç®ç«ã¡ãŸããã åçãã€å æ¬çã«ã誰ãåé¡ã解決ããããšããŸããã§ããã
ã²ãŒã ãã€ã³ã¹ã¿ã³ãã¡ãã»ã³ãžã£ãŒããã®ä»ã®ã€ã³ã¿ã©ã¯ãã£ãã¢ããªã±ãŒã·ã§ã³ã®å Žåãã©ã€ããªãã·ã§ã³ã¯Websocketã®1ã€ã ãã§ããããããã³ã«ã®ãã®ã¬ã€ã€ãŒã±ãŒãã¯éçã«éããŸããã IPãã±ãããããã¯ãHTTPã«åºã¥ãé·ãæ¥ç¶ã®ç¢ºç«ã䌎ãTCPã¹ããªãŒãã³ã°ã«åºã¥ããŠããŸã-ããããæ°žç¶çãªã·ã£ããããŠã³ãšWebsocketã«åºã¥ããã±ããã§ãããé·ãæ¥ç¶ã䌎ãã¹ããªãŒãã³ã°ã§ãã SSLãä»ããŠããããã¹ãŠãå®è¡ã§ããŸãã ãŸããç¹ã«ãããããã¹ããªãŒãã³ã°ãããã³ã¹ããªãŒãã³ã°ãããããã«åãæ¿ããå Žåãåã¬ã€ã€ãŒã¯ç¬èªã®ããããŒãè¿œå ããŠããŒã¿ãå€æããŸãã ããã¯æ£çŽãThisç¬ã®ãããªãã®ã§ãã
ãã®ãããã²ãŒã ãã€ã³ã¹ã¿ã³ãã¡ãã»ã³ãžã£ãŒã«ã¯ååãªã€ã³ã¿ã©ã¯ãã£ãæ§ããªãããšãå€ãããã°ããããé ä¿¡ã«å¿ èŠãªå¿çæ§ããªããå€ãã®ãªãŒããŒãããã³ã¹ããšé 延ããããå¿ èŠãªåž¯åå¹ ãéæããã®ã¯ããã»ã©ç°¡åã§ã¯ãããŸããã ãããã¯ã€ã³ã¿ã©ã¯ãã£ããªã¢ããªã±ãŒã·ã§ã³ã§ãããç¹ã«Webãœã±ãããæ°åäžã®åææ¥ç¶ã«ééçã«ã¹ã±ãŒãªã³ã°ããããã®åºãå©çšå¯èœãªåªããããŒã«ããªããšããäºå®ã®ããã«ãéçºã«ãã ãã£ãŠããŸãã æ°äžã®ååç©ãè¶ ããå¿ èŠããã人ã¯ããã§ã«èªåã§ãããè¡ã£ãŠããŸããè¯ãã¬ã·ãã¯ãããŸããã
åé¡ãšæŸèæã§ãã£ã±ãã®HTTPã¯ãåäžçŽã«å°éç¥èã䜿ã£ãŠèšäºããªã³ã¯ä»ãã§éä¿¡ããªãã£ãCERNã®åãªãã©ã·ãŒã®ITç©çåŠè ã«ãã£ãŠèšèšããããã®ã§ãããã¢ããªã±ãŒã·ã§ã³ãç¹ã«ã€ã³ã¿ã©ã¯ãã£ãã¢ããªã±ãŒã·ã§ã³ã«é©ããªãããšãèªããæã§ãéäžçãªããŒã¿äº€æã
HTMLã¯ãã¡ãããããŒãžã¬ã€ã¢ãŠãã«æé©ãªèšèªã§ãããè€éãªã°ã©ãã£ã«ã«ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ããŸãé©ããŠããŸããã DOMã®é床ãšã€ã³ã¿ãŒãã§ãŒã¹ã®å€æŽã«ããããã©ã³ã¶ã¯ã·ã§ã³æ§ã®æ¬ åŠã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®åºçã«ã€ãªãããŸãã ã¡ã¢ãªå ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãè¡šçŸããç»é¢ãåçã«å€æŽããããã«ãããåé·ã§äœéãªãã®ãæãä»ãã®ã¯å°é£ã§ãã ããã¯ãShadow DOMãReactãAngularãWebã³ã³ããŒãã³ãã§è§£æ±ºãããŸããããœãªã¥ãŒã·ã§ã³ãããå€ãã®åé¡ããããŸãã
ã¹ã±ãŒãªã³ã°ã«ã€ããŠããå°ã ã ãã¹ãŠã®äººã«éæãªãœãªã¥ãŒã·ã§ã³ãçŽæããRESTã¯ã代ããã«å·ãšååããæ©äŒãåããçŽæããããã®ãäœããŸããã§ããã 誰ãRESTã䜿çšããŠããªããããããäœã§ããããç解ããŠãã人ã¯ã»ãšãã©ããŸãããã誰ããREST APIãæã£ãŠãããšèšã£ãŠããŸãã URLã¯ãªããžã§ã¯ããŸãã¯ã¡ãœãããèå¥ããŸããïŒ PUTãPATCHãããã³DELETEã䜿çšãããŠããŸããïŒ APIåŒã³åºãã®ã·ãŒã±ã³ã¹ã¯éèŠã§ã¯ãããŸãããïŒ æ¯æããã·ã§ããã³ã°ã«ãŒãããã£ããããªãã€ã³ããŒã䜿çšããŠRESTã§äœæ¥ããã®ã¯èª°ã§ããïŒ ã»ãšãã©ãã¹ãŠã«AJAX APIãããããããåŒã³åºãå¿ èŠããããŸãã ãããŠãã¹ã±ãŒãªã³ã°ã®åé¡ã¯ã以åã®ããã«ãæ¯å解決ãããŸãã
詳现ã«é²ãã«ã¯ããŸãã«ãå€ãã®åé¡ãããã®ã§ ãããã§äž»èŠãªåé¡ãçããªã¹ãã§èŠçŽããŸãããã
- ã¢ããªã±ãŒã·ã§ã³ãœãããŠã§ã¢ã·ã¹ãã ã®ãã©ãããã©ãŒã ã¯æçåãããŠããŸã
- å€é¢šãªãŠã§ãæè¡ã¯ãã¯ãç§ãã¡ãæºè¶³ãããŸãã
- ãã¬ãŒã ã¯ãŒã¯ãšããŒã«ã¯å®å šã«äžå®å®ã§äºææ§ããããŸããã
- å€ãWebãããã³ã«ã«ã¯å€ãã®åé·æ§ãããããµãŒããŒã®ããã©ãŒãã³ã¹ãäœäžãããŸã
- 匷åºãªã»ãã¥ãªãã£åé¡ãšããã
ãã®çµæãç§ãã¡ã®ãœãããŠã§ã¢ã¯ããã«æ代é ãã«ãªããã·ã¹ãã ã®çµ±åã«é¢ãã絶ãéãªãåââé¡ãæ±ããŠããŸãã ç§ãã¡ã¯ãã¹ããã©ã¯ãã£ã¹ã䜿çšããæ©äŒããããŸãããã³ãŒãã®åå©çšã¯éåžžã«è€éã§ãããSisyphusã®åŽåã«éåœã¥ããããåžžã«åãããšãããçŽããŠããŸãã
å¿ èŠãªãã®ïŒ
- ãµãŒããŒã¢ããªã±ãŒã·ã§ã³ã©ã³ã¿ã€ã
- ãŠãŒã¶ãŒã³ã³ãã¥ãŒã¿ãŒã®ã¢ããªã±ãŒã·ã§ã³ã©ã³ã¿ã€ã
- ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã©ã³ã¿ã€ã
- ã€ã³ããã¹ãã¯ã·ã§ã³ãã€ãã³ãã¹ããªãŒã ããã€ããªã¹ããªãŒãã³ã°ããµããŒãããRPCããã³MQããã»ã¹ééä¿¡
- ã°ããŒãã«ãªã¢ãã¬ã¹ç©ºéãé åžãã·ã£ãŒãã£ã³ã°ãããã«äœ¿çšã§ããããŒã¿ããŒã¹ç®¡çã·ã¹ãã
- ããŒã¿ãšãŠãŒã¶ãŒã®åœåãšèå¥ã«é¢ããæ°ããèŠå
ããã¯ãã¯ãWebããŒãžã®ãããã¯ãŒã¯ã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³ãšããŒã¿ããŒã¹ã®ãããã¯ãŒã¯ã§ãã
ãããŠä»ãç§ã¯ãããå¯èœã§ããããšã瀺ããŸãã ç§ã¯ããã ããè¡ãå¿
èŠããããšã¯èšããŸããããç§ãã¡ã®ããŒã ã¯ãããã¿ã€ãã®åºæ¬çãªå¯èœæ§ãå®èšŒããŸãã
Metarhiaã¯ã次ã®æ°ãããã¯ãããžãŒã¹ã¿ãã¯ã§ãã
- å®éšçïŒæ°ããã¢ãããŒãã瀺ãããã®ã¿ïŒã
- 代æ¿ïŒäºææ§ãæ°ã«ããå¿ èŠã¯ãããŸããïŒ
- ãªãŒãã³ãœãŒã¹ïŒåçšãããžã§ã¯ãã§ãç¡æã§é åžããã³ç¡æã§é©çšã§ããŸããéçºã«åå ããã³ãã¥ããã£ã«ä¿®æ£èŠæ±ãéä¿¡ã§ããŸãïŒã
JavaScriptã«è¿ã¥ããŸããããããã·ã¥ãé åãã¹ã«ã©ãŒå€ãé¢æ°ãåŒãªã©ã®ããŒã¿æ§é ãèšè¿°ããããã®åªããæ§æããããŸãã ãŸããèšèªã®ããŒã¿æ§é ã«äžèŽããäžèŠãªããŒã¿ã®åããã±ãŒãžåãæé€ãããŠãããŒãµã«ãããã¯ãŒã¯ãããã³ã«ãå¿ èŠã§ãã ãšã³ãããŒãšã³ãã®ãããã³ã«ãå¿ èŠã§ããããã¯ããã¯ãããžã¹ã¿ãã¯å šäœãããŒã¿ããŒã¹ãã¯ã©ã€ã¢ã³ãã¡ã¢ãªããµãŒããŒã¡ã¢ãªãããã³ããã»ã¹éã®è»¢éäžã®ã·ãªã¢ã«å圢åŒã§ããããŸãã ãã®ãããJSONãXMLãYAMLãªã©ãå¿ èŠãªã®ã¯ããã®ãããªåœ¢åŒãJavaScriptèšèªã®ãµãã»ããã«ãªãåŸãå Žåã§ãã ãã ããæšæºçãªææ³ãæ£åŒãªææ³ã¯çºæããŠããŸããããã§ã«ãã¹ãŠãæã£ãŠããŸãã æŠããŠãããŒãµãŒã®æºåã¯ããã¹ãŠã®èšèªãšãã©ãããã©ãŒã ã§ãã§ã«å®è£ ãããŠããŸãã ããã«ã V8ã䜿çšããŠãããã¯ãŒã¯ãã±ããããŒãµãŒã«ããå Žåãçµ±èšçãªæé©åãé ãããã¯ã©ã¹ãããã³JSONãããæ¡éãã«é«éãªè§£æãåŸãããŸãã ãããéè² è·ã«ããªãããã«ããããŠèšå€§ãªã¬ããŒããäœæããããã«ãåŸã§ããã©ãŒãã³ã¹ãã¹ããå ¬éããŸãã
ãããã³ã«ããã·ã¹ãã ã®ãã¹ãŠã®ã³ã³ããŒãã³ããå¯çããäžå¿çãªã³ã¢ã«ããŸãã ãããããããã³ã«ã¯ååã§ã¯ãããŸãããã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ã®ã¹ã¿ãŒãã¢ããç°å¢ãå¿ èŠã§ãã Node.jsã®ã¢ã€ãã¢ãçºå±ãããããã«ãèšèªã ãã§ãªããèµ·åç°å¢ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã§ã»ãŒåäžã«ããå¿ èŠããããŸãã åãAPIããããã¯ãŒã¯ããã¡ã€ã«ã·ã¹ãã ãå ¥å/åºåããã€ã¹ãªã©ã®ãã©ãããã©ãŒã æ©èœã«ã¢ã¯ã»ã¹ã§ããŸãã ãã¡ããããã®APIã¯ã¢ããªã±ãŒã·ã§ã³ããå¶åŸ¡äžèœã«ã¢ã¯ã»ã¹ã§ãããã®ã§ãã£ãŠã¯ãªããŸããããã»ãã¥ãªãã£å¶éãå¿ èŠã§ãã ã¡ã¢ãªé åãšãã¡ã€ã«ã·ã¹ãã ã¯ãä»ã®èµ·åç°å¢ãšã®ã¡ãã»ãŒãžãæããªãä»®æ³ã®éãããµã³ãããã¯ã¹ã§ãªããã°ãªããŸããã ãã¹ãŠã®ã©ã€ãã©ãªãŒã¯ãããã°ã©ã èªäœã«ãã£ãŠããŒããããã®ã§ã¯ãªããInversion of ControlïŒIOCïŒã«ãã£ãŠDIãšããŠã©ã³ã¿ã€ã ã«ãã£ãŠå®è£ ãããå¿ èŠããããŸãã ã¢ããªã±ãŒã·ã§ã³ã®æš©éã¯å¶åŸ¡ããå¿ èŠããããŸããããŠãŒã¶ãŒãã¢ã¯ã»ã¹æš©ã«é¢ããŠé©åãªæ±ºå®ãäžãããšãã§ããªããããå¶åŸ¡ã¯ãŠãŒã¶ãŒã«ãšã¹ã«ã¬ãŒã·ã§ã³ããªãã§ãã ããã ãŠãŒã¶ãŒã¯ããã©ãã€ã¢ã«å°ãããŠãã¹ãŠãçŠæ¢ããããäžæ³šæã«å°ãããŠãã¹ãŠãèš±å¯ããåŸåããããŸãã
ãŸã ãåãJavaScript圢åŒã§ããŒã¿ãä¿åããDBMSãå¿ èŠã§ãã ããŒã¿ã¢ãã«ïŒãŸãã¯ã¹ããŒã ïŒãèšè¿°ããããã®èšèªãå¿ èŠã§ãã ããŒã¿æ§é ã«ã¯ã¯ãšãªèšèªãå¿ èŠã§ãã ããã2ã€ã®ã¯ãšãªèšèªã®æ§æãšããŠãåãJavaScriptæ§æã䜿çšã§ããŸãã æåŸã«ããããã¯ãŒã¯APIãšãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹GUIã®2çš®é¡ã®ã€ã³ã¿ãŒãã§ã€ã¹ãèšè¿°ããããã®èšèªãå¿ èŠã§ãã åãJavaScriptã®ãµãã»ããã¯ãç§ãã¡äž¡æ¹ã«ãšã£ãŠå®ç§ã§ãã
ããã§ã Metarhiaãã¯ãããžãŒã¹ã¿ãã¯ã®ã³ã³ããŒãã³ããäžèŠ§è¡šç€ºã§ããŸãã
- JSTP-JavaScript転éãããã³ã«
- Impress Application Server-ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒããµãŒããŒã©ã³ã¿ã€ã
- GS-ã°ããŒãã«ã¹ãã¬ãŒãž-ã°ããŒãã«ã«åæ£ãããããŒã¿ããŒã¹ç®¡çã·ã¹ãã
- ã³ã³ãœãŒã«-ã¢ããªã±ãŒã·ã§ã³ãã©ãŠã¶ãŒãã·ã³ã¯ã©ã€ã¢ã³ãããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã©ã³ã¿ã€ã
JavaScript転éãããã³ã«ã¯ãããŒã¿è¡šç€ºåœ¢åŒã ãã§ãªããç¹å¥ãªæ§é ãããããŒãããã±ãŒãžãããªãã¿ãåãããããã³ã«ã§ãããäžè¬ã«ããããã¯ãŒã¯ãä»ããã¢ããªã±ãŒã·ã§ã³ã®çžäºäœçšã«å¯ŸããŠééçãªå®è£ ãæäŸããŸãã JSTPã¯ã¯ã©ã€ã¢ã³ããšãµãŒããŒãçµ±åãããããã1ã€ã®ã·ãŒã ã¬ã¹ãªã¢ããªã±ãŒã·ã§ã³ã«ãªãããã«ããŸãã é¢æ°ãããŒã«ã«ã«ããã®ãšåãæ¹æ³ã§ãã€ã³ã¿ãŒãã§ã€ã¹ãå ±æããŠé¢æ°åŒã³åºããè¡ãããšãã§ããŸãã ããŒã«ã«æ©èœã¯åæããã³éåæã§ããããããã¯ãŒã¯äžã§å ±æãããæ©èœã¯åžžã«éåæã§ãããšããå¯äžã®å¶éããããŸãã JavaScriptã§æ £äŸãšãªã£ãŠããããã«ãæåŸã§ã¯ãªãæåŸã®åŒæ°ã§ååŸãããã³ãŒã«ããã¯ãéããŠããŒã¿ãè¿ããŸãã JSTPã¯ãEventEmitterã®ãããã¯ãŒã¯ã¢ããã°ã«ã©ãããããããããã¯ãŒã¯ãä»ããã€ãã³ãã®ãããŒããã£ã¹ãããµããŒãããŠããŸãã JSTPã«ã¯å€ãã®æ©èœããããŸãããããã§ã¯äž»ãªæ©èœãšå©ç¹ã®ã¿ã説æããŸãã
- åæ¹åæ§ã®çµã¿èŸŒã¿ãµããŒãïŒã€ãã³ãæåã®çžäºäœçšã®ãµããŒãïŒã
- 誰ããç¥ã£ãŠããã·ã³ãã«ã§ç解ãããã圢åŒïŒã·ãªã¢ã«åã®ããã®å¥ã®æšæºãèãåºãå¿ èŠã¯ãããŸããïŒã
- éåæåŒã³åºãïŒå€éåã§åäžã®æ¥ç¶ã䜿çšãããã³ããããã³ã°ååïŒã
- å¯èœãªéããªã¢ã«ã¿ã€ã ã«è¿ãåæ¹åã®çžäºäœçšã
- ãªã¢ã¯ãã£ãã€ã³ã¿ã©ã¯ã·ã§ã³ã®ååïŒãªã¢ã¯ãã£ãã¹ã¿ã€ã«ã®ã³ãŒããé åžã§ããŸãïŒã
- é ãã¯ã©ã¹V8ã®ã¡ã«ããºã ã䜿çšãããããã¯ãŒã¯ãã±ããã®è§£æã®æé©åã
- ã¡ã¿ããŒã¿ãã¢ãã«ïŒããŒã¿ã¹ããŒãïŒãã€ã³ããã¹ãã¯ã·ã§ã³ãããã³è¶³å Žã®äœ¿çšã
æåŸã®æ®µèœã«ã€ããŠè©³ãã説æããŸãã ã¡ã¿ããŒã¿ã«ãããã·ã¹ãã ãããæè»ã«ããã ãã§ãªããJSTPã®è§£æã«V8æé©åããã§ã«äœ¿çšããŠãããšããäºå®ã«å ããŠãã·ã¹ãã ãããã«æé©åããããšãã§ããŸãã ã»ãšãã©ã®ã·ãªã¢ã«å圢åŒã§ã¯ããã£ãŒã«ãåãéä¿¡ãããŸããJSONã§ã¯ã転éãããããŒã¿ã®åèšéã®20ïŒ ãã40ïŒ ã®å€§ãŸããªèŠç©ããã§å ããããŸããXMLã§ã¯ããã®å²åã¯ååããã¯ããã«é«ããªããŸãã ãã£ãŒã«ãåã¯ãæ³åäžã®äººéã®å¯èªæ§ã®ããã ãã®ãã®ã§ããã人ã ã¯ã©ããããã®é »åºŠã§XMLãŸãã¯JSONãèªã¿ãŸããïŒ JSTPã«ã¯2ã€ã®ã·ãªã¢ã«åãªãã·ã§ã³ããããŸããããã¯å®å šãªåœ¢åŒã§ãããç°¡ç¥åããããã®ã§ãããäœçœ®ããŒã¹ãã¬ãŒãžãæã€é åã«åºã¥ããŠæ§ç¯ãããŸãã ã€ãŸããã¹ããŒã ããã£ãŒã«ãåããããã®åããã®ä»ã®è£å©ã¡ã¿ããŒã¿ãæž¡ããŠãã¯ã©ã€ã¢ã³ãäžã§ãããã¿ã€ããæ§ç¯ããŸãã 次ã«ã é åã«ã·ãªã¢ã«åããããªããžã§ã¯ãã®å€ãã®ã€ã³ã¹ã¿ã³ã¹ãååŸããŸã ã ãã£ãŒã«ãåã¯éä¿¡ããããé åã®æ§é ã¯ãã²ãã¿ãŒãšã»ãã¿ãŒãå®çŸ©ãããŠãããããã¿ã€ãã®æ§é ã«äœçœ®çã«å¯Ÿå¿ããŠããŸãã é åã«ãããã¿ã€ããå²ãåœãŠãã ãã§ãé åã®ãŸãŸã§ããããã£ãŒã«ãã®ååã䜿çšããŠãã®ã€ã³ã¹ã¿ã³ã¹ãæäœã§ããŸãã æŠå¿µã³ãŒãã®äŸã¯ãã¡ãã§ãïŒ metarhia / JSQL / Examples / filterArray.js
ã¹ãã£ãã©ãŒã«ãã£ã³ã°ãšã€ã³ããã¹ãã¯ã·ã§ã³ã¯ ãã¯ã©ã€ã¢ã³ããšãµãŒããŒéïŒããã³äžè¬ã«ãä»»æã®ããã»ã¹ã2ã€ã®ãµãŒããŒããŸãã¯2ã€ã®ã¯ã©ã€ã¢ã³ãéïŒã®ééçãªæ¥ç¶ãæ§ç¯ããããã«äœ¿çšãããŸãã æ¥ç¶ããããšãã¡ãœãããšãã®ãã©ã¡ãŒã¿ãŒãæã€å ±æã€ã³ã¿ãŒãã§ãŒã¹ãèšè¿°ããã¡ã¿ããŒã¿ãåãå»ãããªã¢ãŒãAPIãæ§é çã«ç¹°ãè¿ãå察åŽã®ãããã·ãæ§ç¯ããŸãã ãã®ãããªãããã·ã¯ããŒã«ã«ã§äœ¿çšã§ããå®éã«ã¯ãªã¢ãŒãã€ã³ã¿ãŒãã§ã€ã¹ã§åäœããŸãã ãµããžã§ã¯ãé åã§äœæ¥ããããã«ãã¡ã¿ããã°ã©ãã³ã°ãšã¡ã¿ã¢ãã«ã®åç解éã䜿çšãããŸããããã«ã€ããŠã¯ããã§ã«å€ãã®èšäºãšã¬ããŒããäœæããŠããŸãïŒ 2014幎ãš2012 幎ã§ãïŒããæ°ããæè¡ã¹ã¿ãã¯ã§ã¡ã¿ããã°ã©ãã³ã°ã«é¢ããè³æãééããªãæºåããŸãã
Metarhiaãã¯ãããžãŒã¹ã¿ãã¯ãšJSTPã®åºæ¬çãªã³ã³ããŒãã³ããšããŠã®äž»ãªã¢ã€ãã¢ãæããã«ãªããŸããã
- ã¢ã«ãŽãªãºã ã§ã¯ãªãããŒã¿æ§é ã«çŠç¹ãåœãŠã
- ããŒã¿å€æã®æå°åïŒããŒã¿ããã£ã¹ã¯ãŸãã¯ããŒã¿ããŒã¹ã«æ°žç¶çã«ä¿åããããã®1ã€ã®åœ¢åŒããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®RAMã«ããŒã¿ã衚瀺ããããããã¯ãŒã¯çµç±ã§éä¿¡ããããã®ã·ãªã¢ã«åãšãããã³ã«ãããŒã¿ã¹ããŒã ã®èª¬æããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®èª¬æãããŒã¿ã¯ãšãªèšèªãã¢ããªã±ãŒã·ã§ã³ãšã·ã¹ãã éã®çµ±åããã³ããŒã¿äº€æçšã
Linus Torvaldsãèšãããã«ïŒãæªãããã°ã©ããŒã¯ã³ãŒããå¿é ããŸããè¯ãããã°ã©ããŒã¯ããŒã¿æ§é ãå¿é ããŸããã ãšãªãã¯ã»ã¬ã€ã¢ã³ãã¯ããã«æ£ç¢ºã«ãã¹ããŒããªããŒã¿æ§é ãšãã ã³ãŒãã¯ãã®éãããã¯ããã«ããŸãæ©èœããããšè¡šçŸããŸããã
JSTPã®ç°¡åãªäŸïŒ
- ããŒã¿æ§é ã®ã·ãªã¢ã«åïŒ{ååïŒ 'Marcus Aurelius'ãèªçïŒ '1990-02-15'}
- ãªããžã§ã¯ãã®å®å šãªã·ãªã¢ã«åïŒ{ååïŒ 'Marcus Aurelius'ãèªçïŒ '1990-02-15'ã幎霢ïŒïŒïŒ=> {...}}
- ã¡ã¿ããŒã¿ïŒ{ååïŒ 'æåå'ãç幎ææ¥ïŒ 'æ¥ä»'}
- ç°¡æœãªäœçœ®ã®ã·ãªã¢ã«åïŒ['Marcus Aurelius'ã '1990-02-15']
- ãããã¯ãŒã¯ãã±ããïŒ{callïŒ[17ã 'interface']ãmethodïŒ['Marcus Aurelius'ã '1990-02-15']}
XMLãCLEARãJSONãJSTPã®åãããŒã¿ã®èª¬æãæ¯èŒããŸãã
<oilPump name="PT004" displacement="constant" value="63" control= "automatic" status="working"> <flowMeter substance="fluid" recording="off" role="master" period="00:30" dataOutput="Parent.FT002.Verification"/> <outlet pressure="180" status=working"/> <failureSensors> <row><module>Seatings</module><indication>none</indication> <status>OK</status></row> <row><module>Flap01</module><indication>open</indication> <status>OK</status></row> <row><module>Flap02</module><indication>closed</indication> <status>overload</status></row> <row><module>Joint</module><indication>detach</indication> <status>OK</status></row> </failureSensors> </oilPump>
1: PT004:OilPump Displacement[constant] Value[63] Control[automatic] Status[working] 2: #FlowMeter Substance[fluid] Recording[off] Role[master] Period[00:30] DataOutput[Parent.FT002.Verification] 2: #Outlet Pressure[180] Status[working] 2: #FailureSensors:Table [Module,Indication,Status] 3: [Seatings,none,OK] 3: [Flap01,open,OK] 3: [Flap02,closed,overload] 3: [Joint,detach,OK]
{ "name": "PT004", "type": "OilPump", "displacement": "constant", "value": 63, "control": "automatic", "status":"working", "flowMeter": { "substance": "fluid", "recording": "off", "role": "master", "period": "00:30", "dataOutput": "Parent.FT002.Verification" }, "outlet": { "pressure": 180, "status": "working", "failureSensors": [ ["Module", "Indication", "Status"], ["Seatings", "none", "OK"], ["Flap01", "open", "OK"], ["Flap02", "closed", "overload"], ["Joint", "detach", "OK"] ] } }
{ name: "PT004", type: "OilPump", displacement: "constant", value: 63, control: "automatic", status:"working", flowMeter: { substance: "fluid", recording: "off", role: "master", period: "00:30", dataOutput: "Parent.FT002.Verification", }, outlet: { pressure: 180, status: "working", failureSensors: [ ["Module", "Indication", "Status"], ["Seatings", "none", "OK"], ["Flap01", "open", "OK"], ["Flap02", "closed", "overload"], ["Joint", "detach", "OK"] ] } }
ããŒã¿ã¹ããŒã ã䜿çšããŠæå°åãããJSTPã®äŸïŒ
["PT004","OilPump","constant",63,"automatic","working", ["fluid","off","master","00:30","Parent.FT002.Verification"], [180,"working",[["Module","Indication","Status"], ["Seatings","none","OK"],["Flap01","open","OK"], ["Flap02","closed","overload"], ["Joint","detach","OK"]]]]
ãããŠä»æ³šç®ãéããŠããã®ã¯ã Node.jsã®æãåçŽãªJSTPããŒãµãŒã¯æ¬¡ã®ãããªãã®ã§ãã
api.jstp.parse = (s) => { let sandbox = api.vm.createContext({}); let js = api.vm.createScript('(' + s + ')'); return js.runInNewContext(sandbox); };
5è¡ã®ã¿ã§ããã®äœ¿çšã¯ç°¡åã§æçœã§ãã
api.fs.readFile('./person.record', (e, s) => { let person = api.jstp.parse(s); console.dir(person); });
次ã«ãé¢æ°ãšåŒã䜿çšããããè€éãªJSTPã®äŸãèŠãŠã¿ãŸãããã
{ name: ['Marcus', 'Aurelius'].join(' '), passport: 'AE' + '127095', birth: { date: new Date('1990-02-15'), place: 'Rome' }, age: () => { let difference = new Date() - birth.date; return Math.floor(difference / 31536000000); }, address: { country: 'Ukraine', city: 'Kiev', zip: '03056', street: 'Pobedy', building: '37', floor: '1', room: '158' } }
ã芧ã®ãšãããé¢æ°ã¯ãªããžã§ã¯ãèªäœã®ãã£ãŒã«ãã«ã¢ã¯ã»ã¹ã§ããŸããããã®ããã«ã¯ããŒãµãŒããããã«å€æŽããå¿ èŠããããŸãã
api.jstp.parse = (s) => { let sandbox = vm.createContext({}); let js = vm.createScript('(' + s + ')'); let exported = js.runInNewContext(sandbox); for (let key in exported) { sandbox[key] = exported[key]; } return exported; };
çŸåšãç§ã®éçºããŒã ãšç¬ç«ããéçºè ã¯ãåæ°ä»¥äžã®èšèªåãã«JSTP SDKãæºåããŠããŸã ã è¿ãå°æ¥ãJSTPã®æ©èœãšããã©ãŒãã³ã¹ããã¹ãããŸãã 以äžã®ä»æ§ããŒãžã«åéããããªã³ã¯ããããŸããããã¹ãŠã§ã¯ãªãããªã³ã¯ãæŽæ°ãããŸãïŒ https : //github.com/metarhia/JSTP
çŸåšããã®ãããªå®è£ ããããŸãïŒ
- ãã©ãŠã¶çšã®JavaScript
- Node.jsããã³Impress Application Serverçšã®JavaScript
- STLããã³Qtã®Cããã³C ++
- iOSçšã®SwiftãšObjective-C
- Androidããã³JavaEEçšã®Java
- CïŒfor .NET
- PythonãHaskellãPHPãGoLang
åç §è³æ
- Metarhia https://github.com/metarhia
- JSTP https://github.com/metarhia/JSTP
- Impress https://github.com/metarhia/Impress
- ã°ããŒãã«ã¹ãã¬ãŒãžhttps://github.com/metarhia/GlobalStorage
- ã³ã³ãœãŒã«https://github.com/metarhia/Console
ãããã«
ãããŠæ¬¡åã¯ããã¯ãããžãŒã¹ã¿ãã¯ã®ä»ã®ã³ã³ããŒãã³ãã«ã€ããŠèª¬æããŸãã ãœãªã¥ãŒã·ã§ã³ãæããã«åçŽã§ããã«ãããããããããã¹ãããšã¯ãŸã ãããããããŸãã çµæãå®æçã«å ¬éããè² è·ãšä¿¡é Œæ§ã®ãã¹ããå®æœããæ©èœãšå¹çã®é¡äŒŒç©ãšæ¯èŒããããšããçŽæããŸãã ãããŸã§ã®ãšãããããããã¹ãŠã倧èŠæš¡ãªå®è£ ã«æšå¥šããããšã¯ã§ããŸãããã2016-2017幎ã®å¬ã«ã¯ããµã³ãã«ãå«ãSDKããªãªãŒã¹ããŸãã æ°å人ã®äººã ããSinceTVã®æ¯æŽãåããŠãããšãå·¥ç§å€§åŠã«ç¹å¥ã«äœæãããRïŒDã»ã³ã¿ãŒã§ããã«åãçµãã§ããŸãã ãã®ãããžã§ã¯ãããã©ããŒããŠããã ããã°ããããããªãã®ã圹ã«ç«ãŠã°å¹žãã§ãã éšåçãªå®è£ ã§ãããã§ã«çµæãåŸãããŠããŸãã ãæž èŽããããšãããããŸããã