å ç¢ã§ã¹ã±ãŒã©ãã«ãªãžã§ããªãã¯ãšããžã³ã³ãã¥ãŒãã£ã³ã°ã·ã¹ãã ãæ§ç¯ããäžã§ãã¿ã€ãå®å šæ§ãæããéèŠãªåœ¹å²ãæ¢ããŸãã忣ç°å¢ã«ãããããŒã¿ã®ç Žæãé²ããä¿¡é Œæ§ã確ä¿ããããã®äž»èŠãªæŠç¥ãåŠã³ãŸãããã
ä¿¡é Œæ§ã®åºç€ïŒãžã§ããªãã¯ãšããžã³ã³ãã¥ãŒãã£ã³ã°ã«ããã忣åŠçã®ã¿ã€ãå®å šæ§ã®å®çŸ
ã³ã³ãã¥ãŒãã£ã³ã°ã®ãã©ãã€ã ã¯ã倧ããªå€é©ãéãã€ã€ãããŸããé·å¹Žãã¯ã©ãŠãã¯ããŒã¿åŠçã®äžå¿å°ã§ããã巚倧ãªåãæã€éäžåã®å·šäººã§ãããããããæ°ããªããã³ãã£ã¢ãæ¥éã«æ¡å€§ããŠããŸããããã¯ãšããžã§ãããšããžã³ã³ãã¥ãŒãã£ã³ã°âããŒã¿ã®çºçæºã«è¿ãå Žæã§åŠçãè¡ããšããå®è·µâã¯åãªããã¬ã³ãã§ã¯ãªããé©åœã§ããã¹ããŒãã·ãã£ãèªåé転è»ãã³ãã¯ããããã¡ã¯ããªãŒããªã¢ã«ã¿ã€ã ãã«ã¹ã±ã¢ããã€ã¹ãªã©ãæ¯ããŠããŸãããã®ã€ã³ããªãžã§ã³ã¹ã®åæ£åã¯ãäœé å»¶ããã©ã€ãã·ãŒã®åŒ·åãããã³ããé«ãéçšäžã®å埩åãçŽæããŸãããããããã®åæ£ãããåã«ã¯ãé ããããããŠæ·±ã課é¡ã䌎ããŸããããã¯ãåºå€§ã§ãç°ç𮿷·åšã§ããã°ãã°æ··æ²ãšãããšã³ã·ã¹ãã å šäœã§ããŒã¿æŽåæ§ãç¶æããããšã§ãããã®èª²é¡ã®äžå¿ã«ã¯ããœãããŠã§ã¢ãšã³ãžãã¢ã«ã¯éŠŽæã¿ãããããä»ãã°ããŒãã«ãªèŠæš¡ã«æ¡å€§ãããæŠå¿µããããŸããããã¯ã¿ã€ãå®å šæ§ã§ãã
åŸæ¥ã®ã¢ããªã·ãã¯ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãæŽæ°ãæåŸ ãã颿°ãæååãåãåããªãããã«ããããšã¯ãæšæºçã§è§£æ±ºå¯èœãªåé¡ã§ããæ°åãããã«ã¯æ°çŸäžãã®å€æ§ãªããã€ã¹ããä¿¡é Œæ§ã®äœããããã¯ãŒã¯ãä»ããŠéä¿¡ãããžã§ããªãã¯ãšããžã³ã³ãã¥ãŒãã£ã³ã°ã®äžçã§ã¯ãåçŽãªåã®äžäžèŽã壿» çãªé害ã«ã€ãªããå¯èœæ§ããããŸããããŒã¿ã»ãããç Žæããããçç£ã©ã€ã³ã忢ããããééã£ãéèŠãªæææ±ºå®ã«ã€ãªãã£ããããå¯èœæ§ããããŸãããã®èšäºã§ã¯ã忣åŠçã®ã¿ã€ãå®å šæ§ãããããšè¯ããã ãã§ãªããä¿¡é Œæ§ãé«ããã¹ã±ãŒã©ãã«ã§ããžã§ããªãã¯ãªãšããžã·ã¹ãã ã®çµ¶å¯Ÿçãªåºç€ã§ããçç±ãæ·±ãæãäžããŸããç§ãã¡ã¯ã課é¡ãæ¢æ±ãã匷åãªæŠç¥ãåæããè€éããå æããæ£ããåä»ããããããŒã¿ã®æçããšã«ãå埩åã®ãããšããžãæ§ç¯ããããã®ã¢ãŒããã¯ãã£ãã¿ãŒã³ãæç€ºããŸãã
ãšããžã³ã³ãã¥ãŒãã£ã³ã°é©åœïŒåãªããªã¢ãŒããµãŒããŒä»¥äž
ã¿ã€ãå®å šæ§ã®è€éãã«å ¥ãåã«ããšããžç°å¢ã®ãŠããŒã¯ãªæ§è³ªãçè§£ããããšãéèŠã§ããæ¯èŒçå質ã§ã匷åã§ãé©åã«ç®¡çããããµãŒããŒãç¹åŸŽã§ããã¯ã©ãŠããšã¯ç°ãªãããšããžã¯å€æ§æ§ã®çž®å³ã§ããããã¯ãããŸããŸãªããã€ã¹ãç¶²çŸ ããŠããŸãã
- å¶çŽãããã»ã³ãµãŒïŒæž©åºŠãå§åãªã©ã®åçŽãªããŒã¿ãã€ã³ããåéãããç£æ¥ç°å¢ãç°å¢ã¢ãã¿ãŒã®äœé»åãã€ã¯ãã³ã³ãããŒã©ãŒïŒMCUïŒã
 - ã¹ããŒãããã€ã¹ïŒããŒã«ã«åæãšéèšãå®è¡ã§ãããã¹ããŒãã«ã¡ã©ãPOSã·ã¹ãã ãå»çã¢ãã¿ãŒãªã©ã®ãã髿§èœãªããã€ã¹ã
 - ãšããžã²ãŒããŠã§ã€ïŒå€æ°ã®å°åããã€ã¹ããã®ããŒã¿ãéçŽããè€éãªåŠçãå®è¡ããã¯ã©ãŠããŸãã¯ä»ã®ãšããžãã±ãŒã·ã§ã³ãžã®éä¿¡ããªããžãšããŠæ©èœãã匷åãªã³ã³ãã¥ãŒãã£ã³ã°ããŒãã
 - èªåŸã·ã¹ãã ïŒã»ã³ãµãŒããŒã¿ã®å¥æµã«åºã¥ããŠéèŠãªãªã¢ã«ã¿ã€ã ã®æææ±ºå®ãè¡ããèªåé転è»ãããããã¢ãŒã ãªã©ã®é«åºŠãªãšããžã·ã¹ãã ã
 
