
GoogleãéçºããGolangèšèªã¯ãæçµçã«JavaScriptïŒãŸãã¯ãããè¯ãã®ã¯Node.jsïŒãIoTã¢ããªã±ãŒã·ã§ã³ã®ç¯å²ããæŒãåºãå¯èœæ§ããããšããæèŠããããŸãã ããªããºãã¯æ¬åœã«ãã®æŠãã«åã€ããšãã§ããŸããïŒ GolangãšJSã®äž¡æ¹ãIoTãœãªã¥ãŒã·ã§ã³ã®é·æãšçæã詳ããèŠãŠã¿ãŸãããã
Javascript

ããã°ã©ãã³ã°èšèªã¯è¡ãæ¥ããŸãããJavaScriptã¯é·ãéæ®ã£ãŠããããã§ãã ããšããšéçºè ã«å«ãããŠããä»æ¥ããã®æé«çŽã®ããã°ã©ãã³ã°èšèªã¯ããã®é«ããªãœãŒã¹å¹çã®ããã«ã¢ãã®ã€ã³ã¿ãŒãããã§åºã䜿çšãããŠããŸãã IoTã¢ããªã±ãŒã·ã§ã³ã§JavaScriptã䜿çšãããããã¯ã¯éåžžã«åºç¯å²ã§ãããããã³ããšã³ããããã¯ãšã³ããããã³ãã®ä»ã®éçºæ®µéãå«ãŸããå¯èœæ§ããããããNode.jsã«çµã蟌ã¿ãŸãããã ãåç¥ã®ããã«ãJavaScriptã¯èšèªã§ãããNode.jsã¯ãœãããŠã§ã¢ãã©ãããã©ãŒã ã§ãã APIãä»ããŠå ¥å/åºåããã€ã¹ãšã®æè»ãªçžäºäœçšãèšå®ã§ããåé¡ã®è§£æ±ºã«å¿ èŠãªã©ã€ãã©ãªãæ¥ç¶ã§ããŸãã
Node.jsã¯ãã»ã³ãµãŒãã¬ãŒããŒãããŒã³ã³ããã€ã¯ãã·ã¹ãã ããã®ä»ã®æ¥ç¶ããã€ã¹ã®ãããã¯ãŒã¯ã®ç®¡çã«æé©ã§ãã ããã«ãããããã¹ãŠã®IoTããã€ã¹éã®çžäºäœçšãç¶æããããã«è€æ°ã®ã¿ã¹ã¯ãåŠçãããšããçŽ æŽãããä»äºãããŸãã éçºè ã¯ãIoTãœãããŠã§ã¢çšã®Node.jsã®å©ç¹ã¯ã䜿ãããããšåççãªã¡ã¢ãªèŠä»¶ã§ããããšã«åæããŸãã
TelefonicaãRightechãSalesforce IoT Cloudãªã©ã®äž»èŠãªIoTäŒæ¥ã¯åŒãç¶ãNode.jsããããžã§ã¯ãã«å®è£ ããŠãããããè¿ãå°æ¥ã®JavaScriptéçºè ã®éèŠã¯æžããªãããã§ãã
ãŽã©ã³

