å ç¢ãªãã«ãããŒãç¶æ åæã®ããã®ããã³ããšã³ã忣ã¹ããŒããã·ã³ãæ¢æ±ããã°ããŒãã«åãã®ã¹ã±ãŒã©ãã«ã§ä¿¡é Œæ§ã®é«ãã¢ããªãå®çŸããŸãã
ããã³ããšã³ã忣ã¹ããŒããã·ã³ïŒãã«ãããŒãç¶æ åæã®ãã¹ã¿ãŒ
仿¥ã®çžäºæ¥ç¶ãããããžã¿ã«ã©ã³ãã¹ã±ãŒãã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯è€æ°ã®ããã€ã¹ããŠãŒã¶ãŒãããã«ã¯å°ççãªå Žæãè¶ããŠã·ãŒã ã¬ã¹ã«æ©èœããããšããŸããŸãæåŸ ãããŠããŸããããã«ãããç¹ã«åæ£ã·ã¹ãã å šäœã§äžè²«æ§ãä¿ã¡ãææ°ã®ç¶æ ãç¶æããå¿ èŠãããã¢ããªã±ãŒã·ã§ã³ç¶æ ã®ç®¡çã«å¯ŸããŠãå ç¢ãªã¢ãããŒããå¿ èŠãšãªããŸããããã§ããã³ããšã³ã忣ã¹ããŒããã·ã³ã®æŠå¿µãç»å ŽããŸãããã®ããã°èšäºã§ã¯ããã®åŒ·åãªã¢ãŒããã¯ãã£ãã¿ãŒã³ã䜿çšããŠãã«ãããŒãç¶æ åæãéæããããšã«é¢é£ããååã課é¡ãããã³ãã¹ããã©ã¯ãã£ã¹ãæ·±ãæãäžããŸãã
ã³ã¢ã³ã³ã»ããã®çè§£ïŒåæ£ã¹ããŒããã·ã³ãšã¯äœãïŒ
ãã®æ žå¿ã«ãããŠã忣ã¹ããŒããã·ã³ïŒDSMïŒã¯ãè€æ°ã®ããŒãïŒãµãŒããŒãã¯ã©ã€ã¢ã³ãããŸãã¯ãã®çµã¿åããïŒãéåçã«å ±æç¶æ ãç¶æããã³æŽæ°ããæŠå¿µã¢ãã«ã§ããåããŒãã¯åãæäœã·ãŒã±ã³ã¹ãå®è¡ããããŒã«ã«ã®ç¶æ ã®ã³ããŒãåäžã®ã°ããŒãã«ãªç¶æ ã«åæããããšãä¿èšŒããŸããéèŠãªã®ã¯ããããã®æäœã決å®è«çã§ããããšã§ããã€ãŸããåãåæç¶æ ãšåãæäœã·ãŒã±ã³ã¹ãäžããããã°ããã¹ãŠã®ããŒãã¯åãæçµç¶æ ã«å°éããŸãã
ããã³ããšã³ãéçºã®æèã§ã¯ããã®æŠå¿µã¯ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãšã¢ããªã±ãŒã·ã§ã³æ©èœã«ãšã£ãŠéèŠã§ãããªãããããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãã€ã³ã¹ã¿ã³ã¹éã§åæããå¿ èŠãããç¶æ ã管çããããã«æ¡åŒµãããŸããè€æ°ã®ãŠãŒã¶ãŒãåæã«ã¿ã€ãã³ã°ããŠããå ±åããã¥ã¡ã³ããšãã£ã¿ããã¬ã€ã€ãŒãå ±æã²ãŒã äžçãšå¯Ÿè©±ãããªã¢ã«ã¿ã€ã ã®ãã«ããã¬ã€ã€ãŒã²ãŒã ããŸãã¯å€æ°ã®ããã€ã¹ããã®ããŒã¿ã衚瀺ããIoTããã·ã¥ããŒããæ³åããŠã¿ãŠãã ããããããã®ãã¹ãŠã®ã·ããªãªã«ãããŠãåå ããŠãããã¹ãŠã®ããã³ããšã³ãã€ã³ã¹ã¿ã³ã¹ã§äžè²«ããç¶æ ã®ãã¥ãŒãç¶æããããšãæãéèŠã§ãã
ãªããã«ãããŒãç¶æ åæãã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠéèŠãªã®ãïŒ
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã察象ãšããã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠã广çãªç¶æ åæã®å¿ èŠæ§ã¯ã以äžã®çç±ã«ããããã«é¡èã«ãªããŸãã
- å°ççãªåæ£ïŒãŠãŒã¶ãŒã¯ç°ãªã倧éžã«åæ£ããŠããããããã¯ãŒã¯ã®é å»¶ãæœåšçãªãããã¯ãŒã¯åæãåŒãèµ·ãããŸãã
- 倿§ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒãŠãŒã¶ãŒã¯æ§ã ãªããã€ã¹ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããã¢ããªã±ãŒã·ã§ã³ãšå¯Ÿè©±ãããããããç¬èªã®ããŒã«ã«ç¶æ 管çã®ãã¥ã¢ã³ã¹ãæã€å¯èœæ§ããããŸãã
- ãªã¢ã«ã¿ã€ã ã³ã©ãã¬ãŒã·ã§ã³ïŒå€ãã®çŸä»£çãªã¢ããªã±ãŒã·ã§ã³ã¯ãªã¢ã«ã¿ã€ã ã®ã³ã©ãã¬ãŒã·ã§ã³æ©èœã«äŸåããŠããããã¹ãŠã®ã¢ã¯ãã£ããªåå è éã§å³æãã€äžè²«ããæŽæ°ãèŠæ±ããŸãã
- é«å¯çšæ§ãšãã©ãŒã«ããã¬ã©ã³ã¹ïŒã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã¯ãäžéšã®ããŒãã§é害ãçºçããå Žåã§ãåäœãç¶ããªããã°ãªããŸãããåæã¡ã«ããºã ã¯ãã·ã¹ãã ãå埩ããŠæ©èœãç¶ããããšãä¿èšŒããããã®éµã§ãã
- ã¹ã±ãŒã©ããªãã£ïŒãŠãŒã¶ãŒããŒã¹ãæ¡å€§ããã«ã€ããŠãå¢å ããåææ¥ç¶æ°ãšç¶æ æŽæ°ãå¹ççã«åŠçããèœåãäžå¯æ¬ ã§ãã
é©åãªãã«ãããŒãç¶æ åæããªããã°ããŠãŒã¶ãŒã¯ããŒã¿ã®ç«¶åãå€ãæ å ±ããŸãã¯äžè²«æ§ã®ãªãã¢ããªã±ãŒã·ã§ã³ã®åäœãçµéšããå¯èœæ§ããããããã¯è²§åŒ±ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãšä¿¡é Œã®åªå€±ã«ã€ãªãããŸãã
ããã³ããšã³ã忣ã¹ããŒããã·ã³ã®å®è£ ã«ããã課é¡
ãã®å©ç¹ã¯æããã§ããããã«ãããŒãåæã®ããã®ããã³ããšã³ãDSMã®å®è£ ã«ã¯ãããã€ãã®é倧ãªèª²é¡ããããŸãã
1. ãããã¯ãŒã¯ã®é å»¶ãšä¿¡é Œæ§ã®äœã
ã€ã³ã¿ãŒãããã¯å®ç§ãªãããã¯ãŒã¯ã§ã¯ãããŸããããã±ããã¯å€±ãããããé å»¶ããããé åºãçã£ãŠå°çãããããããšããããŸããã°ããŒãã«ã«åæ£ãããŠãŒã¶ãŒã«ãšã£ãŠããããã®åé¡ã¯å¢å¹ ãããŸããç¶æ ã®äžè²«æ§ã確ä¿ããã«ã¯ããããã®ãããã¯ãŒã¯ã®äžå®å šæ§ã蚱容ã§ããã¡ã«ããºã ãå¿ èŠã§ãã
2. äžŠè¡æ§ãšç«¶å
è€æ°ã®ãŠãŒã¶ãŒãããŒããåãç¶æ ã®èŠçŽ ãåæã«å€æŽããããšãããšãç«¶åãçºçããå¯èœæ§ããããŸãããããã®ç«¶åãæ€åºãã解決ããé©åã«ç®¡çã§ããã·ã¹ãã ãèšèšããããšã¯è€éãªã¿ã¹ã¯ã§ãã
3. ã³ã³ã»ã³ãµã¹ãšé åºä»ã
çã«äžè²«ããç¶æ ã®ããã«ã¯ããã¹ãŠã®ããŒããæäœãé©çšãããé åºã«ã€ããŠåæããå¿ èŠããããŸãã忣ç°å¢ã§ãç¹ã«ãããã¯ãŒã¯ã®é å»¶ãããŒãã®é害ã®å¯èœæ§ãããäžã§ã³ã³ã»ã³ãµã¹ãéæããããšã¯ã忣ã·ã¹ãã ã®åºæ¬çãªåé¡ã§ãã
4. ã¹ã±ãŒã©ããªãã£ãšããã©ãŒãã³ã¹
ããŒãã®æ°ãšç¶æ æŽæ°ã®éãå¢å ããã«ã€ããŠãåæã¡ã«ããºã ã¯ããã©ãŒãã³ã¹ã®ããã«ããã¯ã«ãªãããšãªãå¹ççã«ã¹ã±ãŒã«ããªããã°ãªããŸãããåæã«é¢é£ãããªãŒããŒãããã¯ãã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãã
5. ãã©ãŒã«ããã¬ã©ã³ã¹ãšå埩å
ããŒãã¯æ éããããäžæçã«å©çšã§ããªããªã£ããããããã¯ãŒã¯åæãçµéšãããããããšããããŸããDSMã¯ãããã®é害ã«å¯ŸããŠå埩åããããã·ã¹ãã å šäœãå©çšå¯èœãªç¶æ ãç¶æããé害ã®ããããŒãããªã³ã©ã€ã³ã«æ»ã£ããšãã«ãã®ç¶æ ãå埩ã§ããããšãä¿èšŒããå¿ èŠããããŸãã
6. å®è£ ã®è€éã
å ç¢ãªDSMããŒãããæ§ç¯ããããšã¯è€éãªäœæ¥ã§ããããã«ã¯ããã°ãã°è€éãªåæ£ã·ã¹ãã ã®æŠå¿µãçè§£ããæŽç·Žãããã¢ã«ãŽãªãºã ãå®è£ ããããšãå«ãŸããŸãã
äž»èŠãªæŠå¿µãšã¢ãŒããã¯ãã£ãã¿ãŒã³
ãããã®èª²é¡ã«å¯ŸåŠããããã«ããã«ãããŒãåæã®ããã®ããã³ããšã³ã忣ã¹ããŒããã·ã³ã®æ§ç¯ã«ã¯ãããã€ãã®æŠå¿µãšãã¿ãŒã³ãæ¡çšãããŠããŸãã
1. ã³ã³ã»ã³ãµã¹ã¢ã«ãŽãªãºã
ã³ã³ã»ã³ãµã¹ã¢ã«ãŽãªãºã ã¯ã忣ããŒãéã§ç¶æ ãšæäœã®é åºã«ã€ããŠåæãéæããããã®åºç€ã§ãã人æ°ã®ããäŸã«ã¯ä»¥äžã®ãããªãã®ããããŸãã
- RaftïŒçè§£ãããããšå®è£ ã®å®¹æããç®æããŠèšèšãããRaftã¯ããªãŒããŒããŒã¹ã®ã³ã³ã»ã³ãµã¹ã¢ã«ãŽãªãºã ã§ãã忣ããŒã¿ããŒã¹ãåŒ·ãæŽåæ§ãå¿ èŠãšããã·ã¹ãã ã§åºã䜿çšãããŠããŸãã
- PaxosïŒæãåæã§æã圱é¿åã®ããã³ã³ã»ã³ãµã¹ã¢ã«ãŽãªãºã ã®äžã€ã§ããPaxosã¯ããã®æ£ããã§ç¥ãããŠããŸãããæ£ããå®è£ ããã®ãéåžžã«é£ããããšã§æåã§ãã
- ãŽã·ãããããã³ã«ïŒå³å¯ã«ã¯åŒ·ãã³ã³ã»ã³ãµã¹ãéæããããã®ãã®ã§ã¯ãããŸãããããŽã·ãããããã³ã«ã¯ïŒç¶æ æŽæ°ã®ãããªïŒæ å ±ããããã¯ãŒã¯å šäœã«åæ£çãã€ãã©ãŒã«ããã¬ã©ã³ããªæ¹æ³ã§äŒæãããã®ã«åªããŠããŸãããããã¯ãã°ãã°çµææŽåæ§ã®ããã«äœ¿çšãããŸãã
ããã³ããšã³ãDSMã«ãšã£ãŠãã³ã³ã»ã³ãµã¹ã¢ã«ãŽãªãºã ã®éžæã¯ãæãŸããæŽåæ§ã¢ãã«ãšç®¡çããææ¬²ã®ããè€éãã«ãã°ãã°äŸåããŸãã
2. æŽåæ§ã¢ãã«
ã¢ããªã±ãŒã·ã§ã³ããšã«ãç¶æ ãã©ãã ãè¿ éã«ããããŠã©ãã ãå³å¯ã«åæãããªããã°ãªããªããã«ã€ããŠã®èŠä»¶ã¯ç°ãªããŸããæŽåæ§ã¢ãã«ãçè§£ããããšã¯éåžžã«éèŠã§ãã
- åŒ·ãæŽåæ§ïŒã©ã®ããŒãã«ã¢ã¯ã»ã¹ããŠãããã¹ãŠã®èªã¿åãæäœã¯ææ°ã®æžã蟌ã¿ãè¿ããŸããããã¯æãçŽæçãªã¢ãã«ã§ãããããã©ãŒãã³ã¹ãšå¯çšæ§ã®é¢ã§ã³ã¹ãããããå¯èœæ§ããããŸããRaftãšPaxosã¯éåžžãåŒ·ãæŽåæ§ãç®æããŸãã
- çµææŽåæ§ïŒæ°ããæŽæ°ãè¡ãããªããã°ããã¹ãŠã®èªã¿åãã¯ãããæåŸã®æŽæ°å€ãè¿ãããã«ãªããŸãããã®ã¢ãã«ã¯ã峿ã®äžè²«æ§ãããå¯çšæ§ãšããã©ãŒãã³ã¹ãåªå ããŸãããŽã·ãããããã³ã«ã¯ãã°ãã°çµææŽåæ§ã«ã€ãªãããŸãã
- å ææŽåæ§ïŒæäœAãæäœBã«å æçã«å è¡ããå ŽåãBãèŠãããŒãã¯AãèŠãªããã°ãªããŸãããããã¯åŒ·ãæŽåæ§ããã匱ãä¿èšŒã§ãããçµææŽåæ§ããã¯åŒ·ãã§ãã
æŽåæ§ã¢ãã«ã®éžæã¯ãåæããžãã¯ã®è€éããšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«çŽæ¥åœ±é¿ããŸããå€ãã®ã€ã³ã¿ã©ã¯ãã£ããªããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã§ã¯ãåŒ·ãæŽåæ§ãšèš±å®¹å¯èœãªããã©ãŒãã³ã¹ã®éã®ãã©ã³ã¹ãæ±ããããŸãã
3. ç¶æ ã¬ããªã±ãŒã·ã§ã³
DSMã®äžå¿çãªã¢ã€ãã¢ã¯ãåããŒããã°ããŒãã«ç¶æ ã®ã¬ããªã«ãç¶æããããšã§ããç¶æ ã¬ããªã±ãŒã·ã§ã³ã«ã¯ããã®ç¶æ ãè€æ°ã®ããŒãéã§ã³ããŒãç¶æããããšãå«ãŸããŸããããã¯æ§ã ãªæè¡ãéããŠè¡ãããšãã§ããŸãã
- ãã©ã€ããª-ããã¯ã¢ããïŒãªãŒããŒ-ãã©ãã¯ãŒïŒïŒ1ã€ã®ããŒãïŒãã©ã€ããª/ãªãŒããŒïŒããã¹ãŠã®æžã蟌ã¿ãåŠçãããããããã¯ã¢ããïŒãã©ãã¯ãŒïŒããŒãã«è€è£œãã責任ãè² ããŸããããã¯Raftãæ¡çšããã·ã¹ãã ã§äžè¬çã§ãã
- ã¯ã©ãŒã©ã ããŒã¹ã®ã¬ããªã±ãŒã·ã§ã³ïŒæžã蟌ã¿ã¯ããŒãã®éåæ°ïŒã¯ã©ãŒã©ã ïŒã«ãã£ãŠç¢ºèªãããå¿ èŠããããèªã¿åãã¯ææ°ã®å©çšå¯èœãªããŒã¿ãååŸããããã«ã¯ã©ãŒã©ã ã«åãåãããå¿ èŠããããŸãã
4. ç«¶åããªãŒè€è£œããŒã¿åïŒCRDTsïŒ
CRDTsã¯ãç«¶åãèªåçã«è§£æ±ºããããšãä¿èšŒãããæ¹æ³ã§è€æ°ã®ã³ã³ãã¥ãŒã¿éã§è€è£œãããããã«èšèšãããããŒã¿æ§é ã§ããããã¹ãŠã®æäœã«å¯ŸããŠè€éãªã³ã³ã»ã³ãµã¹ãããã³ã«ãå¿ èŠãšããã«ã¬ããªã«ãåãç¶æ ã«åæããããšãä¿èšŒããŸãããããã¯ç¹ã«çµææŽåæ§ã·ã¹ãã ãå ±åäœæ¥ã¢ããªã±ãŒã·ã§ã³ã«é©ããŠããŸãã
äŸã«ã¯ä»¥äžã®ãããªãã®ããããŸãã
- ã«ãŠã³ã¿ãŒCRDTsïŒå€ãã€ã³ã¯ãªã¡ã³ã/ãã¯ãªã¡ã³ãããããã
- ã»ããCRDTsïŒã»ããã«èŠçŽ ã远å ãããåé€ãããããããã
- ãªã¹ã/ããã¹ãCRDTsïŒå ±åããã¹ãç·šéã®ããã
CRDTsã¯ãç¹ã«å®å šãªå³ææŽåæ§ãå³å¯ã«å¿ èŠãšããããæçµçãªåæã§ååãªã·ããªãªã«ãããŠãåæããžãã¯ãç°¡çŽ åãã匷åãªæ¹æ³ãæäŸããŸãã
ããã³ããšã³ãDSMã®å®è£ ïŒå®è·µçãªã¢ãããŒã
ããã³ããšã³ãã§æ¬æ Œçãªåæ£ã¹ããŒããã·ã³ãå®è£ ããããšã¯ããªãœãŒã¹ã倧éã«æ¶è²»ããè€éã«ãªãå¯èœæ§ããããŸããããããçŸä»£ã®ããã³ããšã³ããã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªã¯ãããã容æã«ããããŒã«ããã¿ãŒã³ãæäŸããŠããŸãã
1. ã³ã³ã»ã³ãµã¹ã®ããã®ããã¯ãšã³ããµãŒãã¹ã®æŽ»çš
äžè¬çã§ãã°ãã°æšå¥šãããã¢ãããŒãã¯ãäžå¿çãªã³ã³ã»ã³ãµã¹ãšã¹ããŒããã·ã³ã®ããžãã¯ãå ç¢ãªããã¯ãšã³ãã«å§ä»»ããããšã§ããããã³ããšã³ãã¯ã次ã®ãããªã¯ã©ã€ã¢ã³ããšããŠæ©èœããŸãã
- æäœã®éä¿¡ïŒã¹ããŒããã·ã³ã«ãã£ãŠåŠçãããã³ãã³ããã€ãã³ããããã¯ãšã³ãã«éä¿¡ããŸãã
- ç¶æ æŽæ°ã®è³ŒèªïŒéåžžã¯WebSocketããµãŒããŒã»ã³ãã€ãã³ããä»ããŠãããã¯ãšã³ãããç¶æ 倿Žã®éç¥ãåãåããŸãã
- ããŒã«ã«ã¬ããªã«ã®ç¶æïŒåãåã£ãæŽæ°ã«åºã¥ããŠããŒã«ã«ã®UIç¶æ ãæŽæ°ããŸãã
ãã®ã¢ãã«ã§ã¯ãããã¯ãšã³ãã¯éåžžãã°ããŒãã«ç¶æ ã管çããããã«ã³ã³ã»ã³ãµã¹ã¢ã«ãŽãªãºã ïŒRaftãªã©ïŒãå®è¡ããŸããããã¯ãšã³ãã§ã¯ã忣å調ã®ããã«etcdãZookeeperã®ãããªã©ã€ãã©ãªã䜿çšãããããããã¯ãŒãã³ã°ã«libuvãã«ã¹ã¿ã ã®ã³ã³ã»ã³ãµã¹ããžãã¯ã䜿çšããŠã«ã¹ã¿ã å®è£ ãæ§ç¯ãããããããšãã§ããŸãã
2. ããã³ããšã³ãç¹åã®ã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ã®äœ¿çš
ããåçŽãªã·ããªãªãç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã®ããã«ãDSMã®æŠå¿µãããã³ããšã³ãã«ããããããšãç®çãšããã©ã€ãã©ãªãç»å ŽããŠããŸãã
- YjsïŒCRDTsã䜿çšããå ±åç·šéã®ããã®äººæ°ã®ãããªãŒãã³ãœãŒã¹ãã¬ãŒã ã¯ãŒã¯ã§ããè€æ°ã®ãŠãŒã¶ãŒããªã¢ã«ã¿ã€ã ã§ããã¥ã¡ã³ããä»ã®ããŒã¿æ§é ãç·šéãããªãã©ã€ã³ã§ãã¯ã©ã€ã¢ã³ãéã§å¹ççã«å€æŽãåæãããããšãã§ããŸããYjsã¯ãã¢ããŒãã¢ã¢ãŒããŸãã¯å調ã®ããã®äžå€®ãµãŒããŒãšé£æºããŠåäœã§ããŸãã
- AutomergeïŒè±å¯ãªããŒã¿åãšå¹ççãªå€æŽè¿œè·¡ã«çŠç¹ãåœãŠããå ±åã¢ããªã±ãŒã·ã§ã³åãã®å¥ã®CRDTããŒã¹ã®ã©ã€ãã©ãªã§ãã
- RxDBïŒäž»ã«ãã©ãŠã¶çšã®ãªã¢ã¯ãã£ãããŒã¿ããŒã¹ã§ãããRxDBã¯ã¬ããªã±ãŒã·ã§ã³ããµããŒãããå€ãã®å Žåããã¯ãšã³ãã®åæãµãŒããŒãä»ããŠè€æ°ã®ã¯ã©ã€ã¢ã³ãéã§ç¶æ ãåæããããã«æ§æã§ããŸãã
ãããã®ã©ã€ãã©ãªã¯CRDTsãšåæã®è€éãã®å€ããæœè±¡åããããã³ããšã³ãéçºè ãã¢ããªã±ãŒã·ã§ã³ããžãã¯ã®æ§ç¯ã«éäžã§ããããã«ããŸãã
3. OrbitDBã®ãããªã©ã€ãã©ãªã«ãããã¢ããŒãã¢åæ
忣ã¢ããªã±ãŒã·ã§ã³ïŒdAppsïŒãäžå€®ãµãŒããŒãæãŸãããªãã·ããªãªã§ã¯ããã¢ããŒãã¢ïŒP2PïŒåæãéèŠã«ãªããŸããIPFSäžã«æ§ç¯ãããOrbitDBã®ãããªã©ã€ãã©ãªã¯ããã¢ã®ãããã¯ãŒã¯éã§è€è£œã§ãã忣ããŒã¿ããŒã¹ãå¯èœã«ããŸããããã«ããããªãã©ã€ã³ãã¡ãŒã¹ãæ©èœãšæ€é²èæ§ãå¯èœã«ãªããŸãã
P2Pã·ããªãªã§ã¯ãåã¯ã©ã€ã¢ã³ãã忣ã·ã¹ãã å ã®ããŒããšããŠæ©èœããåæããžãã¯ã®äžéšãå®è¡ããå¯èœæ§ããããŸããããã¯ãã°ãã°ãå ç¢æ§ã®ããã«çµææŽåæ§ã¢ãã«ãšCRDTsãšçµã¿åããããŸãã
ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã®ããã®èšèšïŒèæ ®äºé ãšãã¹ããã©ã¯ãã£ã¹
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã®ããã³ããšã³ãDSMãèšèšããéã«ã¯ãããã€ãã®èŠçŽ ãæ éã«èæ ®ããå¿ èŠããããŸãã
1. å°ççãªé å»¶ã®æé©å
ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒïŒããã³ããšã³ãã®ã¢ã»ãããšAPIãšã³ããã€ã³ããããŠãŒã¶ãŒã«å°ççã«è¿ãå ŽæããæäŸãããããã«ããŸããããã«ãããåæããŒãæéãççž®ãããå¿çæ§ãåäžããŸãã
ãšããžã³ã³ãã¥ãŒãã£ã³ã°ïŒãªã¢ã«ã¿ã€ã ã§éèŠãªæäœã«ã€ããŠã¯ãã³ã³ã»ã³ãµã¹ãšç¶æ æŽæ°ã®é å»¶ãæå°éã«æããããã«ããŠãŒã¶ãŒã®ã¯ã©ã¹ã¿ãŒã«è¿ãå Žæã«ããã¯ãšã³ãã®ã¹ããŒããã·ã³ã€ã³ã¹ã¿ã³ã¹ããããã€ããããšãæ€èšããŸãã
ãªãŒãžã§ãã«ãµãŒããŒïŒäžå€®éæš©åã®ããã¯ãšã³ãã䜿çšããå ŽåããªãŒãžã§ãã«ãµãŒããŒãæã€ããšã§ãäžçã®ããŸããŸãªå°åã®ãŠãŒã¶ãŒã®é å»¶ãå€§å¹ ã«åæžã§ããŸãã
2. ã¿ã€ã ãŸãŒã³ã𿥿ã®åŠç
ã¿ã€ã ã¹ã¿ã³ãã®ä¿åãšåŠçã«ã¯åžžã«UTCã䜿çšããŸãã衚瀺ç®çã§ã®ã¿ããŒã«ã«ã®ã¿ã€ã ãŸãŒã³ã«å€æããŸããããã«ãããæ··ä¹±ãé²ããç°ãªãå°åéã§ã®ã€ãã³ãã®é åºã®äžè²«æ§ãä¿èšŒãããŸãã
3. ããŒã«ã©ã€ãŒãŒã·ã§ã³ãšåœéåïŒi18n/l10nïŒ
ç¶æ åæã«çŽæ¥é¢é£ããããã§ã¯ãããŸããããã¢ããªã±ãŒã·ã§ã³ã®UIãšãŠãŒã¶ãŒåãã®ããã¹ããå«ãç¶æ ãããŒã«ã©ã€ãºå¯èœã§ããããšã確èªããŠãã ãããããã¯ãæååã®ç¶æ ãã©ã®ããã«ç®¡çãã衚瀺ããããã«åœ±é¿ããŸãã
4. éè²šãšæ°å€ã®ãã©ãŒããã
ç¶æ ã«è²¡åããŒã¿ãæ°å€ãå«ãŸããå Žåã¯ãç°ãªããã±ãŒã«ã«å¯ŸããŠé©åãªãã©ãŒããããšåŠçãä¿èšŒããŸããããã«ã¯ãæ£èŠè¡šçŸãä¿åãã衚瀺çšã«ãã©ãŒãããããããšãå«ãŸããå ŽåããããŸãã
5. ãããã¯ãŒã¯èæ§ãšãªãã©ã€ã³ãµããŒã
ããã°ã¬ãã·ããŠã§ãã¢ããªïŒPWAïŒïŒãµãŒãã¹ã¯ãŒã«ãŒã®ãããªPWAæ©èœãå©çšããŠã¢ããªã±ãŒã·ã§ã³ã·ã§ã«ãšããŒã¿ããã£ãã·ã¥ãããããã¯ãŒã¯æ¥ç¶ãæªãå Žåã«ãªãã©ã€ã³ã¢ã¯ã»ã¹ã𿮵éçãªæ©èœäœäžãå¯èœã«ããŸãã
ããŒã«ã«ã¹ãã¬ãŒãžãšãã£ãã·ã³ã°ïŒé »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ãä¿åããããã«ãããã³ããšã³ãã§ã¹ããŒããªãã£ãã·ã³ã°æŠç¥ãå®è£ ããŸããç¶æ åæã®ããã«ããã®ããŒã«ã«ãã£ãã·ã¥ã¯ãªãã©ã€ã³æã®ãããã¡ããã³ä¿¡é Œã§ããæ å ±æºãšããŠæ©èœã§ããŸãã
èª¿æŽæŠç¥ïŒæ¥ç¶ãå埩ãããšãã«ãããã³ããšã³ããããŒã«ã«ã®å€æŽã忣ã·ã¹ãã ããåãåã£ãæŽæ°ãšã©ã®ããã«èª¿æŽããããèšèšããŸããCRDTsã¯ããã§åªããŠããŸãã
6. ããã©ãŒãã³ã¹ç£èŠãšæé©å
ãããã¡ã€ãªã³ã°ïŒå®æçã«ããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ããããã¡ã€ãªã³ã°ããŠãç¹ã«ç¶æ ã®æŽæ°ãšåæã«é¢é£ããããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããŸãã
ãããŠã³ã¹ãšã¹ããããªã³ã°ïŒé«é »åºŠã®ã€ãã³ãïŒãŠãŒã¶ãŒå ¥åãªã©ïŒã«ã¯ããããŠã³ã¹ãšã¹ããããªã³ã°ã®æè¡ã䜿çšããŠãç¶æ æŽæ°ãšãããã¯ãŒã¯ãªã¯ãšã¹ãã®æ°ãæžãããŸãã
å¹ççãªç¶æ 管çïŒããã³ããšã³ãã®ç¶æ 管çã©ã€ãã©ãªïŒReduxãZustandãVuexãPiniaãªã©ïŒãå¹ççã«å©çšããŸããã»ã¬ã¯ã¿ãšãµãã¹ã¯ãªãã·ã§ã³ãæé©åããŠãå¿ èŠãªUIã³ã³ããŒãã³ãã®ã¿ãåã¬ã³ããªã³ã°ãããããã«ããŸãã
7. ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
èªèšŒãšèªå¯ïŒèªå¯ããããŠãŒã¶ãŒã®ã¿ãæ©å¯ç¶æ ã«ã¢ã¯ã»ã¹ã倿Žã§ããããã«ããŸãã
ããŒã¿ã®å®å šæ§ïŒä»ã®ããŒãããåä¿¡ããããŒã¿ã®å®å šæ§ãæ€èšŒããã¡ã«ããºã ãæ¡çšããŸããç¹ã«P2Pã·ããªãªã§ã¯ãæå·ããã·ã¥ã圹ç«ã¡ãŸãã
å®å šãªéä¿¡ïŒè»¢éäžã®ããŒã¿ãä¿è·ããããã«ãTLS/SSLäžã®WebSocketãªã©ã®å®å šãªãããã³ã«ã䜿çšããŸãã
ã±ãŒã¹ã¹ã¿ãã£ïŒDSMã®ååãæŽ»çšããã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³
åžžã«ãããã³ããšã³ã忣ã¹ããŒããã·ã³ããšããŠæç€ºçã«ã©ãã«ä»ããããŠããããã§ã¯ãããŸããããå€ãã®æåããã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã¯ããã®åºç€ãšãªãååãå©çšããŠããŸãã
- Google DocsïŒããã³ãã®ä»ã®å ±åç·šéãšãã£ã¿ïŒïŒãããã®ã¢ããªã±ãŒã·ã§ã³ã¯ãªã¢ã«ã¿ã€ã ã®å ±åç·šéã«åªããŠããŸãã倿°ã®ãŠãŒã¶ãŒéã§ããã¹ããã«ãŒãœã«äœçœ®ããã©ãŒããããåæã«åæããããã®æŽç·Žãããæè¡ãæ¡çšããŠããŸããæ£ç¢ºãªå®è£ ã®è©³çްã¯éå ¬éã§ãããCRDTsãŸãã¯åæ§ã®éçšå€æïŒOTïŒã¢ã«ãŽãªãºã ã®èŠçŽ ãããã³å ç¢ãªããã¯ãšã³ãåæãå«ãŸããŠããå¯èœæ§ãé«ãã§ãã
- FigmaïŒãã¶ã€ããŒéã®ãªã¢ã«ã¿ã€ã ã³ã©ãã¬ãŒã·ã§ã³ãå¯èœã«ãã人æ°ã®ãã¶ã€ã³ããŒã«ã§ããFigmaãè€éãªãã¶ã€ã³ç¶æ ãäžçäžã®è€æ°ã®ãŠãŒã¶ãŒéã§åæããèœåã¯ãé«åºŠãªåæ£ã·ã¹ãã èšèšã®èšŒã§ãããCRDTsãšæé©åããããªã¢ã«ã¿ã€ã éä¿¡ãããã³ã«ã®çµã¿åãããå«ãŸããŠããå¯èœæ§ãé«ãã§ãã
- ãªã³ã©ã€ã³ãã«ããã¬ã€ã€ãŒã²ãŒã ïŒFortniteãLeague of LegendsãWorld of Warcraftã®ãããªã²ãŒã ã¯ãäžçäžã®äœåãäœçŸäžãã®ãã¬ã€ã€ãŒéã§ã²ãŒã ã®ç¶æ ïŒãã¬ã€ã€ãŒã®äœçœ®ãã¢ã¯ã·ã§ã³ãã²ãŒã ã€ãã³ãïŒã極ããŠäœé å»¶ã§äžè²«ããŠåæããå¿ èŠããããŸããããã«ã¯ããã°ãã°ã«ã¹ã¿ã ãã«ãããããé«åºŠã«æé©åãããåæ£ç¶æ åæã·ã¹ãã ãé¢äžããéèŠã§ãªãèŠçŽ ã«ã€ããŠã¯ããã©ãŒãã³ã¹ãšçµææŽåæ§ãåªå ããŸãã
- ãªã¢ã«ã¿ã€ã ããã·ã¥ããŒãïŒäŸïŒéèååŒãã©ãããã©ãŒã ãIoTã¢ãã¿ãªã³ã°ïŒïŒå€æ°ã®ãœãŒã¹ããã®ã©ã€ãããŒã¿ã衚瀺ããã€ã³ã¿ã©ã¯ãã£ããªå¶åŸ¡ãå¯èœã«ããã¢ããªã±ãŒã·ã§ã³ã¯ãæ¥ç¶ãããŠãããã¹ãŠã®ã¯ã©ã€ã¢ã³ããäžè²«ããææ°ã®ãã¥ãŒãèŠãããšãä¿èšŒããªããã°ãªããŸãããããã¯ãã°ãã°WebSocketãšå¹ççãªç¶æ ãããŒããã£ã¹ãã£ã³ã°ã«äŸåããããã¯ãšã³ãã·ã¹ãã ãæš©åšããç¶æ ã管çããŸãã
ãããã®äŸã¯ãã°ããŒãã«ãªãŠãŒã¶ãŒããŒã¹ã«è±ãã§ã€ã³ã¿ã©ã¯ãã£ããªäœéšãæäŸããããã®åæ£ç¶æ 管çã®å®çšçãªå¿çšãæµ®ã圫ãã«ããŠããŸãã
ããã³ããšã³ãç¶æ åæã®å°æ¥ã®ãã¬ã³ã
åæ£ç¶æ 管çã®åéã¯çµ¶ããé²åããŠããŸããããã€ãã®ãã¬ã³ããæªæ¥ã圢äœã£ãŠããŸãã
- WebAssemblyïŒWasmïŒïŒWasmã¯ãããè€éãªç¶æ åæããžãã¯ããã©ãŠã¶ã§çŽæ¥å®è¡ã§ããããã«ããå¯èœæ§ããããããæŽç·ŽãããP2Pã³ã³ã»ã³ãµã¹ã¢ã«ãŽãªãºã ãã¯ã©ã€ã¢ã³ããµã€ãã§å®è£ ãããµãŒããŒããã®èšç®ããªãããŒãããããšããå¯èœã«ãããããããŸããã
- 忣åæè¡ïŒãããã¯ãã§ãŒã³ãšåæ£åWebæè¡ïŒWeb3ïŒã®å°é ã¯ãP2Påæãšåæ£ããŒã¿æææš©ã«ããã驿°ãæšé²ããŠãããããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ãç¶æ ã管çããæ¹æ³ã«åœ±é¿ãäžããŠããŸãã
- AIãšæ©æ¢°åŠç¿ïŒAIã¯ããŠãŒã¶ãŒã®è¡åãäºæž¬ããŠç¶æ ãå å¶çã«æŽæ°ãããããŠãŒã¶ãŒã®ã³ã³ããã¹ãããããã¯ãŒã¯ç¶æ³ã«åºã¥ããŠåæåž¯åå¹ ãã€ã³ããªãžã§ã³ãã«ç®¡çãããããããã«äœ¿çšãããå¯èœæ§ããããŸãã
- æ¹åãããCRDTå®è£ ïŒé²è¡äžã®ç ç©¶ã«ãããããå¹ççã§æ©èœè±å¯ãªCRDTsãçãŸããããåºç¯ãªã¢ããªã±ãŒã·ã§ã³ã§ããå®çšçã«ãªã£ãŠããŸãã
çµè«
ããã³ããšã³ã忣ã¹ããŒããã·ã³ã¯ãã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãµãŒãã¹ãæäŸããçŸä»£çã§ã¹ã±ãŒã©ãã«ããã€ä¿¡é Œæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®åŒ·åãªã¢ãŒããã¯ãã£ã³ã³ã»ããã§ããå ç¢ãªãã«ãããŒãç¶æ åæãéæããããšã¯ããããã¯ãŒã¯ã®é å»¶ãäžŠè¡æ§ããã©ãŒã«ããã¬ã©ã³ã¹ã«é¢é£ãã課é¡ã«æºã¡ãè€éãªè©Šã¿ã§ããããããã³ã³ã»ã³ãµã¹ã¢ã«ãŽãªãºã ãæŽåæ§ã¢ãã«ãç¶æ ã¬ããªã±ãŒã·ã§ã³ãªã©ã®ã³ã¢ã³ã³ã»ãããçè§£ããCRDTsãé©åã«èšèšãããããã¯ãšã³ããµãŒãã¹ã®ãããªããŒã«ã掻çšããããšã§ãéçºè ã¯äžçäžã®ãŠãŒã¶ãŒã«ã·ãŒã ã¬ã¹ã§äžè²«ããäœéšãæäŸããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã
ãªã¢ã«ã¿ã€ã ã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãšã°ããŒãã«ãªã¢ã¯ã»ã·ããªãã£ã«å¯ŸãããŠãŒã¶ãŒã®æåŸ ãé«ãŸãç¶ããã«ã€ããŠãããã³ããšã³ãã®åæ£ç¶æ 管çããã¹ã¿ãŒããããšã¯ãããã³ããšã³ãã®ã¢ãŒããã¯ããéçºè ã«ãšã£ãŠãŸããŸãéèŠãªã¹ãã«ã«ãªãã§ããããæŽåæ§ãå¯çšæ§ãããã©ãŒãã³ã¹ã®éã®ãã¬ãŒããªããæ éã«æ€èšããã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ããã©ã¯ãã£ã¹ãæ¡çšããããšã§ãç§ãã¡ã¯åæ£ã·ã¹ãã ã®å¯èœæ§ãæå€§éã«åŒãåºããçã«é åçã§ä¿¡é Œã§ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåµé ããããšãã§ããŸãã