ãã®åæ£ã¯ãå Žæã ãã§ã¯ãããŸãããããã¯æ©èœã§ããåŠçã¯ãã¯ãã¢ããªã·ãã¯ãªã¿ã¹ã¯ã§ã¯ãªãã忣ãããã¯ãŒã¯ãããŒã§ããã»ã³ãµãŒã¯çã®ããŒã¿ããã£ããã£ããè¿ãã®ã²ãŒããŠã§ã€ã¯ãããã¯ãªãŒã³ã¢ããããŠãã£ã«ã¿ãªã³ã°ããå°åã®ãšããžãµãŒããŒã¯ããã«å¯ŸããŠæ©æ¢°åŠç¿ã¢ãã«ãå®è¡ããã¯ã©ãŠãã¯é·æçãªåæã®ããã«æçµçãªéèšãããæŽå¯ãåãåãå¯èœæ§ããããŸãããã®ãã«ãã¹ããŒãžããã«ãããã€ã¹ã®åŠçãã€ãã©ã€ã³ã¯ãããŒã¿ç Žæã®ãªã¹ã¯ãææ°é¢æ°çã«å¢å€§ããå Žæã§ãã
éããªç Žå£å·¥äœå¡ïŒã¿ã€ãå®å šæ§ãšã¯äœãããããŠãšããžã§ãªãéèŠãªã®ãïŒ
ãã®æ žå¿ã«ãããŠãã¿ã€ãå®å šæ§ãšã¯ãããã°ã©ã ãŸãã¯ã·ã¹ãã ããç°ãªãããŒã¿åéã®ãã¹ãããããçãããšã©ãŒã鲿¢ãŸãã¯æå¶ããååã§ããããšãã°ãããã¹ãæååã«å¯ŸããŠæ°åŠçå ç®ãå®è¡ããããã¿ã€ã ã¹ã¿ã³ããå°çç座æšãšããŠæ±ã£ããã§ããªãããã«ããŸããã³ã³ãã€ã«ãããèšèªã§ã¯ããããã®ãã§ãã¯ã®å€ãã¯ã³ã³ãã€ã«æã«è¡ãããã³ãŒããå®è¡ãããåã«ãã°ããã£ããããŸããåçåä»ãèšèªã§ã¯ããããã®ãšã©ãŒã¯å®è¡æã«ãã£ãããããããã°ã©ã ãã¯ã©ãã·ã¥ããå¯èœæ§ããããŸãã
忣ãšããžç°å¢ã§ã¯ããã®æŠå¿µã¯åäžã®ããã°ã©ã ãè¶ ããŠæ¡åŒµãããŸããããã¯ãæœåšçã«ç°ãªãèšèªã§èšè¿°ãããç°ãªãããŒããŠã§ã¢äžã§å®è¡ããã2ã€ã®ç¬ç«ãããµãŒãã¹éã®ããŒã¿äº€æã®å¥çŽã峿 Œã«å®ãããŠããããšã確èªããããšã«ãªããŸããã·ã³ã¬ããŒã«ã®ãšããžã»ã³ãµãŒã枩床ã®èªã¿åãå€ãéä¿¡ããå Žåããã©ã³ã¯ãã«ãã®åŠçããŒãã¯ããã®ããŒã¿ãåãªãæ°å€ãšããŠã ãã§ãªããææ°ã衚ã32ãããæµ®åå°æ°ç¹æ°ãšããŠè§£éããå¿ èŠããããŸãããã©ã³ã¯ãã«ãããŒããè¯æ°ã衚ã16ãããæŽæ°ãæåŸ ããå Žåãã·ã¹ãã å šäœã®ããžãã¯ã䟵害ãããŸãã
æ žå¿ã®èª²é¡ïŒç°ç𮿧ããã³ãšããžããŒã¿ã®ãç¡æ³å°åž¯ã
ãšããžã§ã¿ã€ãå®å šæ§ãéåžžã«é£ããäž»ãªçç±ã¯ãç°å¢ã®çŽç²ã§æä»ããã®ç°ç𮿧ã§ããç§ãã¡ã¯åäžã®ããŒã¿ã»ã³ã¿ãŒã®ã¯ãªãŒã³ã§æç¢ºã«å®çŸ©ãããå£å ã§äœæ¥ããŠããããã§ã¯ãããŸãããç§ãã¡ã¯ããžã¿ã«ãç¡æ³å°åž¯ãã§éçšããŠããŸãã
ããã€ã¹ã®ã«ã³ããªã¢ççº
ãšããžãããã¯ãŒã¯ã¯ãç¡æ°ã®ã¡ãŒã«ãŒããã®ããã€ã¹ã§æ§æãããŠãããç°ãªãæä»£ã«ãç°ãªãç®çã§æ§ç¯ãããŠããŸãã1990幎代ã®ã¬ã¬ã·ãŒç£æ¥çšã³ã³ãããŒã©ãŒã¯ãç¬èªã®ãã€ããªãããã³ã«ã䜿çšããŠéä¿¡ããå¯èœæ§ããããŸãããææ°ã®AIã«ã¡ã©ã¯ãææ°ã®åœ¢åŒã§ãšã³ã³ãŒããããããŒã¿ãã¹ããªãŒãã³ã°ããŸãããžã§ããªãã¯ãšããžã·ã¹ãã ã¯ãããããã«ã«ã¹ã¿ã æ§ç¯ãããããšãªããããããã¹ãŠããããŒã¿ãåã蟌ã¿ãçè§£ããåŠçã§ããå¿ èŠããããŸããããã«ã¯ããã®å€æ§æ§å šäœã§ããŒã¿æ§é ãå®çŸ©ããé©çšããããã®å ç¢ãªæ¹æ³ãå¿ èŠã§ãã
ãããã³ã«ãšèšèªã®ããã«
ãšããžã®åäžã®ãèšèªãã¯ãããŸãããããã€ã¹ã¯MQTTãCoAPãAMQPãHTTPãããã³ç¡æ°ã®ä»ã®ãããã³ã«ãä»ããŠè©±ããŸãããããã§å®è¡ããããœãããŠã§ã¢ã¯ãCãC ++ãPythonãRustãGoããŸãã¯Javaã§èšè¿°ã§ããŸãããã£ãŒã«ã{"timestamp": "2023-10-27T10:00:00Z"}ãæã€JSONãªããžã§ã¯ããæåŸ
ããPythonãµãŒãã¹ã¯ãC++ãµãŒãã¹ãã¿ã€ã ã¹ã¿ã³ããUnixãšããã¯æŽæ°{"timestamp": 1698397200}ãšããŠéä¿¡ããå Žåã«å€±æããŸããããŒã¿åã®å
±æããããé©çšãããçè§£ãªãã«ãã·ã¹ãã å
šäœã¯ç äžã®æ¥Œé£ã§ãã
ã¿ã€ããã¹ãããã®çŸå®äžçã®ã³ã¹ã
ãããã¯åŠè¡çãªåé¡ã§ã¯ãããŸããã忣ãšããžã·ã¹ãã ã«ãããã¿ã€ãã®èª€ãã«ã¯ãæ·±å»ã§å ·äœçãªçµæã䌎ããŸãã
- ç£æ¥è£œé ïŒããããã¢ãŒã ã¯ã座æšã
{x: 10.5, y: 20.2, z: 5.0}ãšããŠæåŸ ããŸããã·ã¹ãã ã¢ããããŒãã«ãããæ°ããã»ã³ãµãŒããããæåå"10.5, 20.2, 5.0"ãšããŠéä¿¡ããŸããè§£æãšã©ãŒã«ãããããããã忢ãããã°ãèŠã€ããä¿®æ£ããããŸã§ãæ°çŸäžãã«èŠæš¡ã®çç£ã©ã€ã³ã忢ããŸãã - ã³ãã¯ããããã«ã¹ã±ã¢ïŒæ£è
ã®å¿ææ°ã¢ãã¿ãŒã¯æ¯ç§ããŒã¿ãéä¿¡ããŸãããã°ã«ãããæŽæ°ã®ä»£ããã«
nullå€ãæã éä¿¡ããŸããããŠã³ã¹ããªãŒã ã®ã¢ã©ãŒãã·ã¹ãã ã¯ãnullãåŠçããããã«èšèšãããŠããªããããã¯ã©ãã·ã¥ããŸããé倧ãªå¿èã€ãã³ãã®ã¢ã©ãŒããèŠéãããæ£è ã®çåœãå±éºã«ãããããŸãã - èªåŸåããžã¹ãã£ã¯ã¹ïŒèªåŸåé
éãããŒã³ã®ããªãŒãã¯ãGPSããŒã¿ã«äŸåããŠããŸããããã¡ãŒã«ãŒã®ãããŒã³ã¯ãé«åºŠãã¡ãŒãã«ïŒäŸïŒ
95.5ïŒã§å ±åããŸãããå¥ã®ã¡ãŒã«ãŒã¯ãåãæ°å€åã䜿çšããŠãã£ãŒãã§å ±åããŸãããã¹ãŠããŒã¿ãã¡ãŒãã«åäœã§ãããšä»®å®ããã¢ã°ãªã²ãŒã¿ãŒãµãŒãã¹ã¯ããããŒã³ã®é«åºŠã誀ã£ãŠèšç®ãããã¢ãã¹ãŸãã¯è¡çªã«ã€ãªãããŸãã 
ããžã§ããªãã¯ããšããžã³ã³ãã¥ãŒãã£ã³ã°ã®å®çŸ©ïŒçžäºéçšæ§ã®ãã©ãã€ã
ãã®ç°ç𮿧ã«å¯Ÿãã解決çã¯ããã¹ãŠã®ããã€ã¹ãåäžã«ããããšã§ã¯ãããŸãããããã¯äžå¯èœã§ãã解決çã¯ããžã§ããªãã¯ãšããžã³ã³ãã¥ãŒãã£ã³ã°ãã¬ãŒã ã¯ãŒã¯ãæ§ç¯ããããšã§ãããžã§ããªãã¯ã·ã¹ãã ã¯ãç¹å®ã®ããŒããŠã§ã¢ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããŸãã¯ããã°ã©ãã³ã°èšèªã«çžãããŠããªãã·ã¹ãã ã§ããããã¯ãå¥ã ã®ã³ã³ããŒãã³ããã·ãŒã ã¬ã¹ã«çžäºéçšã§ããããã«ãæç¢ºã«å®çŸ©ãããæœè±¡åãšã³ã³ãã©ã¯ãã«äŸåããŠããŸãã
æšæºåãããé éã³ã³ããã®ãããªãã®ãèããŠã¿ãŠãã ããããã®çºæä»¥åã¯ãè¹ã®ç©ã¿èŸŒã¿ã¯ãããããçš®é¡ã®è²šç©ã«å¯ŸããŠãæ··æ²ãšããããªãŒããŒã¡ã€ãã®ããã»ã¹ã§ãããã³ã³ããã¯ãã€ã³ã¿ãŒãã§ãŒã¹ïŒåœ¢ç¶ãšæ¥ç¶ãã€ã³ãïŒãæšæºåããŸããããã³ã³ãã³ãïŒå éšã®ãã®ïŒã«ã€ããŠã¯äžå¯ç¥è«è ã§ããç¶ããŸããããžã§ããªãã¯ãšããžã³ã³ãã¥ãŒãã£ã³ã°ã§ã¯ãã¿ã€ãå®å šæ§ã¯ããŒã¿ã«ãã®æšæºåãããã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸããã©ã®ãããªããã€ã¹ãããŒã¿ãçæããã©ã®ãããªãµãŒãã¹ããããæ¶è²»ããå Žåã§ãããã®ããŒã¿ã®æ§é ãšæå³ãæç¢ºã§ä¿¡é Œã§ããããšãä¿èšŒããŸãã
ãšããžå šäœã§ã¿ã€ãå®å šæ§ãé©çšããããã®åºæ¬çãªæŠç¥
ãã®ã¬ãã«ã®ä¿¡é Œæ§ãå®çŸããã«ã¯ãå€å±€çãªã¢ãããŒããå¿ èŠã§ããéæ³ã®åŒŸäžžãèŠã€ããããšã§ã¯ãªããããã€ãã®åŒ·åãªæŠç¥ãçµã¿åãããŠãããŒã¿ã®ç Žæã«å¯Ÿããé²åŸ¡ãå€éã«äœæããããšã§ãã
æŠç¥1ïŒããŒã¿ã·ãªã¢ã©ã€ãŒãŒã·ã§ã³åœ¢åŒã䜿çšããã¹ããŒããã¡ãŒã¹ãèšèš
æãåºæ¬çãªæŠç¥ã¯ãããŒã¿ã®æ§é ãæç€ºçã«å®çŸ©ããããšã§ããã«ãŒãºJSONãŸãã¯ãã€ããªããããéä¿¡ããã ãã§ãªããã¹ããŒãã䜿çšããŠæ£åŒãªå¥çŽãäœæããŸãããã®ã¹ããŒãã¯ãããŒã¿ã®æçãã©ã®ããã«èŠããã¹ããã®åäžã®ç宿ºãšããŠæ©èœããŸãã
ãã®åéã®äž»èŠãªãã¯ãããžãŒã«ã¯ã以äžãå«ãŸããŸãã
- Protocol BuffersïŒProtobufïŒïŒGoogleã«ãã£ãŠéçºãããProtobufã¯ãæ§é åããŒã¿ãã·ãªã¢ã«åããããã®èšèªéäŸåã®ãã©ãããã©ãŒã ãã¥ãŒãã©ã«ãªã¡ã«ããºã ã§ããããŒã¿æ§é ãåçŽãª
.protoãã¡ã€ã«ã§å®çŸ©ããProtobufã³ã³ãã€ã©ã¯ãéžæããèšèªã®ãœãŒã¹ã³ãŒããçæããŠãæ§é åããŒã¿ãç°¡åã«æžã蟌ã¿ããã³èªã¿åããŸããããã«ãããã³ã³ãã€ã«æã®å®å šæ§ãšããªãœãŒã¹ãå¶çŽããããšããžããã€ã¹ã«æé©ãªãéåžžã«å¹ççãªãã€ããªã·ãªã¢ã©ã€ãŒãŒã·ã§ã³ãæäŸãããŸãã - Apache AvroïŒAvroã¯ããã1ã€ã®åŒ·åãªããŒã¿ã·ãªã¢ã«åã·ã¹ãã ã§ããäž»ãªç¹åŸŽã¯ãã¹ããŒããããŒã¿ïŒå€ãã®å ŽåãããããŒå ïŒãšãšãã«ä¿åãããããšã§ããããã¯ãæéã®çµéãšãšãã«ã¹ããŒããé²åãããç°ãªãã¹ããŒãããŒãžã§ã³ããã®ããŒã¿ãå ±åããå¯èœæ§ãããããŒã¿ã¬ã€ã¯ãã¹ããªãŒãã³ã°ãã©ãããã©ãŒã ãªã©ã®ã·ã¹ãã ã«æé©ã§ãã
 - JSON SchemaïŒJSONã«å€§ããäŸåããã·ã¹ãã ã®å ŽåãJSON Schemaã¯ãJSONããã¥ã¡ã³ãã«æ³šéãä»ããæ€èšŒããããã®èªåœãæäŸããŸããProtobufãªã©ã®ãã€ããªåœ¢åŒãããããã©ãŒãã³ã¹ãå£ããŸããã人éãéåžžã«èªã¿ããããæšæºçãªJSONã©ã€ãã©ãªã§åäœããŸãã
 
