ãªã¢ã«ã¿ã€ã ããŒã¿åŠçãå¹çåããããã³ããšã³ãã¹ããªãŒãã³ã°ã¢ãŒããã¯ãã£ãæ¢æ±ãã³ã¢ã³ã³ã»ãããã¡ãªããã課é¡ããã¹ããã©ã¯ãã£ã¹ãã°ããŒãã«ãªèŠç¹ã§è§£èª¬ã
ããã³ããšã³ãã¹ããªãŒãã³ã°ã¢ãŒããã¯ãã£ïŒãªã¢ã«ã¿ã€ã ããŒã¿åŠçã®å®çŸ
仿¥ã®ããŒã¿äžå¿ã®äžçã§ã¯ãæ å ±ããªã¢ã«ã¿ã€ã ã§åŠçãæç€ºããèœåã¯ããã¯ãèŽ æ²¢ã§ã¯ãªãå¿ èŠäžå¯æ¬ ã§ããã©ã€ãæ ªäŸ¡è¡šç€ºããœãŒã·ã£ã«ã¡ãã£ã¢ãã£ãŒããããã€ã³ã¿ã©ã¯ãã£ããªããã·ã¥ããŒããã¢ãã®ã€ã³ã¿ãŒãããïŒIoTïŒããã€ã¹ã®ç£èŠãŸã§ããŠãŒã¶ãŒã¯å³ææŽæ°ãšãã€ãããã¯ãªäœéšãæåŸ ããŠããŸããåŸæ¥ã®èŠæ±-å¿çã¢ãã«ã¯ããªã¢ã«ã¿ã€ã ããŒã¿ã®èšå€§ãªéãšé床ã«è¿œãã€ãã®ã«èŠåŽããããšããããããŸããããã§ãããã³ããšã³ãã¹ããªãŒãã³ã°ã¢ãŒããã¯ãã£ãããŠãŒã¶ãŒã®ãã©ãŠã¶å ã§çŽæ¥ãã·ãŒã ã¬ã¹ã§å¹ççããã€å¿çæ§ã®é«ãããŒã¿åŠçãå¯èœã«ããéèŠãªãã©ãã€ã ã·ãããšããŠç»å ŽããŸãã
ããã³ããšã³ãã¹ããªãŒãã³ã°ã¢ãŒããã¯ãã£ã®çè§£
ããã³ããšã³ãã¹ããªãŒãã³ã°ã¢ãŒããã¯ãã£ãšã¯ãã¯ã©ã€ã¢ã³ãïŒéåžžã¯Webãã©ãŠã¶ïŒãšãµãŒããŒéã®é£ç¶çãåæ¹åããŸãã¯åæ¹åã®éä¿¡ãã£ãã«ã確ç«ããããã«äœ¿çšãããèšèšãã¿ãŒã³ãšãã¯ãããžãŒãæããŸããã¯ã©ã€ã¢ã³ãããµãŒããŒã«ç¹°ãè¿ãæŽæ°ãããŒãªã³ã°ããã®ã§ã¯ãªãããµãŒããŒã¯ããŒã¿ãå©çšå¯èœã«ãªã次第ãã¯ã©ã€ã¢ã³ãã«ããŒã¿ãããã·ã¥ããŸãããã®ããã·ã¥ããŒã¹ã®ã¢ãã«ã¯ãé å»¶ãåçã«åæžãããã峿çãªããŒã¿é ä¿¡ãšãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãå¯èœã«ããŸãã
ããã³ããšã³ãã¹ããªãŒãã³ã°ã®äž»ãªç¹åŸŽã¯ä»¥äžã®éãã§ãã
- é£ç¶çãªããŒã¿ãããŒïŒããŒã¿ã¯èŠæ±ã«å¿ããŠåå¥ã®ãã£ã³ã¯ã§é ä¿¡ãããã®ã§ã¯ãªãã確ç«ãããæ¥ç¶ãéããŠé£ç¶çã«æµããŸãã
- äœé å»¶ïŒãµãŒããŒã§ã®ããŒã¿çæããã¯ã©ã€ã¢ã³ãã§ã®è¡šç€ºãŸã§ã®æéãæå°éã«æããããŸãã
- å¹çæ§ïŒç¹°ãè¿ãè¡ãããHTTPèŠæ±ã«é¢é£ãããªãŒããŒããããåæžããããå¹ççãªãªãœãŒã¹å©çšã«ã€ãªãããŸãã
- å¿çæ§ïŒããã³ããšã³ããçä¿¡ããŒã¿ã«å³åº§ã«åå¿ã§ããããã«ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããŸãã
ããã³ããšã³ãã¹ããªãŒãã³ã°ã®ã³ã¢ãã¯ãããžãŒ
ããã€ãã®ãã¯ãããžãŒãããã³ããšã³ãã¹ããªãŒãã³ã°ã¢ãŒããã¯ãã£ã®ããã¯ããŒã³ã圢æããŠããŸãããã¯ãããžãŒã®éžæã¯ãåæ¹åéä¿¡ã®å¿ èŠæ§ãããŒã¿éãæ¢åã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãšã®äºææ§ãªã©ãã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®èŠä»¶ã«äŸåããããšããããããŸãã
1. WebSockets
WebSocketsã¯ãããããåäžã®é·å¯¿åœæ¥ç¶ãéããŠå šäºéïŒåæ¹åïŒéä¿¡ãå¯èœã«ããæãèåãªãã¯ãããžãŒã§ããåæã®HTTPãã³ãã·ã§ã€ã¯ã確ç«ããããšãWebSocketsã¯æ¥ç¶ãæ°žç¶çã§ã¹ããŒããã«ãªãã£ãã«ã«ã¢ããã°ã¬ãŒãããã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ãã¡ãã»ãŒãžãç¬ç«ããŠåæã«éä¿¡ã§ããŸãã
äž»ãªç¹åŸŽïŒ
- åæ¹åéä¿¡ïŒäž¡æ¹åã§ã®ãªã¢ã«ã¿ã€ã ããŒã¿äº€æãå¯èœã«ããŸãã
- äœãªãŒããŒãããïŒç¢ºç«åŸã¯ãæ¥ç¶ã®ãªãŒããŒããããæå°éã§ãããé »ç¹ãªã¡ãã»ãŒãžäº€æã«å¹ççã§ãã
- ãã©ãŠã¶ãµããŒãïŒææ°ã®Webãã©ãŠã¶ã§åºããµããŒããããŠããŸãã
- ãŠãŒã¹ã±ãŒã¹ïŒãªã¢ã«ã¿ã€ã ãã£ããã¢ããªã±ãŒã·ã§ã³ãå ±åç·šéããŒã«ããªã³ã©ã€ã³ã²ãŒã ãããã³å³æãŠãŒã¶ãŒå ¥åãå¿ èŠãªã©ã€ãããŒã¿ãã£ãŒãã
äŸïŒGoogle Docsã®ãããªå ±åããã¥ã¡ã³ãç·šéããŒã«ãæ³åããŠã¿ãŠãã ããããããŠãŒã¶ãŒã倿Žãå ãããšãWebSocketsã¯ãã®å€æŽãæ¥ç¶ãããŠããä»ã®ãã¹ãŠã®ãŠãŒã¶ãŒã«å³åº§ã«ãããŒããã£ã¹ããããããšãä¿èšŒããæŽæ°ããªã¢ã«ã¿ã€ã ã§è¡šç€ºã§ããããã«ããŸããããã¯ãã¯ã©ã€ã¢ã³ãã®ç·šéãšãµãŒããŒã®æŽæ°ã®äž¡æ¹ãã·ãŒã ã¬ã¹ã«æµãããåæ¹åã¹ããªãŒãã³ã°ã®å®ç§ãªäŸã§ãã
2. Server-Sent Events (SSE)
Server-Sent EventsïŒSSEïŒã¯ããµãŒããŒããã¯ã©ã€ã¢ã³ããžã®ãããã·ã³ãã«ã§åæ¹åã®éä¿¡ãã£ãã«ãæäŸããŸããWebSocketsãšã¯ç°ãªããSSEã¯HTTPã«åºã¥ããŠããããµãŒããŒããã©ãŠã¶ã«æŽæ°ãéä¿¡ããããã«ç¹å¥ã«èšèšãããŠããŸãããã©ãŠã¶ã¯éããHTTPæ¥ç¶ãç¶æãããµãŒããŒã¯text/event-stream圢åŒã®ã¡ãã»ãŒãžãšããŠããŒã¿ãããã·ã¥ããŸãã
äž»ãªç¹åŸŽïŒ
- åæ¹åéä¿¡ïŒããŒã¿ã¯ãµãŒããŒããã¯ã©ã€ã¢ã³ãã«ã®ã¿æµããŸãã
- ã·ã³ãã«ãïŒç¹ã«èªã¿åãå°çšã®ããŒã¿ã¹ããªãŒã ã®å ŽåãWebSocketsãããå®è£ ã容æã§ãã
- HTTPããŒã¹ïŒæ¢åã®HTTPã€ã³ãã©ã¹ãã©ã¯ãã£ã掻çšãããã¡ã€ã¢ãŠã©ãŒã«ããããã·ã®åŸãã§ããå ç¢ã«ãªããŸãã
- èªå忥ç¶ïŒæ¥ç¶ã倱ãããå Žåããã©ãŠã¶ã¯èªåçã«åæ¥ç¶ããçµã¿èŸŒã¿ãµããŒããåããŠããŸãã
- ãŠãŒã¹ã±ãŒã¹ïŒã©ã€ããã¥ãŒã¹ãã£ãŒããæ ªäŸ¡æŽæ°ãã¹ããŒã¿ã¹ã¡ãã»ãŒãžãããã³ã¯ã©ã€ã¢ã³ãããµãŒããŒããããŒã¿ãåä¿¡ããå¿ èŠãããã ãã®ãã¹ãŠã®ã·ããªãªã
äŸïŒã©ã€ãæ ªäŸ¡æŽæ°ã衚瀺ããéèãã¥ãŒã¹ãŠã§ããµã€ããèããŠã¿ãŠãã ãããSSEã¯ããã§çæ³çãªãã¯ãããžãŒã§ããæ ªäŸ¡ãå€åãããšããµãŒããŒã¯ãããã®æŽæ°ããŠãŒã¶ãŒã®ãã©ãŠã¶ã«ããã·ã¥ã§ãã衚瀺ãããããŒã¿ãåžžã«ææ°ã§ããããšãä¿èšŒããŸããããŒãªã³ã°ãçµ¶ããè¡ãå¿ èŠã¯ãããŸããããã©ãŠã¶ã®ãã€ãã£ãåæ¥ç¶æ©èœã«ãããæ¥ç¶ãäžæçã«åæãããå Žåã§ããèªåçã«å確ç«ããŠæŽæ°ã®åä¿¡ãç¶è¡ããããšããŸãã
3. ã¡ãã»ãŒãžãã¥ãŒãšPub/Subãã¿ãŒã³
WebSocketsãSSEã¯çŽæ¥çãªã¯ã©ã€ã¢ã³ã-ãµãŒããŒéä¿¡ãåŠçããŸãããã¡ãã»ãŒãžãã¥ãŒãšPublish/SubscribeïŒPub/SubïŒãã¿ãŒã³ã¯ãããã¯ãšã³ãã§ã®ããŒã¿ãããŒã®ç®¡çãšãè€æ°ã®ã¯ã©ã€ã¢ã³ããžã®å¹ççãªé ä¿¡ã«ãããŠããã°ãã°éèŠãªåœ¹å²ãæãããŸããRabbitMQãKafkaãRedis Pub/Subãªã©ã®ãã¯ãããžãŒã¯ä»²ä»è ãšããŠæ©èœããããŒã¿ãããã¥ãŒãµãŒãšããŒã¿ã³ã³ã·ã¥ãŒããŒãåé¢ããŸãã
ããã³ããšã³ãã¹ããªãŒãã³ã°ãšã®çµ±åæ¹æ³ïŒ
- åé¢ïŒããŒã¿ãçæããããã¯ãšã³ããµãŒãã¹ã¯ãã©ã®ã¯ã©ã€ã¢ã³ãããªãã¹ã³ããŠããããç¥ãå¿ èŠãªãã«ããã¥ãŒãŸãã¯ãããã¯ã«ã¡ãã»ãŒãžãçºè¡ã§ããŸãã
- ã¹ã±ãŒã©ããªãã£ïŒã¡ãã»ãŒãžãã¥ãŒã¯ããŒã¿ããããã¡ãªã³ã°ãããã©ãã£ãã¯ã®æ¥å¢ãåŠçã§ãããããããŒã¿ã倱ãããªãããšãä¿èšŒããŸãã
- ãã¡ã³ã¢ãŠãïŒåäžã®ã¡ãã»ãŒãžãè€æ°ã®ãµãã¹ã¯ã©ã€ããŒïŒã¯ã©ã€ã¢ã³ãïŒã«ã«ãŒãã£ã³ã°ã§ãããªã¢ã«ã¿ã€ã æŽæ°ã倿°ã®ãŠãŒã¶ãŒã«åæã«å¹ççã«é ä¿¡ã§ããŸãã
äŸïŒãœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ã«ã¯ãäœçŸäžãã®ãŠãŒã¶ãŒãããå ŽåããããŸãããŠãŒã¶ãŒãæŽæ°ãæçš¿ãããšããã®ã€ãã³ãã¯ã¡ãã»ãŒãžãã¥ãŒã«çºè¡ãããå¯èœæ§ããããŸããæ¬¡ã«ãå°çšã®ãµãŒãã¹ïŒäŸïŒWebSocketãµãŒããŒïŒããã®ãã¥ãŒããµãã¹ã¯ã©ã€ãããæ°ããæçš¿ãååŸããŠãæ¥ç¶ãããŠãããã¹ãŠã®ãã©ãã¯ãŒã®ãã©ãŠã¶ã«WebSocketãŸãã¯SSEã䜿çšããŠã¹ããªãŒãã³ã°ããŸãããã®Pub/Subã¢ãããŒãã«ãããæçš¿ãµãŒãã¹ããã¹ãŠã®ãã©ãã¯ãŒãšã®åå¥ã®æ¥ç¶ã管çããå¿ èŠããªããªããŸãã
ããã³ããšã³ãã¹ããªãŒãã³ã°ã¢ãŒããã¯ãã£ã®ã¡ãªãã
ããã³ããšã³ãã¹ããªãŒãã³ã°ã¢ãŒããã¯ãã£ãæ¡çšããããšã§ãææ°ã®Webã¢ããªã±ãŒã·ã§ã³ã«å€§ããªã¡ãªãããåŸãããŸãã
1. ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäž
ãªã¢ã«ã¿ã€ã æŽæ°ã¯ãããé åçã§ã€ã³ã¿ã©ã¯ãã£ããªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãçã¿åºããŸãããŠãŒã¶ãŒã¯ã¢ããªã±ãŒã·ã§ã³ãšã®ã€ãªããããã匷ãæããèªåã®è¡åãç°å¢ã®å€åã«å¯ŸããŠå³åº§ã«ãã£ãŒãããã¯ãåãåããŸãããã®å¿çæ§ã¯ãã¿ã€ã ãªãŒãªæ å ±ãæéèŠèŠãããã¢ããªã±ãŒã·ã§ã³ã§ã¯äžå¯æ¬ ã§ãã
2. ãµãŒããŒè² è·ã®è»œæžãšå¹çã®åäž
ããŒãªã³ã°ããŒã¹ã®ã¢ãã«ããããã·ã¥ããŒã¹ã®ã¢ãã«ã«ç§»è¡ããããšã§ãã¹ããªãŒãã³ã°ã¢ãŒããã¯ãã£ã¯ããµãŒããŒãåŠçããå¿ èŠã®ããäžèŠãªèŠæ±ã®æ°ãå€§å¹ ã«åæžããŸããããã«ããããµãŒããŒã®CPUããã³ã¡ã¢ãªäœ¿çšçãäœäžãããããã¯ãŒã¯å¹çãåäžããã€ã³ãã©ã¹ãã©ã¯ãã£ã³ã¹ãã®æ¯äŸå¢å ãªãã«ãããå€ãã®åæãŠãŒã¶ãŒã«ã¢ããªã±ãŒã·ã§ã³ãã¹ã±ãŒãªã³ã°ã§ããããã«ãªããŸãã
3. ãªã¢ã«ã¿ã€ã ããŒã¿åæ
ã¹ããªãŒãã³ã°ã¯ãè€æ°ã®ã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§ç¶æ ãåæãããããã«äžå¯æ¬ ã§ããããã¯ãå ±åã¢ããªã±ãŒã·ã§ã³ãã©ã€ãããã·ã¥ããŒãããŸãã¯ãã¹ãŠã®ãŠãŒã¶ãŒã«ãšã£ãŠäžè²«æ§ã®ããææ°ã®ããŒã¿ãå¿ èŠãªããããã·ããªãªã§éèŠã§ãã
4. æ°ããã¢ããªã±ãŒã·ã§ã³ã¿ã€ãã®æå¹å
ããã³ããšã³ãã¹ããªãŒãã³ã°ã¯ãåŸæ¥ã®ã¢ãŒããã¯ãã£ã§ã¯å®çŸäžå¯èœã ã£ããŸã£ããæ°ããã«ããŽãªã®ã¢ããªã±ãŒã·ã§ã³ãžã®æãéããŸããããã«ã¯ãè€éãªãªã¢ã«ã¿ã€ã åæãã©ãããã©ãŒã ãã€ã³ã¿ã©ã¯ãã£ããªåŠç¿ç°å¢ãããã³æŽç·ŽãããIoTç£èŠã·ã¹ãã ãå«ãŸããŸãã
課é¡ãšèæ ®äºé
匷åã§ã¯ãããŸãããããã³ããšã³ãã¹ããªãŒãã³ã°ã¢ãŒããã¯ãã£ã®å®è£ ã«ã¯ç¬èªã®èª²é¡ã䌎ããŸãã
1. æ¥ç¶ç®¡çãšä¿¡é Œæ§
倿°ã®ãŠãŒã¶ãŒã«å¯ŸããŠæ°žç¶çãªæ¥ç¶ãç¶æããããšã¯ããªãœãŒã¹ã倧éã«æ¶è²»ããå¯èœæ§ããããŸããæ¥ç¶ã©ã€ããµã€ã¯ã«ã®ç®¡çãåæã®æ£åžžãªåŠçãããã³å ç¢ãªåæ¥ç¶ã¡ã«ããºã ã®å®è£ æŠç¥ã¯äžå¯æ¬ ã§ãããããã¯ãŒã¯ã®äžå®å®ãã¯ãããã®æ¥ç¶ã劚ããå¯èœæ§ããããã¯ã©ã€ã¢ã³ãã§ã®æ éãªãšã©ãŒåŠçãšç¶æ 管çãå¿ èŠã§ãã
2. ããã¯ãšã³ãã®ã¹ã±ãŒã©ããªãã£
ããã¯ãšã³ãã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãé«ããªã¥ãŒã ã®åææ¥ç¶ãåŠçãããã¹ãŠã®ãµãã¹ã¯ã©ã€ããããŠããã¯ã©ã€ã¢ã³ãã«å¹ççã«ããŒã¿ãããã·ã¥ã§ããå¿ èŠããããŸããããã«ã¯ãå€ãã®å Žåãç¹æ®ãªWebSocketãµãŒããŒãããŒããã©ã³ã·ã³ã°ãããã³ãµãŒããŒãªãœãŒã¹å²ãåœãŠã®æ éãªæ€èšãå¿ èŠã§ããWebSocketãµãŒããŒã®ã¹ã±ãŒãªã³ã°ã¯ãã¹ããŒãã¬ã¹HTTPãµãŒããŒã®ã¹ã±ãŒãªã³ã°ãããè€éã«ãªãå¯èœæ§ããããŸãã
3. ããŒã¿éãšåž¯åå¹ æ¶è²»
ã¹ããªãŒãã³ã°ã¯ããŒãªã³ã°ãããå¹ççã§ããå¯èœæ§ããããŸãããç¹ã«å€§ããªãã€ããŒããŸãã¯é »ç¹ãªæŽæ°ã䌎ãé£ç¶çãªããŒã¿ãããŒã¯ãããªãã®åž¯åå¹ ãæ¶è²»ããå¯èœæ§ããããŸããããŒã¿ãã€ããŒãã®æ éãªæé©åãäžèŠãªæ å ±ã®ãã£ã«ã¿ãªã³ã°ãããã³ãã«ã¿ãšã³ã³ãŒãã£ã³ã°ãªã©ã®æè¡ã®å®è£ ã¯ãããã軜æžããã®ã«åœ¹ç«ã¡ãŸãã
4. ãšã©ãŒåŠçãšãããã°
ãªã¢ã«ã¿ã€ã ã®ã€ãã³ãé§ååã·ã¹ãã ã®ãããã°ã¯ãåŸæ¥ã®èŠæ±-å¿çã·ã¹ãã ã®ãããã°ãããå°é£ã«ãªãå¯èœæ§ããããŸããåé¡ã¯ãç«¶åç¶æ ããããã¯ãŒã¯ã®åé¡ããŸãã¯ã¡ãã»ãŒãžã®é åºèª€ãããçºçããå¯èœæ§ããããŸããå æ¬çãªãã®ã³ã°ãç£èŠãããã³å ç¢ãªã¯ã©ã€ã¢ã³ããµã€ããšã©ãŒåŠçãäžå¯æ¬ ã§ãã
5. ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
æ°žç¶çãªæ¥ç¶ã®ä¿è·ã¯æåªå äºé ã§ããããã«ã¯ã忥ç¶ã«å¯Ÿããé©åãªèªèšŒãšèªå¯ã®ç¢ºä¿ã転éäžã®ããŒã¿ã®æå·åïŒäŸïŒå®å šãªWebSocketã«ã¯WSSã䜿çšïŒãããã³äžè¬çãªWebè匱æ§ããã®ä¿è·ãå«ãŸããŸãã
ããã³ããšã³ãã¹ããªãŒãã³ã°å®è£ ã®ãã¹ããã©ã¯ãã£ã¹
ããã³ããšã³ãã¹ããªãŒãã³ã°ã®å¯èœæ§ãæå€§éã«åŒãåºãã«ã¯ããããã®ãã¹ããã©ã¯ãã£ã¹ãæ€èšããŠãã ããã
1. åãžã§ãã«é©åãªãã¯ãããžãŒãéžæãã
- WebSocketsïŒã¯ã©ã€ã¢ã³ããé »ç¹ã«ããŒã¿ãéä¿¡ããå¿ èŠãããåæ¹åãäœé å»¶éä¿¡ã«æé©ã§ãïŒäŸïŒãã£ãããã²ãŒã ïŒã
- SSEïŒã¯ã©ã€ã¢ã³ããããµãŒããŒãžã®éä¿¡ããªã¢ã«ã¿ã€ã ã§ãªããããŸããªå Žåã«ããµãŒããŒããã¯ã©ã€ã¢ã³ããžã®ããã·ã³ãã«ã§åæ¹åã®ããŒã¿ã¹ããªãŒã ã«æšå¥šãããŸãïŒäŸïŒã©ã€ããã£ãŒããéç¥ïŒã
2. å ç¢ãªåæ¥ç¶æŠç¥ãå®è£ ãã
äžæçãªé害äžã«ãµãŒããŒãå§åããªãããã«ã忥ç¶ã«ã¯ææ°é¢æ°çãªããã¯ãªãã䜿çšããŠãã ãããçµã¿èŸŒã¿ã®ãèšå®å¯èœãªåæ¥ç¶ããžãã¯ãæäŸããã©ã€ãã©ãªã®äœ¿çšãæ€èšããŠãã ããã
3. ããŒã¿ãã€ããŒããæé©åãã
- ããŒã¿ãæå°éã«æããïŒå¿ èŠãªããŒã¿ã®ã¿ãéä¿¡ããŸãã
- ããŒã¿ãå§çž®ããïŒå€§ããªãã€ããŒãã«ã¯å§çž®ã¢ã«ãŽãªãºã ã䜿çšããŸãã
- å¹ççãªåœ¢åŒã䜿çšããïŒç¹ã«å€§ããé »ç¹ãªã¡ãã»ãŒãžã®å ŽåãJSONãããããã©ãŒãã³ã¹åäžã®ããã«Protocol BuffersãMessagePackãªã©ã®ãã€ããªåœ¢åŒãæ€èšããŠãã ããã
- ãã«ã¿æŽæ°ïŒå¯èœãªéããç¶æ å šäœã§ã¯ãªã倿ŽïŒãã«ã¿ïŒã®ã¿ãéä¿¡ããŸãã
4. ãªã¢ã¯ãã£ãããã°ã©ãã³ã°ãšç¶æ 管çãæŽ»çšãã
ãªã¢ã¯ãã£ãããã°ã©ãã³ã°ãã©ãã€ã ïŒäŸïŒReactãVueãAngular with RxJSïŒãæ¡çšããããã³ããšã³ããã¬ãŒã ã¯ãŒã¯ã¯ãããŒã¿ã¹ããªãŒã ã®åŠçã«éåžžã«é©ããŠããŸããç¶æ 管ççšã®ã©ã€ãã©ãªã¯ãçä¿¡ãªã¢ã«ã¿ã€ã ããŒã¿ãå¹ççã«ç®¡çããUIã®äžè²«æ§ã確ä¿ããã®ã«åœ¹ç«ã¡ãŸãã
äŸïŒReactã¢ããªã±ãŒã·ã§ã³ã§ã¯ã`react-use-websocket`ã®ãããªã©ã€ãã©ãªã䜿çšããããReduxãZustandã®ãããªç¶æ 管çãœãªã¥ãŒã·ã§ã³ãšçµ±åããŠãçä¿¡WebSocketã¡ãã»ãŒãžãåŠçããã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãæŽæ°ããŠãé¢é£ããUIã³ã³ããŒãã³ãã®åã¬ã³ããªã³ã°ãããªã¬ãŒã§ããŸãã
5. æ¥ç¶ãã«ã¹çšã®ããŒãããŒããå®è£ ãã
ã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§å®æçã«å°ãã軜éãªã¡ãã»ãŒãžïŒããŒãããŒãïŒãéä¿¡ããŠãæ¥ç¶ããŸã çããŠããããšã確èªãããããæ¥ç¶ãæ©æã«æ€åºããŸãã
6. æ£åžžãªæ©èœäœäžãšãã©ãŒã«ããã¯
WebSocketãŸãã¯SSEãå®å šã«ãµããŒããããŠããªãããŸãã¯ãããã¯ãããŠããç°å¢ã§ã¯ããã©ãŒã«ããã¯ã¡ã«ããºã ãå®è£ ããŸããããšãã°ãWebSocketã倱æããå Žåãã¢ããªã±ãŒã·ã§ã³ã¯ãã³ã°ããŒãªã³ã°ã«ãã©ãŒã«ããã¯ã§ããŸããSSEã¯ãç¹å®ã®ãããã¯ãŒã¯æ§æã§ã¯WebSocketããããããã¯ããã«ããå ŽåããããŸãã
7. ãµãŒããŒãµã€ãã®ã¹ã±ãŒãªã³ã°ãšã¢ãŒããã¯ãã£
ããã¯ãšã³ããè² è·ãåŠçã§ããããšã確èªããŠãã ãããããã«ã¯ãç¹æ®ãªWebSocketãµãŒããŒïŒäŸïŒSocket.IOãã«ã¹ã¿ã Node.jsãµãŒããŒïŒã®äœ¿çšãããŒããã©ã³ãµãŒã®æ¡çšãããã³æ¥ç¶ç®¡çãè€æ°ã®ã€ã³ã¹ã¿ã³ã¹ã«åæ£ããããšãå«ãŸããå ŽåããããŸãããã¡ã³ã¢ãŠãæäœã®ããã®ã¡ãã»ãŒãžãã¥ãŒã®å©çšã¯ã倿°ã®ã¯ã©ã€ã¢ã³ããžã®ã¹ã±ãŒãªã³ã°ã«äžå¯æ¬ ã§ãã
8. å æ¬çãªç£èŠãšãã®ã³ã°
æ¥ç¶ã¹ããŒã¿ã¹ãã¡ãã»ãŒãžãããŒãããã³ãšã©ãŒã远跡ããããã«ãã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ã«å ç¢ãªãã®ã³ã°ãå®è£ ããŸããç£èŠããŒã«ã䜿çšããŠãæ¥ç¶æ°ãã¡ãã»ãŒãžã¹ã«ãŒããããããã³é å»¶ã芳å¯ããåé¡ãããã¢ã¯ãã£ãã«ç¹å®ããŠè§£æ±ºããŸãã
ããã³ããšã³ãã¹ããªãŒãã³ã°ã®ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³
ããã³ããšã³ãã¹ããªãŒãã³ã°ã®åœ±é¿ã¯ãããŸããŸãªã°ããŒãã«ç£æ¥ã§æããããŠããŸãã
1. éèãµãŒãã¹
- ãªã¢ã«ã¿ã€ã åžå ŽããŒã¿ïŒäžçäžã®ãã¬ãŒããŒåãã®ã©ã€ãæ ªäŸ¡ãçºæ¿ã¬ãŒããååäŸ¡æ Œã®è¡šç€ºã
- ååŒãã©ãããã©ãŒã ïŒé å»¶ãæå°éã«æããŠååŒãå®è¡ããå³æã®æ³šæã¹ããŒã¿ã¹æŽæ°ãæäŸããŸãã
- äžæ£æ€åºïŒäžæ£ãªã¢ã¯ãã£ããã£ãçºçãããšãã«ããªã¢ã«ã¿ã€ã ã§éèååŒãç£èŠããŠç¹å®ãããã©ã°ãç«ãŠãŸãã
äŸïŒãã³ãã³èšŒåžååŒæããã¥ãŒãšãŒã¯èšŒåžååŒæãªã©ã®äž»èŠãªã°ããŒãã«ååŒæã¯ãéèæ©é¢ã«ãªã¢ã«ã¿ã€ã ããŒã¿ãã£ãŒããæäŸããŠããŸããããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã¯ããããã®ãã£ãŒããã¹ããªãŒãã³ã°ãã¯ãããžãŒãä»ããŠæ¶è²»ãã倧éžäžã®ãŠãŒã¶ãŒã«ã©ã€ãååŒã€ã³ãµã€ããæäŸããŸãã
2. Eã³ããŒã¹
- ã©ã€ãåšåº«æŽæ°ïŒç¹ã«ã°ããŒãã«ãã©ãã£ãã¯ãæ¹ãã€ãããã©ãã·ã¥ã»ãŒã«äžã«ãéå°è²©å£²ãé²ãããã«çŸåšã®åšåº«ã¬ãã«ã衚瀺ããŸãã
- ããŒãœãã©ã€ãºãããæšå¥šïŒãŠãŒã¶ãŒãé²èЧããã«ã€ããŠãè£œåæšå¥šãåçã«æŽæ°ããŸãã
- 泚æè¿œè·¡ïŒé éããã»ã¹ãç§»åããã«ã€ããŠãè³Œå ¥ã®ãªã¢ã«ã¿ã€ã ã¹ããŒã¿ã¹æŽæ°ãæäŸããŸãã
3. ãœãŒã·ã£ã«ã¡ãã£ã¢ãšã³ãã¥ãã±ãŒã·ã§ã³
- ã©ã€ããã£ãŒãïŒæ°ããæçš¿ãã³ã¡ã³ããããã³ããããïŒããçºçãããšãã«è¡šç€ºããŸãã
- ãªã¢ã«ã¿ã€ã ãã£ããïŒäžçäžã®ãŠãŒã¶ãŒéã®ã€ã³ã¹ã¿ã³ãã¡ãã»ãŒãžã³ã°ãå¯èœã«ããŸãã
- ã©ã€ãéç¥ïŒéèŠãªã€ãã³ããã€ã³ã¿ã©ã¯ã·ã§ã³ã«ã€ããŠãŠãŒã¶ãŒã«èŠåããŸãã
äŸïŒTwitterãFacebookã®ãããªãã©ãããã©ãŒã ã¯ãã¹ããªãŒãã³ã°ãå¹ åºã掻çšããŠãäžçäžã®æ°åå人ã®ãŠãŒã¶ãŒã«æ°ããã³ã³ãã³ããšéç¥ãå³åº§ã«é ä¿¡ãã峿æ§ãšåžžææ¥ç¶ã®æèŠãç¶æããŠããŸãã
4. ã¢ãã®ã€ã³ã¿ãŒãããïŒIoTïŒ
- ããã€ã¹ç£èŠïŒæ¥ç¶ãããããã€ã¹ããã®ãªã¢ã«ã¿ã€ã ã»ã³ãµãŒããŒã¿ïŒäŸïŒæž©åºŠãå§åãäœçœ®ïŒã®è¡šç€ºã
- ç£æ¥ãªãŒãã¡ãŒã·ã§ã³ïŒå·¥å Žå ã®æ©æ¢°ãçç£ã©ã€ã³ã®ã©ã€ãã¹ããŒã¿ã¹æŽæ°ãæäŸããŸãã
- ã¹ããŒãã·ãã£ïŒãªã¢ã«ã¿ã€ã ã®äº€éæµãç°å¢ããŒã¿ãããã³ãŠãŒãã£ãªãã£äœ¿çšç¶æ³ãèŠèŠåããŸãã
äŸïŒã°ããŒãã«è£œé äŒæ¥ã¯ãããŸããŸãªå€§éžã®ããŸããŸãªå·¥å Žã«ããæ©æ¢°ã®ããã©ãŒãã³ã¹ãç£èŠããããã«ã¹ããªãŒãã³ã°ã䜿çšããå ŽåããããŸããäžå€®ããã·ã¥ããŒãã¯ãåæ©æ¢°ããã®ãªã¢ã«ã¿ã€ã ããŒã¿ã¹ããªãŒã ãåä¿¡ããéçšã¹ããŒã¿ã¹ãæœåšçãªåé¡ãããã³äž»èŠæ¥çžŸè©äŸ¡ææšã匷調衚瀺ã§ããŸãã
5. ã²ãŒã ãšãšã³ã¿ãŒãã€ã¡ã³ã
- ãã«ããã¬ã€ã€ãŒã²ãŒã ïŒãã¬ã€ã€ãŒã®ã¢ã¯ã·ã§ã³ãšã²ãŒã ç¶æ ããªã¢ã«ã¿ã€ã ã§åæããŸãã
- ã©ã€ãã¹ããªãŒãã³ã°ãã©ãããã©ãŒã ïŒé å»¶ãæå°éã«æããŠãããªãšãã£ãããã£ãŒããé ä¿¡ããŸãã
- ã€ã³ã¿ã©ã¯ãã£ãã©ã€ãã€ãã³ãïŒã©ã€ããããŒããã£ã¹ãäžã®ãªã¢ã«ã¿ã€ã ã®æç¥šãQ&Aã»ãã·ã§ã³ãžã®èŠèŽè ã®åå ãå¯èœã«ããŸãã
çµè«
ããã³ããšã³ãã¹ããªãŒãã³ã°ã¢ãŒããã¯ãã£ã¯ãéçºè ããªã¢ã«ã¿ã€ã ããŒã¿ã®èŠæ±ãåŠçã§ãããéåžžã«å¿çæ§ãé«ããé åçã§å¹ççãªWebã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããããã«ããæ ¹æ¬çãªå€åã§ããWebSocketãServer-Sent Eventsã®ãããªãã¯ãããžãŒã掻çšããæ¥ç¶ç®¡çãããŒã¿æé©åãããã³ã¹ã±ãŒã©ããªãã£ã®ããã®ãã¹ããã©ã¯ãã£ã¹ãéµå®ããããšã«ãããäŒæ¥ã¯æ°ããã¬ãã«ã®ãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãšããŒã¿æŽ»çšãè§£ãæŸã€ããšãã§ããŸããããŒã¿éãšé床ãå¢å ãç¶ããã«ã€ããŠãããã³ããšã³ãã¹ããªãŒãã³ã°ãæ¡çšããããšã¯ãç«¶äºåãç¶æããåªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã®ãªãã·ã§ã³ã§ã¯ãªããæŠç¥çãªå¿ é äºé ã§ãã