ããã³ããšã³ã忣åæã¢ã«ãŽãªãºã ãšãçè§£ãšãããã°ã匷åãããã«ãããŒãåæã®å¯èŠåæ¹æ³ã«ã€ããŠè§£èª¬ããŸãã
ããã³ããšã³ã忣åæã¢ã«ãŽãªãºã ïŒãã«ãããŒãåæã®å¯èŠå
çŸä»£ã®ãœãããŠã§ã¢éçºãç¹ã«åæ£ã·ã¹ãã ã®å°é ã«ãããŠãè€æ°ã®ç¬ç«ããããŒããã©ã®ããã«ããŠå ±éã®åæã«éããããçè§£ããããšã¯æãéèŠã§ããããã¯ã忣åæã¢ã«ãŽãªãºã ã«ãã£ãŠå¯ŸåŠãããäžå¿çãªèª²é¡ã§ãããããã®ã¢ã«ãŽãªãºã ã¯å€ãã®å Žåããã¯ãšã³ãã§åäœããŸããããã®åçãšç®¡çããè€éãã¯ãç¹ã«åæ£åæè¡ã掻çšããã¢ããªã±ãŒã·ã§ã³ããªã¢ã«ã¿ã€ã ã³ã©ãã¬ãŒã·ã§ã³ããŸãã¯å°ççã«åæ£ãããŠãŒã¶ãŒéã§é«ãã¬ãã«ã®ããŒã¿äžè²«æ§ãå¿ èŠãšããããã³ããšã³ãéçºè ã«ãšã£ãŠãéèŠãªæå³ãæã¡ãŸãããã®èšäºã§ã¯ãããã³ããšã³ã忣åæã¢ã«ãŽãªãºã ã®äžçãæãäžãããããã®è€éãªããã»ã¹ãè§£æããããã®ãã«ãããŒãåæã®å¯èŠåãšããéèŠãªåŽé¢ã«çŠç¹ãåœãŠãŸãã
忣ã·ã¹ãã ã«ãããåæã®éèŠæ§
忣ã·ã¹ãã ã®æ žå¿ã¯ãè€æ°ã®ã³ã³ãã¥ãŒã¿ãéä¿¡ããå調ããŠå ±éã®ç®æšãéæããããšã§ãããã®ãããªã·ã¹ãã ã§ã¯ãããŒããç¹å®ã®ç¶æ ããã©ã³ã¶ã¯ã·ã§ã³ããŸãã¯æ±ºå®ã«ã€ããŠåæããå¿ èŠãããå Žåã«ãé倧ãªèª²é¡ãçããŸããåæã®ããã®å ç¢ãªã¡ã«ããºã ããªããã°ãäžæŽåãçãããšã©ãŒãããŒã¿ç ŽæããããŠã·ã¹ãã ã®å®å šæ§ã®åŽ©å£ã«ã€ãªããå¯èœæ§ããããŸããããã§åæã¢ã«ãŽãªãºã ãç»å ŽããŸãã
以äžã®ã·ããªãªãèããŠã¿ãŸãããïŒ
- éèååŒïŒäºéæ¯æããé²ãããã«ãè€æ°ã®ããŒãããã©ã³ã¶ã¯ã·ã§ã³ã®é åºãšæå¹æ§ã«ã€ããŠåæããå¿ èŠããããŸãã
- å ±åç·šéïŒåæã«ããã¥ã¡ã³ããç·šéãããŠãŒã¶ãŒã¯ããããã¯ãŒã¯ã®é å»¶ã«é¢ä¿ãªããäžè²«æ§ã®ããããŒãžããããã¥ãŒãèŠãå¿ èŠããããŸãã
- ãããã¯ãã§ãŒã³ãããã¯ãŒã¯ïŒãããã¯ãã§ãŒã³ãããã¯ãŒã¯å ã®ãã¹ãŠã®ããŒãã¯ãåäžã®æš©åšããå°åž³ãç¶æããããã«ããã§ãŒã³ã«è¿œå ãããæ¬¡ã®ãããã¯ã«ã€ããŠåæããå¿ èŠããããŸãã
- ãªã¢ã«ã¿ã€ã ã²ãŒã ïŒå ¬æ£ã§äžè²«æ§ã®ããã²ãŒã äœéšãä¿èšŒããããã«ãã²ãŒã ã®ç¶æ ã¯ãã¹ãŠã®ãã¬ã€ã€ãŒã®ã¯ã©ã€ã¢ã³ãéã§åæãããå¿ èŠããããŸãã
ãããã®äŸã¯ããã«ãããŒãåæãéæããããšãåãªãçè«çãªæŠå¿µã§ã¯ãªããä¿¡é Œæ§ãé«ãæ©èœçãªåæ£ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®å®è·µçãªå¿ èŠæ§ã§ããããšã匷調ããŠããŸãã
忣åæã«ãããããã³ããšã³ãã®åœ¹å²ãçè§£ãã
åæã¢ã«ãŽãªãºã ã®éåŽåã¯éåžžããµãŒããŒãµã€ããŸãã¯ïŒãããã¯ãã§ãŒã³ãããã¯ãŒã¯ã®ãããªïŒç¹æ®ãªããŒãå ã§è¡ãããŸãããããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã¯åæ£ã·ã¹ãã ãšã®çžäºäœçšã«ãããŠãŸããŸãæŽç·ŽãããŠããŠããŸããããã³ããšã³ãéçºè ã¯ä»¥äžã®ããšãè¡ãå¿ èŠããããŸãïŒ
- åæç¶æ ã®è§£éïŒã·ã¹ãã ããã€åæã«éãããããã®åæãäœãæå³ãããããããŠããããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã«ã©ã®ããã«åæ ããããçè§£ããã
- äžäžèŽãšç«¶åã®åŠçïŒãããã¯ãŒã¯ã®åæãããŒãã®é害ãäžæçãªäžäžèŽã«ã€ãªããç¶æ³ãé©åã«ç®¡çããã
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®æé©åïŒç¹ã«è€æ°ã®ããŒããé¢äžããæäœäžã«ãåæã®ç¶æ ã«ã€ããŠãŠãŒã¶ãŒã«æç¢ºãªãã£ãŒãããã¯ãæäŸããUIãèšèšããã
- 忣åæè¡ãšã®çµ±åïŒæ¬è³ªçã«åæã«äŸåãããããã¯ãã§ãŒã³ããã¢ããŒãã¢ãããã¯ãŒã¯ãšå¯Ÿè©±ããã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãæ±ãã
ããã«ãç¹å®ã®ãšããžã±ãŒã¹ãç¹å®ã®çš®é¡ã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãç¹ã«WebRTCã®ãããªæè¡ã䜿çšãããã¢ããŒãã¢ã®Webã¢ããªã±ãŒã·ã§ã³ã«ãããŠãããã³ããšã³ãã¯ã©ã€ã¢ã³ãã§ããã軜éãªåœ¢åŒã®åæãããã³ã«ã«åå ããããšããããŸãã
ããã³ããšã³ãã«é¢é£ããäž»èŠãªåæã®æŠå¿µ
å¯èŠåã«å ¥ãåã«ãããšãçŽæ¥å®è£ ããŠããªããŠããåæã¢ã«ãŽãªãºã ãæ¯ããããã€ãã®åºæ¬çãªæŠå¿µãææ¡ããããšãéèŠã§ãïŒ
1. ãã©ãŒã«ããã¬ã©ã³ã¹
äžéšã®ã³ã³ããŒãã³ãïŒããŒãïŒãæ éããŠããã·ã¹ãã ãæ£ããåäœãç¶ããèœåãåæã¢ã«ãŽãªãºã ã¯ãã©ãŒã«ããã¬ã©ã³ãã«èšèšãããŠãããä¿¡é Œæ§ã®äœãããŒããååšããŠãåæã«éããããšãã§ããŸãã
2. äžè²«æ§
忣ã·ã¹ãã å ã®ãã¹ãŠã®ããŒããããŒã¿ãŸãã¯ã·ã¹ãã ç¶æ ã«ã€ããŠåããã¥ãŒãæã€ããšãä¿èšŒããããšã匷ãäžè²«æ§ïŒãã¹ãŠã®ããŒããåæã«åãããŒã¿ãèŠãïŒããçµææŽåæ§ïŒãã¹ãŠã®ããŒããæçµçã«åãç¶æ ã«åæããïŒãŸã§ãããŸããŸãªã¬ãã«ã®äžè²«æ§ãååšããŸãã
3. å¯çšæ§
é害ãé«è² è·æã§ããã·ã¹ãã ã皌åãç¶ãããŠãŒã¶ãŒãã¢ã¯ã»ã¹ã§ããèœåãäžè²«æ§ãšå¯çšæ§ã®éã«ã¯ãã°ãã°ãã¬ãŒããªãããããããã¯æåãªCAPå®çïŒäžè²«æ§ãå¯çšæ§ãåæèæ§ïŒã«ãã£ãŠæããããŠããŸãã
4. ããŒãã®çš®é¡
- ãªãŒããŒ/ææ¡è ïŒææ¡ãéå§ããããåæã®ã©ãŠã³ããäž»å°ãããããããŒãã
- ãã©ãã¯ãŒ/æç¥šè ïŒææ¡ãåãåããããã«å¯ŸããŠæç¥šããããŒãã
- åŠç¿è ïŒåæãããå€ãåŠç¿ããããŒãã
人æ°ã®åæ£åæã¢ã«ãŽãªãºã ïŒãšããã³ããšã³ããžã®é¢é£æ§ïŒ
ããããå®è£ ããã®ã¯ããã¯ãšã³ãã®ä»äºã§ããããã®äžè¬çãªååãçè§£ããããšã¯ããã³ããšã³ãéçºãå©ããŸãã
1. PaxosãšRaft
Paxosã¯ãä¿¡é Œæ§ã®äœãããã»ããµã®ãããã¯ãŒã¯ã§åæã解決ããããã®äžé£ã®ãããã³ã«ã§ãããã®æ£ããã§ç¥ãããŠããŸãããè€éãã§ãæåã§ããRaftã¯ãPaxosã®ããçè§£ãããã代æ¿ãšããŠèšèšããããªãŒããŒéžåºãšãã°è€è£œã«çŠç¹ãåœãŠãŠããŸããå€ãã®åæ£ããŒã¿ããŒã¹ã調æŽãµãŒãã¹ïŒetcdãZooKeeperãªã©ïŒãRaftã䜿çšããŠããŸãã
ããã³ããšã³ããžã®é¢é£æ§ïŒã¢ããªã±ãŒã·ã§ã³ããããã®æè¡ã§æ§ç¯ããããµãŒãã¹ã«äŸåããŠããå Žåãããã³ããšã³ãã¯ããªãŒããŒéžåºäžããããªãŒããŒã¯Xããããã°ã¯åææžã¿ããªã©ã®ç¶æ ãçè§£ããå¿ èŠããããŸãããããå¯èŠåããããšã§ãåºç€ãšãªã調æŽãµãŒãã¹ãäžå®å®ãªããã«ããã³ããšã³ããæŽæ°ãåä¿¡ããªãåé¡ã蚺æããã®ã«åœ¹ç«ã¡ãŸãã
2. ãã¶ã³ãã³ãã©ãŒã«ããã¬ã©ã³ã¹ïŒBFTïŒã¢ã«ãŽãªãºã
ãããã®ã¢ã«ãŽãªãºã ã¯ãããŒããä»»æã«æ¯ãèãïŒäŸïŒç°ãªãããŒãã«ççŸããæ å ±ãéä¿¡ããïŒããã¶ã³ãã³æ éãã«èããããã«èšèšãããŠããŸããããã¯ãããŒããä¿¡é Œã§ããªããããªãã¯ãããã¯ãã§ãŒã³ã®ãããªããŒããã·ã§ã³ã¬ã¹ã·ã¹ãã ã«ãšã£ãŠéåžžã«éèŠã§ãã
äŸïŒPractical Byzantine Fault ToleranceïŒpBFTïŒãTendermintãAlgorandã®ã³ã³ã»ã³ãµã¹ã
ããã³ããšã³ããžã®é¢é£æ§ïŒãããªãã¯ãããã¯ãã§ãŒã³ãšå¯Ÿè©±ããã¢ããªã±ãŒã·ã§ã³ïŒäŸïŒæå·é貚ãNFTã忣åã¢ããªã±ãŒã·ã§ã³ãŸãã¯dAppsïŒã¯ãBFTã«å€§ããäŸåããŠããŸããããã³ããšã³ãã¯ãããªããŒã¿ãŒã®æ°ããããã¯ææ¡ã®é²æããã©ã³ã¶ã¯ã·ã§ã³ã®ç¢ºèªç¶æ³ãªã©ããããã¯ãŒã¯ã®ç¶æ ãåæ ããå¿ èŠããããŸããæœåšçã«æªæã®ããããŒãéã®åæããã»ã¹ãå¯èŠåããããšã¯ãè€éã§ãã䟡å€ã®ããã¿ã¹ã¯ã§ãã
ãã«ãããŒãåæã®ããã®å¯èŠåã®å
忣åæã®æœè±¡çãªæ§è³ªã¯ãäœããã®å ·äœçãªè¡šçŸãªãã«ææ¡ããããšãéåžžã«å°é£ã«ããŸããããã§å¯èŠåã¯ãããã³ããšã³ãéçºè ãããã«ã¯ã·ã¹ãã ã®åäœãçè§£ããå¿ èŠããããšã³ããŠãŒã¶ãŒã«ãšã£ãŠãã²ãŒã ãã§ã³ãžã£ãŒãšãªããŸãã
ãªãå¯èŠåããã®ãïŒ
- çè§£ã®åŒ·åïŒè€éãªç¶æ é·ç§»ãã¡ãã»ãŒãžããã·ã³ã°ãæææ±ºå®ããã»ã¹ãèŠèŠçã«èŠããšçŽæçã«ãªããŸãã
- 广çãªãããã°ïŒããã«ããã¯ãç«¶åç¶æ ããŸãã¯èª€åäœããŠããããŒããç¹å®ããããšããèŠèŠçãªè£å©ãããã°å€§å¹ ã«å®¹æã«ãªããŸãã
- ãŠãŒã¶ãŒãã£ãŒãããã¯ã®æ¹åïŒæäœã®é²æïŒäŸïŒããããã¯ãŒã¯ã®ç¢ºèªãåŸ ã£ãŠããŸããããä»ã®ãŠãŒã¶ãŒãšããŒã¿ãåæäžãïŒã«ã€ããŠèŠèŠçãªæãããããŠãŒã¶ãŒã«æäŸããããšã§ãä¿¡é Œãç¯ããäžæºã軜æžããŸãã
- æè²ããŒã«ïŒå¯èŠåã¯ã忣ã·ã¹ãã ã«äžæ £ããªéçºè ããæè¡è ã§ãªãé¢ä¿è ã«ã·ã¹ãã ã®åäœã説æããããã®åŒ·åãªææãšããŠæ©èœããŸãã
åæãå¯èŠåããããã®ããã³ããšã³ãæè¡
ããã³ããšã³ãã§ãã«ãããŒãåæãå¯èŠåããã«ã¯ãéåžžãWebæè¡ã掻çšããŠã€ã³ã¿ã©ã¯ãã£ããªãã€ã¢ã°ã©ã ãã¹ããŒããã·ã³ããŸãã¯ã¢ãã¡ãŒã·ã§ã³ãäœæããŸãã
1. ã€ã³ã¿ã©ã¯ãã£ããªã¹ããŒããã·ã³
åããŒããåå¥ã®ãšã³ãã£ãã£ïŒäŸïŒåãç®±ïŒãšããŠè¡šçŸãããã®çŸåšã®ç¶æ ïŒäŸïŒãææ¡äžãããæç¥šäžãããæ¿èªæžã¿ããã倱æãïŒãèŠèŠçã«æåããŸããç¶æ éã®é·ç§»ã¯ç¢å°ã§ç€ºãããå€ãã®å Žåãã·ãã¥ã¬ãŒãããããŸãã¯å®éã®ã¡ãã»ãŒãžäº€æã«ãã£ãŠããªã¬ãŒãããŸãã
å®è£ ã®ã¢ã€ãã¢ïŒ
- D3.jsãKonva.jsããŸãã¯Fabric.jsã®ãããªJavaScriptã©ã€ãã©ãªã䜿çšããŠãããŒãããšããžãããã¹ããåçã«æç»ããŸãã
- ã¢ã«ãŽãªãºã ã®ç¶æ ïŒäŸïŒRaftã®ããã©ãã¯ãŒãããåè£è ããããªãŒããŒãïŒãç°ãªãèŠèŠã¹ã¿ã€ã«ïŒè²ãã¢ã€ã³ã³ïŒã«ãããã³ã°ããŸãã
- ç¶æ é·ç§»ãã¢ãã¡ãŒã·ã§ã³åããŠãåæããã»ã¹ã®é²è¡ã瀺ããŸãã
äŸïŒRaftã®ãªãŒããŒéžåºã®å¯èŠåã§ã¯ãããŒããéžæãéå§ãããšè²ãããã©ãã¯ãŒãïŒç°è²ïŒãããåè£è ãïŒé»è²ïŒã«å€ãããæåãããšããªãŒããŒãïŒç·è²ïŒã«ã倱æãããšåã³ããã©ãã¯ãŒãã«æ»ããŸãããªãŒããŒãšãã©ãã¯ãŒéã®ããŒãããŒãã¡ãã»ãŒãžããã«ã¹ãšããŠå¯èŠåããããšãã§ããŸãã
2. ã¡ãã»ãŒãžãããŒãã€ã¢ã°ã©ã
ããŒãéã®éä¿¡ãã¿ãŒã³ãå³ç€ºããŸããããã¯ãææ¡ãæç¥šãããã³ç¢ºèªå¿çããããã¯ãŒã¯ãéããŠã©ã®ããã«äŒæããããçè§£ããããã«äžå¯æ¬ ã§ãã
å®è£ ã®ã¢ã€ãã¢ïŒ
- Mermaid.jsïŒåçŽãªã·ãŒã±ã³ã¹å³çšïŒããã匷åãªã°ã©ãå¯èŠåããŒã«ãªã©ã®ã©ã€ãã©ãªã䜿çšããŸãã
- ã¡ãã»ãŒãžã衚ãç¢å°ãæããã¡ãã»ãŒãžã¿ã€ãïŒäŸïŒãAppendEntriesãããRequestVoteãããCommitãïŒã§ã©ãã«ä»ãããŸãã
- æå/倱æãŸãã¯ã¿ã€ãã«åºã¥ããŠã¡ãã»ãŒãžãè²åãããŸãã
- ã¡ãã»ãŒãžã®å¯èŠåãé å»¶ãããããããããããããŠããããã¯ãŒã¯ã®é å»¶ãåæãã·ãã¥ã¬ãŒãããŸãã
äŸïŒPaxosã®ãPrepareããã§ãŒãºãå¯èŠåããå Žåãææ¡è ãã¢ã¯ã»ãã¿ãŒã«ãPrepareããªã¯ãšã¹ããéä¿¡ããæ§åãèŠããŸããã¢ã¯ã»ãã¿ãŒã¯ããããŸã§ã«èŠãæé«ã®ææ¡çªå·ãšãå Žåã«ãã£ãŠã¯ä»¥åã«åãå ¥ããããå€ã瀺ããPromiseãã¡ãã»ãŒãžã§å¿çããŸããå¯èŠåã§ã¯ããããã®ã¡ãã»ãŒãžãæµããã¢ã¯ã»ãã¿ãŒãç¶æ ãæŽæ°ããæ§åã瀺ãããŸãã
3. ãããã¯ãŒã¯ããããžãŒãšå¥å šæ§ã€ã³ãžã±ãŒã¿ãŒ
ãããã¯ãŒã¯ã®ã¬ã€ã¢ãŠãã衚瀺ããããŒãã®å¥å šæ§ãšæ¥ç¶æ§ã®ã€ã³ãžã±ãŒã¿ãŒãæäŸããŸãã
å®è£ ã®ã¢ã€ãã¢ïŒ
- ããŒãããã£ã³ãã¹äžã®ç¹ãšããŠè¡šçŸããŸãã
- ç·ã䜿çšããŠãããã¯ãŒã¯æ¥ç¶ã瀺ããŸãã
- ããŒãããã®ç¶æ ã«åºã¥ããŠè²åãããŸãïŒå¥å šãªå Žåã¯ç·ãæ éããå Žåã¯èµ€ãäžç¢ºå®/åæãããŠããå Žåã¯é»è²ã
- å¯èŠåãåçã«åé 眮ãããããããŒãã®ã°ã«ãŒããåé¢ããããããããšã§ããããã¯ãŒã¯åæã€ãã³ãã衚瀺ããŸãã
äŸïŒãã¶ã³ãã³ãã©ãŒã«ããã¬ã©ã³ãã·ã¹ãã ã®å¯èŠåã§ã¯ã倧倿°ã®ããŒãïŒäŸïŒ10ã®ãã¡7ïŒããå¥å šãã§ãåæäžããšå ±åããããã€ãã®ããŒãããçãããããŸãã¯ãæ éããšããŒã¯ãããŠããã®ãèŠãããããããŸãããã·ã¹ãã ã®å šäœçãªåæç¶æ ïŒäŸïŒãåæã«éããŸããããŸãã¯ãåæãªããïŒãæç¢ºã«ç€ºãããŸãã
4. ããŒã¿åæã®å¯èŠå
åæãããŒã¿ã®äžè²«æ§ã«é¢ããã¢ããªã±ãŒã·ã§ã³ã®å ŽåãããŒã¿èªäœãšããããããŒãéã§ã©ã®ããã«è€è£œããæŽæ°ãããŠããããå¯èŠåããŸãã
å®è£ ã®ã¢ã€ãã¢ïŒ
- ããŒã¿é ç®ãã«ãŒãããããã¯ãšããŠè¡šçŸããŸãã
- ã©ã®ããŒããã©ã®ããŒã¿é ç®ãææããŠãããã瀺ããŸãã
- ããŒããæ å ±ã亀æããã«ã€ããŠãããŒã¿ã®æŽæ°ãšåæãã¢ãã¡ãŒã·ã§ã³åããŸãã
- 解決ãããŠããäžäžèŽã匷調衚瀺ããŸãã
äŸïŒå ±åããã¥ã¡ã³ããšãã£ã¿ãåããŒãïŒãŸãã¯ã¯ã©ã€ã¢ã³ãïŒã¯ããã¥ã¡ã³ãã®è¡šçŸãæã£ãŠããŸãããŠãŒã¶ãŒã倿Žãå ãããšããããææ¡ãããŸããå¯èŠåã¯ããã®ææ¡ããã倿Žãä»ã®ããŒãã«äŒæããæ§åã瀺ããŸãã倿Žãé©çšããããšã«ã€ããŠåæã«éãããšããã¹ãŠã®ããŒããåæã«ããã¥ã¡ã³ããã¥ãŒãæŽæ°ããŸãã
ããã³ããšã³ãå¯èŠåã®ããã®ããŒã«ãšæè¡
ãããã®å¯èŠåãäœæããã®ã«åœ¹ç«ã€ããã€ãã®ããŒã«ãšã©ã€ãã©ãªããããŸãïŒ
- JavaScriptã©ã€ãã©ãªïŒ
- D3.jsïŒããŒã¿é§åã®ããã¥ã¡ã³ãæäœã®ããã®åŒ·åã§æè»ãªã©ã€ãã©ãªãã«ã¹ã¿ã ã§è€éãªå¯èŠåã«åªããŠããŸãã
- Vis.jsïŒãããã¯ãŒã¯ãã¿ã€ã ã©ã€ã³ãã°ã©ãã®å¯èŠåãæäŸãããåçãªãã©ãŠã¶ããŒã¹ã®å¯èŠåã©ã€ãã©ãªã
- Cytoscape.jsïŒå¯èŠåãšåæã®ããã®ã°ã©ãçè«ã©ã€ãã©ãªã
- Mermaid.jsïŒããã¹ããããã€ã¢ã°ã©ã ããããŒãã£ãŒããäœæã§ããŸããããã¥ã¡ã³ãã«ç°¡åãªãã€ã¢ã°ã©ã ãåã蟌ãã®ã«æé©ã§ãã
- React Flow / Vue FlowïŒReact/Vueã¢ããªã±ãŒã·ã§ã³å ã§ããŒãããŒã¹ã®ãšãã£ã¿ãã€ã³ã¿ã©ã¯ãã£ããªãã€ã¢ã°ã©ã ãæ§ç¯ããããã«ç¹å¥ã«èšèšãããã©ã€ãã©ãªã
- WebRTCïŒãã¢ããŒãã¢ã¢ããªã±ãŒã·ã§ã³ã®å ŽåãWebRTCã䜿çšããŠãã©ãŠã¶ã¯ã©ã€ã¢ã³ãéã§çŽæ¥ãããã¯ãŒã¯ç¶æ ãšã¡ãã»ãŒãžããã·ã³ã°ãã·ãã¥ã¬ãŒãã§ãããªã¢ã«ã¿ã€ã ã®ã¯ã©ã€ã¢ã³ããµã€ãã§ã®åæã®å¯èŠåãå¯èœã«ããŸãã
- Canvas API / SVGïŒã°ã©ãã£ãã¯ã¹ãæç»ããããã®åºæ¬çãªWebæè¡ãã©ã€ãã©ãªã¯ããããæœè±¡åããŸãããé«åºŠã«ã«ã¹ã¿ã ãªããŒãºã«ã¯çŽæ¥äœ¿çšãå¯èœã§ãã
- Web WorkersïŒéãå¯èŠåèšç®ãã¡ã€ã³UIã¹ã¬ããããããã¯ããã®ãé²ãããã«ãåŠçãWeb Workersã«ãªãããŒãããŸãã
å®è·µçå¿çšïŒããã³ããšã³ãéçºè ã®ããã®Raftã®å¯èŠå
Raftåæã¢ã«ãŽãªãºã ã®æŠå¿µçãªããã³ããšã³ãå¯èŠåãããªãŒããŒéžåºãšãã°è€è£œã«çŠç¹ãåœãŠãŠèŠãŠãããŸãããã
ã·ããªãªïŒ5ããŒãã®Raftã¯ã©ã¹ã¿
5ã€ã®ããŒããRaftã¢ã«ãŽãªãºã ãå®è¡ããŠãããšæ³åããŠãã ãããæåã¯ãã¹ãŠããã©ãã¯ãŒãã§ãã
ãã§ãŒãº1ïŒãªãŒããŒéžåº
- ã¿ã€ã ã¢ãŠãïŒããã©ãã¯ãŒãããŒãïŒããŒã3ãšåŒã³ãŸãããïŒããªãŒããŒããã®ããŒãããŒããåŸ ã£ãŠããéã«ã¿ã€ã ã¢ãŠãããŸãã
- åè£è ãžã®ç§»è¡ïŒããŒã3ã¯èªèº«ã®ä»»æãã€ã³ã¯ãªã¡ã³ããããåè£è ãç¶æ ã«ç§»è¡ããŸãããã®èŠèŠç衚çŸãå€ãããŸãïŒäŸïŒç°è²ããé»è²ãžïŒã
- RequestVoteïŒããŒã3ã¯ä»ã®ãã¹ãŠã®ããŒãã«ãRequestVoteãRPCãéä¿¡ãå§ããŸããããŒã3ããä»ã®ããŒããžåãããRequestVoteããšã©ãã«ä»ããããç¢å°ãšããŠå¯èŠåãããŸãã
- æç¥šïŒä»ã®ããŒãïŒäŸïŒããŒã1ã2ã4ã5ïŒããRequestVoteãRPCãåãåããŸãããã®ä»»æã§ãŸã æç¥šããŠããããåè£è ã®ä»»æãèªèº«ã®ä»»æä»¥äžã§ããã°ããã¯ãããšæç¥šããç¶æ ãããã©ãã¯ãŒãã«ç§»è¡ïŒãŸãã¯ãã©ãã¯ãŒã®ãŸãŸïŒããŸããæç¥šãæ¿èªããããã«èŠèŠç衚çŸãäžæçã«ç¹æ» ããããšããããŸãããã¯ããã®æç¥šã¯ãåä¿¡ããŒãã®è¿ãã«ç·ã®ãã§ãã¯ããŒã¯ãšããŠå¯èŠåãããŸãã
- éžæã®åå©ïŒããŒã3ãéåæ°ã®ããŒãïŒèªèº«ãå«ããŠ5ã€ã®ãã¡å°ãªããšã3ã€ïŒãã祚ãåãåããšãããªãŒããŒãã«ãªããŸãããã®èŠèŠç衚çŸã¯ç·è²ã«å€ãããŸãããã¹ãŠã®ãã©ãã¯ãŒã«ãAppendEntriesãRPCïŒããŒãããŒãïŒãéä¿¡ãå§ããŸããããŒã3ããä»ãžã®ç·è²ã®èæã€ç¢å°ãšããŠå¯èŠåãããŸãã
- ãã©ãã¯ãŒç¶æ ïŒããŒã3ã«æç¥šããä»ã®ããŒãã¯ããã©ãã¯ãŒãç¶æ ã«ç§»è¡ããéžæã¿ã€ããŒããªã»ããããŸãã圌ãã¯ä»ãããŒã3ããã®ããŒãããŒããæåŸ ããŠããŸãã圌ãã®èŠèŠç衚çŸã¯ç°è²ã§ãã
- 祚ã®åå²ã·ããªãªïŒ2人ã®åè£è ããããã¯ãŒã¯ã®ç°ãªãéšåã§åæã«éžæãéå§ãããšã祚ãå²ããå¯èœæ§ããããŸãããã®å ŽåãçŸåšã®ä»»æã§ã¯ã©ã¡ããéžæã«åã¡ãŸãããäž¡æ¹ãšãåã³ã¿ã€ã ã¢ãŠãããä»»æãã€ã³ã¯ãªã¡ã³ãããŠæ°ããéžæãéå§ããŸããå¯èŠåã§ã¯ã2ã€ã®ããŒããé»è²ã«å€ãããã©ã¡ããéåæ°ãç²åŸã§ããããã®åŸäž¡æ¹ãæ°ããä»»æã®ããã«åã³é»è²ã«ãªãæ§åã瀺ãããŸããããã¯ãåç¹ãè§£æ¶ããããã«éžæã¿ã€ã ã¢ãŠãã®ã©ã³ãã åãå¿ èŠã§ããããšã匷調ããŠããŸãã
ãã§ãŒãº2ïŒãã°è€è£œ
- ã¯ã©ã€ã¢ã³ããªã¯ãšã¹ãïŒã¯ã©ã€ã¢ã³ãããªãŒããŒïŒããŒã3ïŒã«å€ãæŽæ°ããã³ãã³ãïŒäŸïŒãmessageãããhello worldãã«èšå®ïŒãéä¿¡ããŸãã
- AppendEntriesïŒãªãŒããŒã¯ãã®ã³ãã³ããèªèº«ã®ãã°ã«è¿œå ããæ°ãããã°ãšã³ããªãå«ããAppendEntriesãRPCããã¹ãŠã®ãã©ãã¯ãŒã«éä¿¡ããŸããããŒã3ããã®ããã°ãšã³ããªããã€ããŒããéã¶ãããé·ãç¹åŸŽçãªç¢å°ãšããŠå¯èŠåãããŸãã
- ãã©ãã¯ãŒã®åä¿¡ïŒãã©ãã¯ãŒã¯ãAppendEntriesãRPCãåãåããŸãããªãŒããŒã®åã®ãã°ã€ã³ããã¯ã¹ãšä»»æãèªåèªèº«ã®ãã®ãšäžèŽããå Žåããšã³ããªãèªèº«ã®ãã°ã«è¿œå ããŸãããã®åŸãæåã瀺ããAppendEntriesãå¿çããªãŒããŒã«è¿ããŸããç·è²ã®ãã§ãã¯ããŒã¯ã®å¿çç¢å°ãšããŠå¯èŠåãããŸãã
- ã³ãããïŒãªãŒããŒãç¹å®ã®ãã°ãšã³ããªã«å¯ŸããŠéåæ°ã®ãã©ãã¯ãŒãã確èªå¿çãåãåããšããã®ãšã³ããªããã³ãããæžã¿ããšããŠããŒã¯ããŸãããªãŒããŒã¯æ¬¡ã«ã³ãã³ããèªèº«ã®ã¹ããŒããã·ã³ã«é©çšããã¯ã©ã€ã¢ã³ãã«æåãè¿ããŸããã³ãããããããã°ãšã³ããªã¯èŠèŠçã«åŒ·èª¿è¡šç€ºãããŸãïŒäŸïŒæ¿ãè²åããŸãã¯ãã³ãããæžã¿ãã©ãã«ïŒã
- ãã©ãã¯ãŒãžã®é©çšïŒãªãŒããŒã¯æ¬¡ã«ãã³ããããããã€ã³ããã¯ã¹ãå«ãåŸç¶ã®ãAppendEntriesãRPCãéä¿¡ããŸãããã©ãã¯ãŒã¯ãããåãåããšããšã³ããªãã³ãããããèªèº«ã®ã¹ããŒããã·ã³ã«é©çšããŸããããã«ããããã¹ãŠã®ããŒããæçµçã«åãç¶æ ã«éããããšãä¿èšŒãããŸãããã³ãããæžã¿ãã®ãã€ã©ã€ãããã©ãã¯ãŒããŒãã«äŒæããæ§åãšããŠå¯èŠåãããŸãã
ãã®èŠèŠçã·ãã¥ã¬ãŒã·ã§ã³ã¯ãããã³ããšã³ãéçºè ããé害ãçºçããŠãRaftããã¹ãŠã®ããŒããæäœã®é åºã«åæããããã«ãã£ãŠäžè²«ããã·ã¹ãã ç¶æ ãç¶æããæ¹æ³ãçè§£ããã®ã«åœ¹ç«ã¡ãŸãã
ããã³ããšã³ãåæå¯èŠåã«ããã課é¡
忣åæã®ããã®å¹æçã§ããã©ãŒãã³ã¹ã®é«ãå¯èŠåãäœæããããšã«ã¯ã課é¡ããªãããã§ã¯ãããŸããïŒ
- è€éãïŒå®éã®åæã¢ã«ãŽãªãºã ã¯ãå€ãã®ç¶æ ãé·ç§»ããšããžã±ãŒã¹ããããè€éã«ãªãããšããããŸããæ£ç¢ºãã倱ããã«å¯èŠåã®ããã«åçŽåããããšã¯å°é£ã§ãã
- ã¹ã±ãŒã©ããªãã£ïŒå€æ°ã®ããŒãïŒäžéšã®ãããã¯ãã§ãŒã³ãããã¯ãŒã¯ã®ããã«æ°çŸãŸãã¯æ°åïŒãå¯èŠåãããšããã©ãŠã¶ã®ããã©ãŒãã³ã¹ãå§åããèŠèŠçã«ä¹±éã«ãªãå¯èœæ§ããããŸããéçŽãéå±€çãã¥ãŒããŸãã¯ç¹å®ã®ãµããããã¯ãŒã¯ã«çŠç¹ãåœãŠããªã©ã®æè¡ãå¿ èŠã§ãã
- ãªã¢ã«ã¿ã€ã vs. ã·ãã¥ã¬ãŒã·ã§ã³ïŒã©ã€ãã·ã¹ãã ã®åäœãå¯èŠåããããšã¯ããããã¯ãŒã¯ã®é å»¶ãåæã®åé¡ãããã³ã€ãã³ãã®èšå€§ãªéã®ããã«å°é£ãªå ŽåããããŸããå€ãã®å Žåãã·ãã¥ã¬ãŒã·ã§ã³ãåçããããã°ã䜿çšãããŸãã
- ã€ã³ã¿ã©ã¯ãã£ãæ§ïŒãŠãŒã¶ãŒãå¯èŠåãäžæåæ¢ãã¹ãããå®è¡ããºãŒã ããã£ã«ã¿ãªã³ã°ããããã®ã³ã³ãããŒã«ãæäŸããããšã¯ãéçºã®ãªãŒããŒããããå€§å¹ ã«å¢å ãããŸããã䜿ãããããå€§å¹ ã«åäžãããŸãã
- ããã©ãŒãã³ã¹ïŒäœåãã®åãèŠçŽ ãã¬ã³ããªã³ã°ããé »ç¹ã«æŽæ°ããã«ã¯ãWeb Workersãå¹ççãªã¬ã³ããªã³ã°æè¡ãå«ãæ éãªæé©åãå¿ èŠã§ãã
- æœè±¡åïŒã©ã®ã¬ãã«ã®è©³çްã衚瀺ããããæ±ºå®ããããšãéèŠã§ãããã¹ãŠã®åäžã®RPCã衚瀺ããã®ã¯å€ããããããããŸããããé«ã¬ãã«ã®ç¶æ å€åã®ã¿ã衚瀺ãããšéèŠãªãã¥ã¢ã³ã¹ãé ããŠããŸãå¯èœæ§ããããŸãã
ããã³ããšã³ãåæå¯èŠåã®ãã¹ããã©ã¯ãã£ã¹
ãããã®èª²é¡ãå æããã€ã³ãã¯ãã®ããå¯èŠåãäœæããããã«ïŒ
- ã·ã³ãã«ã«å§ããïŒããè€éãªæ©èœã远å ããåã«ãã¢ã«ãŽãªãºã ã®æ žãšãªãåŽé¢ïŒäŸïŒRaftã®ãªãŒããŒéžåºïŒãå¯èŠåããããšããå§ããŸãã
- ãŠãŒã¶ãŒäžå¿ã®èšèšïŒèª°ãå¯èŠåã䜿çšãã圌ããäœãåŠã³ãããããŸãã¯ãããã°ãããããèããŸããããã«å¿ããŠã€ã³ã¿ãŒãã§ãŒã¹ãèšèšããŸãã
- æç¢ºãªç¶æ 衚çŸïŒç°ãªãããŒãã®ç¶æ ãã¡ãã»ãŒãžã¿ã€ãã«å¯ŸããŠãæç¢ºã§çŽæçãªèŠèŠçæãããïŒè²ãã¢ã€ã³ã³ãããã¹ãã©ãã«ïŒã䜿çšããŸãã
- ã€ã³ã¿ã©ã¯ãã£ããªã³ã³ãããŒã«ïŒåç/äžæåæ¢ãåé²/åŸéãé床å¶åŸ¡ããºãŒã æ©èœãå®è£ ããŸãã
- äž»èŠãªã€ãã³ãã«çŠç¹ãåœãŠãïŒãªãŒããŒéžåºãã³ããããã€ã³ããé害æ€åºãªã©ã®éèŠãªç¬éã匷調衚瀺ããŸãã
- æœè±¡åã¬ã€ã€ãŒã掻çšããïŒå®éã®ã·ã¹ãã ãå¯èŠåããå Žåã¯ãäœã¬ãã«ã®ãããã¯ãŒã¯ã®è©³çŽ°ãæœè±¡åããè«ççãªåæã€ãã³ãã«çŠç¹ãåœãŠãŸãã
- ããã©ãŒãã³ã¹ã®æé©åïŒãããŠã³ã¹ãã¹ããããªã³ã°ãrequestAnimationFrameãWeb Workersãªã©ã®æè¡ã䜿çšããŠãUIã®å¿çæ§ãç¶æããŸãã
- ããã¥ã¡ã³ããŒã·ã§ã³ïŒå¯èŠåã®ã³ã³ãããŒã«ãæåãããŠããã¢ã«ãŽãªãºã ãããã³ããŸããŸãªèŠèŠèŠçŽ ãäœã衚ããã«ã€ããŠãæç¢ºãªèª¬æãæäŸããŸãã
ããã³ããšã³ãéçºãšåæã«é¢ããã°ããŒãã«ãªèæ ®äºé
忣åæã«é¢ããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããéã«ã¯ãã°ããŒãã«ãªèŠç¹ãäžå¯æ¬ ã§ãïŒ
- ãããã¯ãŒã¯é å»¶ïŒãŠãŒã¶ãŒã¯äžçäžããã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ããŸããããŒãéããã³ãŠãŒã¶ãŒãšããŒãéã®ãããã¯ãŒã¯é å»¶ã¯ãåæã«å€§ããªåœ±é¿ãäžããŸããå¯èŠåã¯ãçæ³çã«ã¯ãããã®ããŸããŸãªé å»¶ãã·ãã¥ã¬ãŒããŸãã¯åæ ã§ããã¹ãã§ãã
- å°ççååžïŒããã¯ãšã³ããµãŒãã¹ããããã¯ãã§ãŒã³ããŒãã®ç°ãªãå±éæŠç¥ã¯ãç©ççãªè·é¢ã®ããã«ããŸããŸãªããã©ãŒãã³ã¹ç¹æ§ãæã¡ãŸãã
- ã¿ã€ã ãŸãŒã³ïŒç°ãªãã¿ã€ã ãŸãŒã³ã«ãŸãããã€ãã³ãã®èª¿æŽããã°ã®çè§£ã«ã¯ãæ éãªåãæ±ããå¿ èŠã§ãããããã¯å¯èŠåå ã®ã¿ã€ã ã¹ã¿ã³ãã«åæ ãããããšãã§ããŸãã
- èŠå¶ç°å¢ïŒéèååŒãæ©å¯ããŒã¿ãå«ãã¢ããªã±ãŒã·ã§ã³ã®å ŽåãããŒã¿æåšå°ã忣åã«é¢ããããŸããŸãªå°åã®èŠå¶ãçè§£ããããšãéèŠã§ãã
- æåçãªãã¥ã¢ã³ã¹ïŒåæã¢ã«ãŽãªãºã ã¯æ®éçã§ããããŠãŒã¶ãŒãå¯èŠåãã©ã®ããã«èªèãã察話ãããã¯ç°ãªãå ŽåããããŸããæ®éçã«çè§£ãããèŠèŠçãªã¡ã¿ãã¡ãŒãç®æããŸãã
ããã³ããšã³ããšåæ£åæã®æªæ¥
忣åæè¡ãæçããé«å¯çšæ§ãäžè²«æ§ããã©ãŒã«ããã¬ã©ã³ããªã¢ããªã±ãŒã·ã§ã³ãžã®éèŠãé«ãŸãã«ã€ããŠãããã³ããšã³ãéçºè ã¯ãŸããŸã忣åæã¡ã«ããºã ã®çè§£ãšå¯Ÿè©±ã«é¢äžããããšã«ãªãã§ãããã
ããæŽç·Žãããã¯ã©ã€ã¢ã³ããµã€ãããžãã¯ãžã®åŸåããšããžã³ã³ãã¥ãŒãã£ã³ã°ã®å°é ããããŠãããã¯ãã§ãŒã³æè¡ã®æ®åã¯ãã¹ãŠããã«ãããŒãåæã®å¯èŠåãåãªããããã°ããŒã«ã§ã¯ãªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãšã·ã¹ãã ã®éææ§ã®æ žãšãªãã³ã³ããŒãã³ãã«ãªãæªæ¥ã瀺ããŠããŸããããã³ããšã³ãã®å¯èŠåã¯ãè€éãªåæ£ã·ã¹ãã ãšäººéã®çè§£ãšã®éã®ã®ã£ãããåãããããã®åŒ·åãªæè¡ãããã¢ã¯ã»ã¹ãããããä¿¡é Œã§ãããã®ã«ããã§ãããã
çµè«
ããã³ããšã³ã忣åæã¢ã«ãŽãªãºã ãç¹ã«ãã«ãããŒãåæã®å¯èŠåã¯ãçŸä»£ã®åæ£ã·ã¹ãã ã®è€éããçè§£ã管çããããã®åŒ·åãªã¬ã³ãºãæäŸããŸããã€ã³ã¿ã©ã¯ãã£ããªãã€ã¢ã°ã©ã ãã¹ããŒããã·ã³ãã¡ãã»ãŒãžãããŒã®å¯èŠåãæ¡çšããããšã§ãéçºè ã¯ããæ·±ãæŽå¯ãåŸãŠããã广çã«ãããã°ããããéæã§ãŠãŒã¶ãŒãã¬ã³ããªãŒãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããšãã§ããŸããã³ã³ãã¥ãŒãã£ã³ã°ã®é¢šæ¯ã忣åãç¶ããäžã§ãåæãå¯èŠåããæè¡ãç¿åŸããããšã¯ãäžçäžã®ããã³ããšã³ããšã³ãžãã¢ã«ãšã£ãŠãŸããŸã䟡å€ã®ããã¹ãã«ã«ãªãã§ãããã