äŸïŒã»ã³ãµãŒããŒã¿ã«Protocol Buffersã䜿çšãã
æšæºçãªç°å¢ã»ã³ãµãŒã®èªã¿åãæ§é ãå®çŸ©ããããšããŸããsensor.protoãšããååã®ãã¡ã€ã«ãäœæããŸãã
ïŒæ³šïŒããã¯è¡šçŸã§ããããã®ã³ã³ããã¹ãã§ã¯å®è¡å¯èœãªã³ãŒãã§ã¯ãããŸããïŒ
syntax = "proto3";
package edge.monitoring;
message SensorReading {
  string device_id = 1;
  int64 timestamp_unix_ms = 2; // Unix epoch in milliseconds
  float temperature_celsius = 3;
  float humidity_percent = 4;
  optional int32 signal_strength_dbm = 5;
}
ãã®åçŽãªãã¡ã€ã«ãããã»ã³ãµãŒã®ãã¡ãŒã ãŠã§ã¢çšã®C ++ã³ãŒããã²ãŒããŠã§ã€ã®åŠçã¹ã¯ãªããçšã®Pythonã³ãŒããããã³ã¯ã©ãŠãã€ã³ãžã§ã¹ããµãŒãã¹çšã®Goã³ãŒããçæã§ããŸããçæãããåã¯ã©ã¹ã«ã¯ãå³å¯ã«åä»ãããããã£ãŒã«ãããããŸããæååãtimestamp_unix_msãã£ãŒã«ãã«å
¥ããããšã¯ããã°ã©ã çã«äžå¯èœã«ãªããŸããããã«ãããã³ãŒããäœåãã®ããã€ã¹ã«ãããã€ããããã£ãšåã«ãã³ã³ãã€ã«æã«ãšã©ãŒããã£ãããããŸãã
æŠç¥2ïŒgRPCã䜿çšããã¿ã€ãã»ãŒããªéä¿¡
ããŒã¿æ§é ãå®çŸ©ããããšã¯ãæŠãã®ååã§ããããååã¯ãéä¿¡ãã£ãã«ããããã®å®çŸ©ãå°éããããšã確èªããããšã§ããããã¯ãgRPCïŒgRPCãªã¢ãŒãããã·ãŒãžã£ã³ãŒã«ïŒã®ãããªãã¬ãŒã ã¯ãŒã¯ãåªããŠããå Žæã§ããgRPCãGoogleã«ãã£ãŠéçºãããããã©ã«ãã§Protocol Buffersã䜿çšããŠããµãŒãã¹å¥çŽãšã¡ãã»ãŒãžåœ¢åŒãå®çŸ©ããŸãã
gRPCã䜿çšãããšãã¡ãã»ãŒãžïŒãäœãïŒã ãã§ãªãããµãŒãã¹ãšãã®ã¡ãœããïŒãæ¹æ³ãïŒãå®çŸ©ããŸããããã¯ãå³å¯ã«åä»ããããã¯ã©ã€ã¢ã³ããšãµãŒããŒã¹ã¿ããäœæããŸããã¯ã©ã€ã¢ã³ãããªã¢ãŒãã¡ãœãããåŒã³åºããšãgRPCã¯ãªã¯ãšã¹ãã¡ãã»ãŒãžãå¿ é ã®åãšäžèŽããããšã確èªãããããã·ãªã¢ã«åããŸããæ¬¡ã«ããµãŒããŒã¯ãããéã·ãªã¢ã«åããæ£ããåä»ãããããªããžã§ã¯ããåãåãããšãä¿èšŒãããŸããããã¯ããããã¯ãŒã¯éä¿¡ãšã·ãªã¢ã©ã€ãŒãŒã·ã§ã³ã®åä»ãªè©³çŽ°ãæœè±¡åããããŒã«ã«ã§ã¿ã€ãã»ãŒããªé¢æ°åŒã³åºãã®ããã«æãããããã®ãæäŸããŸãã
æŠç¥3ïŒAPIã®ã³ã³ãã©ã¯ãé§ååéçº
HTTPãšJSONã䜿çšããŠRESTful APIãä»ããŠéä¿¡ãããšããžãµãŒãã¹ã®å ŽåãOpenAPI仿§ïŒä»¥åã®SwaggerïŒãæ¥çæšæºã§ããProtobufãšåæ§ã«ãYAMLãŸãã¯JSONãã¡ã€ã«ã§ã³ã³ãã©ã¯ããå®çŸ©ããŸããããã¯ããã¹ãŠã®ãšã³ããã€ã³ããå¿ èŠãªãªã¯ãšã¹ããã©ã¡ãŒã¿ãšãã®åãããã³ã¬ã¹ãã³ã¹æ¬æã®æ§é ãæå®ããŸãããã®ã³ã³ãã©ã¯ãã䜿çšããŠãã¯ã©ã€ã¢ã³ãSDKããµãŒããŒã¹ã¿ããããã³æ€èšŒããã«ãŠã§ã¢ãçæãããã¹ãŠã®HTTPéä¿¡ãæå®ãããåã«æºæ ããŠããããšã確èªã§ããŸãã
æŠç¥4ïŒéçåä»ãèšèªã®å
ã¹ããŒããšã³ã³ãã©ã¯ããã»ãŒããã£ããããæäŸããäžæ¹ã§ãããã°ã©ãã³ã°èšèªã®éžæãéèŠãªåœ¹å²ãæãããŸããRustãGoãC ++ãJavaããŸãã¯TypeScriptãªã©ã®éçåä»ãèšèªã¯ãéçºè ã倿°ã®ããŒã¿åã宣èšããããšã匷å¶ããŸãããã®åŸãã³ã³ãã€ã©ã¯ãã³ãŒãããŒã¹å šäœã§åã®æŽåæ§ããã§ãã¯ããŸããããã¯ãçºçããåã«ããšã©ãŒã®ã¯ã©ã¹å šäœãæé€ããããã®åŒ·åã§ç©æ¥µçãªã¢ãããŒãã§ãã
ç¹ã«Rustã¯ãããã©ãŒãã³ã¹ãã¡ã¢ãªå®å šæ§ãããã³åŒ·åãªåã·ã¹ãã ã«ããããªãœãŒã¹ãå¶çŽãããç°å¢åãã«éåžžã«å ç¢ã§ä¿¡é Œæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã®ã«åœ¹ç«ã¡ããšããžãšIoTã§å¢ããå¢ããŠããŸãã
æŠç¥5ïŒå ç¢ãªã©ã³ã¿ã€ã æ€èšŒãšãµãã¿ã€ãº
äžçäžã®ãã¹ãŠã®ã³ã³ãã€ã«æãã§ãã¯ããã£ãŠããå€éšããæ¥ãããŒã¿ãåžžã«ä¿¡é Œã§ããããã§ã¯ãããŸããã誀ã£ãŠèšå®ãããããã€ã¹ãŸãã¯æªæã®ããã¢ã¯ã¿ãŒã¯ãäžæ£ãªããŒã¿ãéä¿¡ããå¯èœæ§ããããŸãããããã£ãŠããã¹ãŠã®ãšããžãµãŒãã¹ã¯ãå ¥åãä¿¡é Œã§ããªããã®ãšããŠæ±ãå¿ èŠããããŸããããã¯ããµãŒãã¹ã®å¢çã§æ€èšŒã¬ã€ã€ãŒãå®è£ ããåä¿¡ããŒã¿ãåŠçããåã«ãäºæ³ãããã¹ããŒãã«å¯ŸããŠæç€ºçã«ãã§ãã¯ããããšãæå³ããŸããããã¯ããªãã®æåŸã®é²åŸ¡ç·ã§ããããŒã¿ãæºæ ããŠããªãå Žåâå¿ èŠãªãã£ãŒã«ããèŠã€ãããªãå ŽåããŸãã¯æŽæ°ãäºæ³ãããç¯å²å€ã§ããå Žåâã·ã¹ãã ãç Žæãããã®ã§ã¯ãªããæåŠãããèšé²ãããåæã®ããã«ãããã¬ã¿ãŒãã¥ãŒã«éä¿¡ããå¿ èŠããããŸãã
ã¿ã€ãã»ãŒããªãšããžãšã³ã·ã¹ãã ã®ã¢ãŒããã¯ãã£ãã¿ãŒã³
ãããã®æŠç¥ã®å®è£ ã¯ãåãªãããŒã«ã§ã¯ãããŸãããããã¯ã¢ãŒããã¯ãã£ã«ã€ããŠã§ããç¹å®ã®ãã¿ãŒã³ã¯ã忣ã·ã¹ãã å šäœã®ã¿ã€ãå®å šæ§ãåçã«åäžãããããšãã§ããŸãã
ã»ã³ãã©ã«ã¹ããŒãã¬ãžã¹ããªïŒåäžã®ç宿º
å€§èŠæš¡ãªãšããžãããã€ã§ã¯ãã¹ããŒãã墿®ããå¯èœæ§ããããŸããæ··ä¹±ãé¿ããããã«ãã¹ããŒãã¬ãžã¹ããªãäžå¯æ¬ ã§ããããã¯ããã¹ãŠã®ããŒã¿ã¹ããŒãïŒProtobufãAvroããŸãã¯JSONã¹ããŒããªã©ïŒã®ãã¹ã¿ãŒãªããžããªãšããŠæ©èœããéäžãµãŒãã¹ã§ãããµãŒãã¹ã¯ã¹ããŒããããŒã«ã«ã«ä¿åããŸããããããã¯ã¬ãžã¹ããªããååŸããŸããããã«ãããã·ã¹ãã å ã®ãã¹ãŠã®ã³ã³ããŒãã³ãããåãããŒãžã§ã³ã®åãã³ã³ãã©ã¯ãã䜿çšããŠããããšãä¿èšŒãããŸãããŸããã¹ããŒãã®é²åã®ããã®åŒ·åãªæ©èœãæäŸããã·ã¹ãã å šäœãå£ãããšãªããåŸæ¹ãŸãã¯åæ¹äºææ§ã®ããæ¹æ³ã§ããŒã¿æ§é ãæŽæ°ã§ããŸãã
ãšããžãµãŒãã¹ã¡ãã·ã¥ïŒãããã¯ãŒã¯ã¬ãã«ã§ã®ããªã·ãŒã®é©çš
ãµãŒãã¹ã¡ãã·ã¥ïŒLinkerdãŸãã¯IstioããŸãã¯ãšããžçšã«èšèšããã軜éãªä»£æ¿ææ®µãªã©ïŒã¯ãã¢ããªã±ãŒã·ã§ã³èªäœããäžéšã®æ€èšŒããžãã¯ããªãããŒãã§ããŸããã¢ããªã±ãŒã·ã§ã³ã®æšªã«ãããµãŒãã¹ã¡ãã·ã¥ãããã·ã¯ããã©ãã£ãã¯ãæ€æ»ããæ¢ç¥ã®ã¹ããŒãã«å¯ŸããŠã¡ãã»ãŒãžãæ€èšŒããããã«æ§æã§ããŸããããã«ããããããã¯ãŒã¯ã¬ãã«ã§ã¿ã€ãå®å šæ§ãé©çšãããã¡ãã·ã¥å ã®ãã¹ãŠã®ãµãŒãã¹ã«å¯ŸããŠãããããèšè¿°ãããŠããèšèªã«é¢ä¿ãªããäžè²«ããä¿è·å±€ãæäŸãããŸãã
äžå€ããŒã¿ãã€ãã©ã€ã³ïŒç¶æ ã®ç Žæã®é²æ¢
ã¿ã€ãé¢é£ã®ãšã©ãŒã®äžè¬çãªåå ã¯ãæéã®çµéã«äŒŽãç¶æ ã®å€åã§ãããªããžã§ã¯ãã¯æå¹ãªç¶æ ã§å§ãŸããŸããããäžé£ã®æäœã«ããç¡å¹ãªç¶æ ã«å€æãããŸãããäžå€æ§ã®ãã¿ãŒã³ãæ¡çšããããšã«ããâããŒã¿ãäœæããããšå€æŽã§ããªãâãããã®ãã°ãé²ãããšãã§ããŸããããŒã¿ã倿Žãã代ããã«ãæŽæ°ãããå€ãæã€æ°ããã³ããŒãäœæããŸãããã®é¢æ°åããã°ã©ãã³ã°ã®æŠå¿µã«ãããããŒã¿ãããŒã«é¢ããæšè«ãç°¡çŽ åããããã€ãã©ã€ã³ã®1ã€ã®æç¹ã§æå¹ã§ãã£ãããŒã¿ã®æçãããã®ã©ã€ããµã€ã¯ã«å šäœã§æå¹ã§ããããšãä¿èšŒãããŸãã
ã¢ã¯ã·ã§ã³ã«ãããã±ãŒã¹ã¹ã¿ãã£ïŒã°ããŒãã«ã¹ããŒã蟲æ¥ãããã¯ãŒã¯
ãããã®æŠå¿µãçŸå®çãªã°ããŒãã«ã·ããªãªã«ãŸãšããŸãããã
ã·ããªãª
å€åœç±ã¢ã°ãªããžãã¹ãAgriGlobalãã¯ãçµ±äžããããã¹ããŒããã¡ãŒã ããã©ãããã©ãŒã ãäœæããããšèããŠããŸãã圌ãã¯ãåç±³ãåç±³ããšãŒãããã§èŸ²å Žãéå¶ããŠããŸãã圌ãã®ããŒããŠã§ã¢ã¯ãã·ãªã¢ã«ããŒããä»ããŠCSVããŒã¿ãåºåããã¬ã¬ã·ãŒçæŒã³ã³ãããŒã©ãŒãMQTTãä»ããŠJSONã䜿çšãããšãŒãããã®ãã³ããŒããã®ææ°ã®å壿°Žåã»ã³ãµãŒãããã³ãã€ããªãããªãã£ãŒããšGPSããŒã¿ãã¹ããªãŒãã³ã°ããã¢ãžã¢ã®ã¡ãŒã«ãŒããã®æ°ããèªåŸåãããŒã³ã®ããªãŒãã®æ··åã§ããç®æšã¯ãããããã¹ãŠã®ããŒã¿ãå°åã®ãšããžã²ãŒããŠã§ã€ã§åéãããªã¢ã«ã¿ã€ã ã§åŠçããŠæææ±ºå®ïŒäŸïŒçæŒã®èª¿æŽïŒãè¡ããéèšãããæŽå¯ãäžå€®ã®ã¯ã©ãŠããã©ãããã©ãŒã ã«éä¿¡ããŠãAIãå©çšããäœç©ã®åéäºæž¬ãè¡ãããšã§ãã
å®è£
AgriGlobalã®ã¢ãŒããã¯ãã¯ãåããã€ã¹ã®ã«ã¹ã¿ã ããŒãµãŒãèšè¿°ããããšã決å®ããŸããã代ããã«ããžã§ããªãã¯ãã¹ããŒãé§ååã®ã¢ãŒããã¯ãã£ãæ¡çšããŸããã
- ã»ã³ãã©ã«ã¹ããŒãã¬ãžã¹ããªïŒäžå€®ã®Avroã¹ããŒãã¬ãžã¹ããªãèšå®ããŸããã
SoilMoistureReadingãGpsCoordinateãããã³IrrigationStatusãªã©ã®ã³ã¢ã³ã³ã»ããã®ã¹ããŒããå®çŸ©ããŸããã - ã¢ããã¿ãŒãµãŒãã¹ïŒããã€ã¹ã®åã¿ã€ãã«ã€ããŠããšããžã²ãŒããŠã§ã€ã§å®è¡ãããå°ããªãã¢ããã¿ãŒããµãŒãã¹ãèšè¿°ããŸãããã¬ã¬ã·ãŒã³ã³ãããŒã©ãŒã¢ããã¿ãŒã¯ãã·ãªã¢ã«CSVããŒã¿ãèªã¿åããæå¹ãª
IrrigationStatusAvroãªããžã§ã¯ãã«å€æããŸããã»ã³ãµãŒã¢ããã¿ãŒã¯ãJSON MQTTã¡ãã»ãŒãžãåä¿¡ããããããSoilMoistureReadingAvroãªããžã§ã¯ãã«å€æããŸããåã¢ããã¿ãŒã¯ã1ã€ã®ããšã ããæ åœããŸããã€ãŸããç¹å®ã®ããã€ã¹ã®çã®åºåããã¹ããŒãã¬ãžã¹ããªã§å®çŸ©ãããŠããæ£èŠã®ãå³å¯ã«åä»ãããã圢åŒã«å€æããããšã§ãã - ã¿ã€ãã»ãŒããªåŠçãã€ãã©ã€ã³ïŒGoã§èšè¿°ãããããŠã³ã¹ããªãŒã åŠçãµãŒãã¹ã¯ãCSVãŸãã¯JSONã«ã€ããŠç¥ãå¿ èŠã¯ãããŸãããKafkaãNATSã®ãããªã¡ãã»ãŒãžãã¹ãããã¯ãªãŒã³ã§æ€èšŒãããAvroããŒã¿ã®ã¿ãæ¶è²»ããŸãã圌ãã®ããžãã¹ããžãã¯ãç°¡çŽ åãããç©ççãªããŒããŠã§ã¢ããå®å šã«åãé¢ãããŠããŸãã
 