Goã¯ãªãŒãã³ãœãŒã¹ã®ããã°ã©ãã³ã°èšèªã§ãã JavaScriptã»ã©åºãã¯ãããŸãããããã§ã«IoTãã€ãæã«å ¥ããããšãã§ããŸããã ã»ãšãã©ã®ãã©ãããã©ãŒã ããã³ããã°ã©ãã³ã°èšèªãšåæ§ã«ãæ¢åã®ãœãªã¥ãŒã·ã§ã³ã«å¯Ÿããéçºè ã®äžæºã®çµæãšããŠçããŸããã Goã¯ãã¯ãŒã¯ãããŒãžã®æ°ããéçºè ã®å°å ¥ãä¿é²ããããã«äœæãããŸããããã®ããããã®äž»ãªæ©èœã®1ã€ã¯ãéçºã䜿çšãããã³èªã¿ãããã§ãã ãã®èšèªã«ã¯ã䞊è¡æ§ãšããã©ãŒãã³ã¹ã®ç¹ã§ã¡ãªããããããŸãããæ¯èŒççãæ©èœã»ããããããŸãã
ãŸãããã®æ©èœã¯æ¬¡ã®ãšããã§ãã
- å³å¯ãªåæå®ãããŒã¿åã¯ã³ã³ãã€ã«æ®µéã§èšå®ããããããèµ·ååã«ãããã®äžäžèŽã远跡ã§ããŸãã
- èšèªã¯ããå³å¯ã§ãããããæ§é ãããã°ããããããã£ãŠèªã¿ããããªããŸãã
- ãã®èšèªã¯ãDockerãKubernetesãªã©ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãœãããŠã§ã¢ã®éçºã«ç©æ¥µçã«äœ¿çšãããŠããŸãã Goã®ç¥èã¯ãå¿ èŠã«å¿ããŠããããã®ããŒã«ã®ããæ·±ãç 究ãå¯èœã«ããŸãã
- èšèªãšã³ã·ã¹ãã ã¯æ¯èŒçæ°ãããããåé¡ã®ããåé¡ã解決ããããã«èšèªéçºè ã®æè¡ãµããŒãã«é Œãããšãã§ããŸãã
䞊è¡æ§ãšããŒã¿ã®å ¥åºåãåæã«å®è¡ããæ©èœã¯Goã®éèŠãªå©ç¹ã®äžéšã§ãããããããã°ã©ãã¯éåžžãGolangãéžæããŠIoTã·ã¹ãã ã®éä¿¡ã¬ã€ã€ãŒãæ§ç¯ããŸãã ãŸãããã®èšèªã¯ããã®ã³ã°ããã³è§£æãµãŒãã¹ã®äœæã«æé©ã§ãã
Goã®ããã»ã©æçœã§ã¯ãªããã®ä»ã®å©ç¹ã¯æ¬¡ã®ãšããã§ãã
- ããŒã«ïŒããã¥ã¡ã³ã-GoDocããã³ã³ãŒãåæ-Race Detector;
- çµã¿èŸŒã¿ã®ãã¹ãããŒã«ïŒJavaScriptã§ãããžã§ã¯ãããã¹ãããããã®ãã¬ãŒã ã¯ãŒã¯ãéžæããããšããããšãããå Žåããã®å©ç¹ãç解ã§ããŸãïŒã
- Data Race Detectorã䜿çšãã䞊è¡ããã°ã©ãã³ã°ãžã®çå£ãªã¢ãããŒã
- å€ãã®JavaScriptããŒã«ããã©ãã€ã ãšã¯ç°ãªããå šå¡ãåŸãã¹ãçµ±äžã¹ã¿ã€ã«ã¬ã€ãïŒæ§é ãèŠåãã©ã€ãã©ãªã®ãã¹ããªã©ã決å®ãããšãã«ããŒã ã麻çºãããããšã§ç¥ãããŠããŸãïŒ
åã ã®åºæºã§æ¯èŒããŸãã