çµæ
ã¹ããŒãé§ååã¢ãŒããã¯ãã£ãžã®å è¡æè³ã¯ã倧ãã«å ±ãããŸããã
- è¿ éãªçµ±åïŒç°ãªããã©ã³ãã®æ°è±¡ã¹ããŒã·ã§ã³ãåããæ°ããèŸ²å ŽãååŸãããšããæ°ããå°ããªã¢ããã¿ãŒãµãŒãã¹ãèšè¿°ããã ãã§æžã¿ãŸãããã³ã¢åŠçãã€ãã©ã€ã³ã¯å€æŽãããŠããŸãããæ°ããããŒããŠã§ã¢ã®çµ±åæéãæ°ãæããæ°æ¥ã«ççž®ãããŸããã
 - ä¿¡é Œæ§ã®åäžïŒããŒã¿é¢é£ã®åŠçé害ã90ïŒ ä»¥äžæžå°ããŸããããšã©ãŒã¯ãã¢ããã¿ãŒã«ãã£ãŠãšããžã§ãã£ãããããæ¬ é¥ã®ããã»ã³ãµãŒããã®äžæ£ãªããŒã¿ãäžå€®åæã¢ãã«ãæ±æããåã«ãã©ã°ãç«ãŠãããŸããã
 - å°æ¥æ§ã®ç¢ºä¿ïŒã·ã¹ãã ã¯çŸåšãžã§ããªãã¯ã§ããç¹å®ã®ããŒããŠã§ã¢ã§ã¯ãªããæœè±¡ããŒã¿åãäžå¿ã«æ§ç¯ãããŠããŸããããã«ãããAgriGlobalã¯ããã¹ãŠã®ãã³ããŒããã¯ã©ã¹æé«ã®ãã¯ãããžãŒãæ¡çšããããŒã¿ãã©ãããã©ãŒã ãåæ§ç¯ããããšãªããããè¿ éã«é©æ°ã§ããŸãã
 
ä»åŸã®å±æïŒãšããžã§ã®ã¿ã€ãå®å šæ§ã«é¢ããæ¬¡ã®ã¹ãããã¯ïŒ
å ç¢ãªã¿ã€ãå®å šæ§ã®æ¢æ±ã¯é²è¡äžã®æ ã§ãããããã€ãã®ãšããµã€ãã£ã³ã°ãªãã¯ãããžãŒãããŒãããã«é«ãããæºåãã§ããŠããŸãã
WebAssemblyïŒWasmïŒïŒãŠãããŒãµã«ã¿ã€ãã»ãŒãã©ã³ã¿ã€ã
WebAssemblyã¯ãã¹ã¿ãã¯ããŒã¹ã®ä»®æ³ãã·ã³ã®ãã€ããªåœä»€åœ¢åŒã§ããRustãC ++ãGoãªã©ã®èšèªã§èšè¿°ãããã³ãŒããããšããžããã€ã¹ãå«ãã©ãã§ããµã³ãããã¯ã¹åãããç°å¢ã§å®è¡ã§ããŸããWasmã«ã¯ãæç¢ºã«å®çŸ©ãããå³å¯ã«åä»ããããã¡ã¢ãªã¢ãã«ããããŸããããã«ããããšããžã§å®å šã§ããŒã¿ãã«ããããŠã¿ã€ãã»ãŒããªæ©èœããããã€ããããã®é åçãªã¿ãŒã²ãããšãªããåºç€ãšãªãããŒããŠã§ã¢ãšOSãæœè±¡åã§ãããŠãããŒãµã«ã©ã³ã¿ã€ã ãäœæãããŸãã
ããŒã¿åã«å¯ŸããAIãæŽ»çšããç°åžžæ€åº
å°æ¥ã®ã·ã¹ãã ã¯ãéåžžã®ããŒã¿ã¹ããªãŒã ã®ã圢ç¶ããåŠç¿ããããã«æ©æ¢°åŠç¿ã¢ãã«ã䜿çšããå¯èœæ§ããããŸãããããã®ã¢ãã«ã¯ãé²éªšãªã¿ã€ãã®èª€ãïŒäŸïŒintã®ä»£ããã«æååïŒã ãã§ãªãã埮åŠãªæå³çç°åžžïŒäŸïŒæè¡çã«ã¯æå¹ãªæµ®åå°æ°ç¹æ°ã§ãããããã®å Žæã§ã¯ç©ççã«äžå¯èœãªæž©åºŠã®èªã¿åãïŒãæ€åºã§ããŸããããã«ãããã€ã³ããªãžã§ã³ãã§ã³ã³ããã¹ã察å¿ã®æ€èšŒã¬ã€ã€ãŒã远å ãããŸãã
åœ¢åŒæ€èšŒãšèšŒæå¯èœãªæ£ããã·ã¹ãã
æãããã·ã§ã³ã¯ãªãã£ã«ã«ãªãšããžã·ã¹ãã ïŒèªç©ºå®å®ãå»çæ©åšãªã©ïŒã®å Žåãåœ¢åŒæ€èšŒã®å¢å ãèŠãããå¯èœæ§ããããŸããããã¯ãåãšã©ãŒãå«ãç¹å®ã®ãšã©ãŒã¯ã©ã¹ããªãããšã蚌æããããã®æ°åŠçã¢ãããŒãã§ããè€éã§ãªãœãŒã¹ãæ¶è²»ããŸãããæå€§éã®æ£ç¢ºæ§ãä¿èšŒããŸãã
çµè«ïŒã¬ãžãªãšã³ããšããžã®æ§ç¯ãäžåºŠã«1ã€ã®ã¿ã€ã
ãšããžã³ã³ãã¥ãŒãã£ã³ã°ãžã®ã°ããŒãã«ãªç§»è¡ã¯æ¢ãŸããŸãããããã¯ãããããæ¥çã§ãããŸã§ã«ãªãæ©èœãšå¹çãå®çŸããŠããŸãããããããã®åæ£åã®æªæ¥ã¯ãèåŒ±ã§æ··æ²ãšããŠããããå ç¢ã§ä¿¡é Œã§ãããã®ã©ã¡ããã§ãããã®éãã¯ããã®åºç€ã«é©çšããå³å¯ãã«ãããŸãã
忣åŠçã®ã¿ã€ãå®å šæ§ã¯ãæ©èœã§ã¯ãããŸãããããã¯å¿ é æ¡ä»¶ã§ããããã¯ãç§ãã¡ãé²åããæ¡åŒµã§ãããžã§ããªãã¯ã§çžäºéçšå¯èœãªã·ã¹ãã ãæ§ç¯ã§ããããã«ããèŠåŸã§ããã¹ããŒããã¡ãŒã¹ãã®èãæ¹ãåãå ¥ããã¿ã€ãã»ãŒããªããŒã«ãšãããã³ã«ã掻çšããå埩åã®ããã¢ãŒããã¯ãã£ãã¿ãŒã³ãèšèšããããšã«ãããåã ã®ããã€ã¹ã®ãªãŒããŒã¡ã€ããœãªã¥ãŒã·ã§ã³ãæ§ç¯ããããšããäžæ©é²ãããšãã§ããŸããããŒã¿ã確å®ã«æµããèªä¿¡ãæã£ãŠæææ±ºå®ãè¡ããã忣ã€ã³ããªãžã§ã³ã¹ã®èšãç¥ããªãå¯èœæ§ãå®å šã«å®çŸããããçã«ã°ããŒãã«ã§ããžã§ããªãã¯ã§ãä¿¡é Œã§ãããšããžâãšã³ã·ã¹ãã ã®æ§ç¯ãéå§ã§ããŸãã