JavaScriptãšGoã¯ã©ã¡ããIoTãããžã§ã¯ãã«é©ããŠããããã§ãã ããã§ã¯ãNode.jsãšGoã®æ©èœãæ¯èŒããŠåè ã決ããŸãããã
æºæã æ¯èŒçè¥ããGoã¯ããªãæçããèšèªã§ãããããã«æåã¯å®å®ããŠãããäžäœäºææ§ããããšäœçœ®ä»ããããŠããŸããã Node.jsã«é¢ããŠã¯ãLTSïŒLong Time SupportïŒããŒãžã§ã³ãšãAPIãå€æŽãããææ°ããŒãžã§ã³ãããã³ãã©ãããã©ãŒã ããµããŒãããåºç¯ãªã³ãã¥ããã£ããããŸãã
ããã©ãŒãã³ã¹ã ã ãããã¯ãŒã¯ã®çžäºäœçšãšGoããã³Node.jsããŒã¿ããŒã¹ãšã®çžäºäœçšã®å®éã®æ¡ä»¶ã§ã¯ãåçã®çµæã瀺ãããŸãã
䞊è¡æ§ ããã§ã¯Goã確å®ã«åã¡ãŸãã軜éã®ã¹ããªãŒã ïŒãŽã«ãŒãã³ïŒã䜿çšããNode.jsã¯JavaScriptã€ãã³ãã«ãŒãã¡ã«ããºã ãç¶æ¿ããŸãããããã«ã¯æ¬ ç¹ããããŸãã
åŠç¿æ²ç·ã JavaScriptã®ãããã§ãæè¿ã®èª¿æ»ã«ãããšãNode.jsã¯æãæ¥éã«æé·ããŠããéçºèšèªã®1ã€ã«ãªããŸããã ãã®çç±ã¯ãç¿åŸã容æã§ããã詳现ãªããã¥ã¡ã³ããšå€§èŠæš¡ãªãªãŒãã³ã³ãã¥ããã£ã§ããããã§ãã Goãç°¡åã«ç¿åŸã§ããŸãã PW Engineã®èª¿æ»ã§ã¯ãã»ãšãã©ã®éçºè ãéåžžã«çŽæçã§ãããšèããŠããããšã瀺ãããŸãããããã¯ãäŒç€Ÿãã§ããã ãæ©ãæ°ããåŸæ¥å¡ãã¯ãŒã¯ãããŒã«å°å ¥ããå¿ èŠãããå Žåã«å€§ããªãã©ã¹ã§ãã ã ããããããåŒãåãã§ãã
ãšã©ãŒåŠçã ããã§ã¯æèŠãç°ãªããŸãã Goã¯ãæé»çãªtry \ catchãšã¯ç°ãªããæ瀺çãªãšã©ãŒãã§ãã¯ã䜿çšããŸãã ãã®ããããšã©ãŒãã§ãã¯ã¯å€§ãããªããŸããããšã©ãŒã®çºçå Žæã«è¿ããç¹å®ã®å Žæã§åé¡ãç¹å®ããããšãç®çãšããŠãããããããç解ãããããªããŸããGoã®2çªç®ã®ããŒãžã§ã³ã§ã¯ãcheck \ handleãè¿œå ããããšãçŽæããŸãã Node.jsã¯ãå€ãã®èšèªã«å ±éã®try \ catchååã䜿çšããŸãããç¹å®ã®å¶éããããŸãã
ããã³ããšã³ããšããã¯ãšã³ãã Goã¯äžŠåãµãŒãã¹ã®éçºãç®çãšããŠããããããµãŒããŒåŽã«æé©ã§ãã Goã«ã¯Beegoãgopherjsãªã©ã®Webã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ããããŸãããJavaScriptã䜿çšããŠææ°ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãäœæããæ¹ãã¯ããã«äŸ¿å©ã§ãã ããã«ãJSãããã³ããšã³ããæ¯é ããŠãããšããäºå®ã«åºã¥ããŠãåãèšèªã§ããã¯ãšã³ããšããã³ããšã³ãã®äž¡æ¹ããµããŒãããæ¹ãç°¡åã§ã-JavaScript
éçºè ã®éžæã çãã®äœå°ã¯ãããŸãããJavaScriptã¯äžçäžã®éçºè ã®ã¯ãŒã¯ãããŒã«é·ãéçµ±åãããŠãããããJavaScriptããããã®ãŸãŸã§ãã ãã¡ãããGoã¯æã人æ°ã®ãããã¯ãããžãŒã®ããã20ã«å ¥ããŸããããæ®å¿µãªããšã«ã人æ°ã®ç¹ã§ã¯JavaScriptã«ã¯ãŸã ã»ã©é ãç¶æ ã§ãã
åæ/éåæIOïŒåæ/éåæI / OïŒã Node.jsã¯ããã³ããããã³ã°I / Oã¢ãã«ã§æåã§ããããã«ããããªãœãŒã¹ã®ç¹ã§ç°¡åãã€å¹ççã«ãªããŸãã ããããã³ãŒãå ã®ç¡éã®ã³ãŒã«ããã¯ãå¥åŠãªã¹ã¿ãã¯ãã¬ãŒã¹ãªã©ã®æ¬ é¥ããããŸãã äžæ¹ãGoã¯ã¹ã±ãžã¥ãŒã©ã䜿çšããŠãOSãæäŸããããŸããŸãªããŒã«ã«äŸåããŠåææäœã䜿çšããããšãéçºè ã«æšå¥šããå¹çãé«ãããªãœãŒã¹ããããã³ã°ãåæžããŸãã
ããã€ã¹ã§äœæ¥ããŸãã NPMããã±ãŒãžãããŒãžã£ãŒã䜿çšãããšãNode.jsãRaspberry Piã Iskra Jsã BeagleBone Blackãªã©ã®ã·ã³ã°ã«ããŒãããã°ã©ãã³ã°ç°å¢ãšããŠå¹æçã«äœ¿çšã§ããŸãã NPMã«ã¯ãArduinoã Intel IoT Edison ãRaspberry Piã³ã³ãããŒã©ãŒçšã®çŽ80ã®ãªãŒãã³ãœãŒã¹ããã±ãŒãžãšãããŸããŸãªããã€ã¹ããã³Bluetoothã»ã³ãµãŒçšã®30以äžã®ããã±ãŒãžãå«ãŸããŠããŸãã Goã«é¢ããŠã¯ãLinuxã®ãã«ãã«ããå®è¡ãããããRaspberry PiããŒãã«é©ããŠããŸãã ãã ããArduinoã®ãããªäœé»åIoTããã€ã¹ã¯Goãã€ããªã§ã¯åäœããŸããã ããããGobotãã¬ãŒã ã¯ãŒã¯ãäœæãããçç±ã§ãã è€æ°ã®ãã©ãããã©ãŒã ãBluetooth LEããã€ã¹ãããã«ã¯NeuroSkyã€ã³ã¿ãŒãã§ã€ã¹ããµããŒãããŸãã
å³æžé€š ã©ã€ãã©ãªã®æ°ã«é¢ããŠèšãã°ãJavaScriptã¯ãã¡ããçžæãè¿åããŸãããæ°åŠãªã©ã®ç¹å®ã®åéã§ã¯ãGoã¯è€éãªæ°åŠãšããŒã¿åæãåŠçããããã®ãã匷åãªããŒã«ãäœæããŸããã
ãããã«
Golangã¯ã³ã³ãã€ã«ããããã«ãã¹ã¬ããããã°ã©ãã³ã°èšèªã§ãæ¥ç¶ãããã³ã³ãããŒã©ãŒã®ã·ã¹ãã å šäœãäœæããããŒã¿ããŒã¹ãå¹ççã«æäœã§ããŸãã JavaScriptã¯ãå¿çæéãçãéåææäœã«æé©ã§ãã çŸåšãããã2ã€ã®èšèªã¯äºææ§ã«ã¯ã»ã©é ãã JavaScriptã¯ãç¹ã«ã¢ãã®ã€ã³ã¿ãŒãããäžãå«ããäžçã§æã人æ°ã®ããèšèªã®ãŸãŸã§ãã 圌ã¯èªåã®ç«å Žããã£ãããšä¿æããŠãããè¿ãå°æ¥Golangã«å±ããå¯èœæ§ã¯äœãã§ãã ãããããã®é©æ°çã§ä¿¡é Œæ§ã®é«ãã¢ãããŒãã®ãããã§ãGoã¯IoTéçºæè¡ã®ãããããªãŒãããéåžžã«æããèŠéããæã£ãŠããŸãã