WebAssemblyã«ãããã¡ã¢ãªä¿è·ã¡ã«ããºã ãããã©ãŒãã³ã¹ã«äžãã圱é¿ã解説ãäžçäžã®éçºè åãã«ãã¢ã¯ã»ã¹å¶åŸ¡ãªãŒããŒãããã«çŠç¹ãåœãŠãŸãã
WebAssemblyã¡ã¢ãªä¿è·ã®ããã©ãŒãã³ã¹ïŒã¢ã¯ã»ã¹å¶åŸ¡ãªãŒããŒããããçè§£ãã
WebAssemblyïŒWasmïŒã¯ãããŸããŸãªãã©ãããã©ãŒã ã§ã³ãŒããå¹ççãã€å®å šã«ãµã³ãããã¯ã¹ç°å¢ã§å®è¡ã§ããããã«ãããç»æçãªãã¯ãããžãŒãšããŠç»å ŽããŸããããã®èšèšã¯ã»ãã¥ãªãã£ãšããŒã¿ããªãã£ãåªå ããŠãããWebã¢ããªã±ãŒã·ã§ã³ããµãŒããŒã¬ã¹é¢æ°ãããã«ã¯ãã€ãã£ãæ¡åŒµæ©èœã«ãçæ³çã§ããWasmã®ã»ãã¥ãªãã£ã¢ãã«ã®äžæ žããªãã®ã¯ãå ç¢ãªã¡ã¢ãªä¿è·ã§ããããã«ãããã¢ãžã¥ãŒã«ãå²ãåœãŠãããå¢çå€ã®ã¡ã¢ãªã«ã¢ã¯ã»ã¹ããããç Žæããããããã®ãé²ããŸããããããä»ã®ã»ãã¥ãªãã£ã¡ã«ããºã ãšåæ§ã«ããããã®ä¿è·ã¯ããã©ãŒãã³ã¹ã®ãªãŒããŒããããçºçãããå¯èœæ§ããããŸãããã®ããã°èšäºã§ã¯ãWebAssemblyã®ã¡ã¢ãªä¿è·ããã©ãŒãã³ã¹ã®åŸ®åŠãªéããæãäžããç¹ã«çºçãããã¢ã¯ã»ã¹å¶åŸ¡ãªãŒããŒãããã«çŠç¹ãåœãŠãŸãã
WebAssemblyã»ãã¥ãªãã£ã®æ±ïŒã¡ã¢ãªåé¢
WebAssemblyã¯ããã®æ žå¿ã«ãããŠã峿 Œãªã¡ã¢ãªã¢ãã«ã匷å¶ããä»®æ³ãã·ã³ïŒVMïŒå ã§åäœããŸããåWasmã¢ãžã¥ãŒã«ã«ã¯ãç¬èªã®ç·åœ¢ã¡ã¢ãªãŒç©ºéãæäŸãããŸããããã¯æ¬è³ªçã«é£ç¶ãããã€ãé åã§ããWasmã©ã³ã¿ã€ã ã¯ããã¹ãŠã®ã¡ã¢ãªã¢ã¯ã»ã¹ïŒèªã¿åããæžã蟌ã¿ãå®è¡ïŒããã®å²ãåœãŠãããé åå ã«éå®ãããããšãä¿èšŒãã責任ããããŸãããã®åé¢ã¯ãããã€ãã®çç±ããåºæ¬çã§ãïŒ
- ããŒã¿ç Žæã®é²æ¢ïŒããã¢ãžã¥ãŒã«å ã®æªæã®ããã³ãŒãããã°ã®ããã³ãŒãããå¥ã®ã¢ãžã¥ãŒã«ããã¹ãç°å¢ããŸãã¯ãã©ãŠã¶ã®ã³ã¢æ©èœã®ã¡ã¢ãªã誀ã£ãŠäžæžãããããšã¯ã§ããŸããã
- ã»ãã¥ãªãã£ã®åŒ·åïŒåŸæ¥ã®ãã€ãã£ãã³ãŒããæ©ãŸãããããã¡ãªãŒããŒãããŒãuse-after-freeãšã©ãŒã®ãããªäžè¬çãªè匱æ§ãç·©åããŸãã
- ä¿¡é Œæ§ã®å®çŸïŒéçºè ã¯ããµãŒãããŒãã£ã®ã¢ãžã¥ãŒã«ãã¢ããªã±ãŒã·ã§ã³å šäœã®å®å šæ§ãæãªãå¯èœæ§ãäœããšç¢ºä¿¡ããŠãããå®å¿ããŠçµã¿èŸŒãããšãã§ããŸãã
ãã®ã¡ã¢ãªåé¢ã¯ãéåžžãã³ã³ãã€ã«æãã§ãã¯ãšã©ã³ã¿ã€ã ãã§ãã¯ã®çµã¿åããã«ãã£ãŠå®çŸãããŸãã
ã³ã³ãã€ã«æãã§ãã¯ïŒç¬¬äžã®é²åŸ¡ç·
WebAssembly仿§èªäœã«ã¯ãã³ã³ãã€ã«äžã«ã¡ã¢ãªã®å®å
šæ§ã匷å¶ããã®ã«åœ¹ç«ã€æ©èœãå«ãŸããŠããŸããããšãã°ãç·åœ¢ã¡ã¢ãªã¢ãã«ã¯ãã¡ã¢ãªã¢ã¯ã»ã¹ãåžžã«ã¢ãžã¥ãŒã«èªèº«ã®ã¡ã¢ãªãåºæºãšããããšãä¿èšŒããŸãããã€ã³ã¿ãä»»æã®ã¢ãã¬ã¹ãæãããšãã§ããäœã¬ãã«èšèªãšã¯ç°ãªããã¡ã¢ãªã«ã¢ã¯ã»ã¹ããWasmåœä»€ïŒloadãstoreãªã©ïŒã¯ãã¢ãžã¥ãŒã«ã®ç·åœ¢ã¡ã¢ãªå
ã®ãªãã»ããã«å¯ŸããŠåäœããŸããWasmã³ã³ãã€ã©ãšã©ã³ã¿ã€ã ã¯ååããŠããããã®ãªãã»ãããæå¹ã§ããããšãä¿èšŒããŸãã
ã©ã³ã¿ã€ã ãã§ãã¯ïŒæ²¹æãªãç£èŠåœ¹
ã³ã³ãã€ã«æãã§ãã¯ã匷åºãªåºç€ãç¯ãäžæ¹ã§ãã¢ãžã¥ãŒã«ãå¢çå€ã®ã¡ã¢ãªã«ã¢ã¯ã»ã¹ããããšããªãããšãä¿èšŒããããã«ã¯ãã©ã³ã¿ã€ã ã§ã®åŒ·å¶ãäžå¯æ¬ ã§ããWebAssemblyã©ã³ã¿ã€ã ã¯ã¡ã¢ãªã¢ã¯ã»ã¹æäœãã€ã³ã¿ãŒã»ããããããããã¢ãžã¥ãŒã«ã®å®çŸ©ãããã¡ã¢ãªå¶éå ã«ããããšã確èªããããã®ãã§ãã¯ãå®è¡ããŸããããã§ãã¢ã¯ã»ã¹å¶åŸ¡ãªãŒããŒãããã®æŠå¿µãç»å ŽããŸãã
WebAssemblyã«ãããã¢ã¯ã»ã¹å¶åŸ¡ãªãŒããŒãããã®çè§£
ã¢ã¯ã»ã¹å¶åŸ¡ãªãŒããŒããããšã¯ãåã¡ã¢ãªã¢ã¯ã»ã¹ãæ£åœã§ããããšãæ€èšŒããããã«ã©ã³ã¿ã€ã ã«ãã£ãŠçºçããããã©ãŒãã³ã¹ã³ã¹ããæããŸããWasmã¢ãžã¥ãŒã«ãç¹å®ã®ã¡ã¢ãªã¢ãã¬ã¹ããã®èªã¿åããŸãã¯æžã蟌ã¿ã詊ã¿ããšãWasmã©ã³ã¿ã€ã ã¯æ¬¡ã®ããšãè¡ãå¿ èŠããããŸãïŒ
- ã¢ãžã¥ãŒã«ã®ç·åœ¢ã¡ã¢ãªã®ããŒã¹ã¢ãã¬ã¹ã決å®ããã
- Wasmåœä»€ã§æå®ããããªãã»ãããããŒã¹ã¢ãã¬ã¹ã«å ç®ããŠãå®å¹ã¢ãã¬ã¹ãèšç®ããã
- ãã®å®å¹ã¢ãã¬ã¹ãã¢ãžã¥ãŒã«ã®ã¡ã¢ãªã®å²ãåœãŠãããå¢çå ã«åãŸããã確èªããã
- ãã§ãã¯ãéãã°ãã¡ã¢ãªã¢ã¯ã»ã¹ãèš±å¯ããã倱æããå Žåã¯ãå®è¡ããã©ããïŒäžæïŒããã
ãããã®ãã§ãã¯ã¯ã»ãã¥ãªãã£ã«ãšã£ãŠäžå¯æ¬ ã§ããããã¹ãŠã®ã¡ã¢ãªæäœã«è¿œå ã®èšç®ã¹ããããå ããããšã«ãªããŸããããã©ãŒãã³ã¹ãéèŠãªã¢ããªã±ãŒã·ã§ã³ãç¹ã«åºç¯ãªã¡ã¢ãªæäœã䌎ãã¢ããªã±ãŒã·ã§ã³ã§ã¯ããããéèŠãªèŠå ãšãªãå¯èœæ§ããããŸãã
ã¢ã¯ã»ã¹å¶åŸ¡ãªãŒããŒãããã®èŠå
ãªãŒããŒãããã¯äžæ§ã§ã¯ãªããããã€ãã®èŠå ã«åœ±é¿ãããå¯èœæ§ããããŸãïŒ
- ã©ã³ã¿ã€ã ã®å®è£ ïŒããŸããŸãªWasmã©ã³ã¿ã€ã ïŒäŸïŒChromeãFirefoxãSafariãªã©ã®ãã©ãŠã¶å ããŸãã¯WasmtimeãWasmerãªã©ã®ã¹ã¿ã³ãã¢ãã³ã©ã³ã¿ã€ã ïŒã¯ãã¡ã¢ãªç®¡çãšã¢ã¯ã»ã¹å¶åŸ¡ã«ç°ãªãæŠç¥ãæ¡çšããŠããŸããäžéšã¯ä»ãããæé©åãããå¢çãã§ãã¯ã䜿çšããå ŽåããããŸãã
- ããŒããŠã§ã¢ã¢ãŒããã¯ãã£ïŒåºç€ãšãªãCPUã¢ãŒããã¯ãã£ãšãã®ã¡ã¢ãªç®¡çãŠãããïŒMMUïŒã圹å²ãæããããšããããŸããã©ã³ã¿ã€ã ããã°ãã°æŽ»çšããã¡ã¢ãªãããã³ã°ãããŒãžä¿è·ãªã©ã®æè¡ã¯ãããŒããŠã§ã¢ã«ãã£ãŠããã©ãŒãã³ã¹ç¹æ§ãç°ãªãå ŽåããããŸãã
- ã³ã³ãã€ã«æŠç¥ïŒWasmã³ãŒãããœãŒã¹èšèªïŒäŸïŒC++ãRustãGoïŒããã³ã³ãã€ã«ãããæ¹æ³ããã¡ã¢ãªã¢ã¯ã»ã¹ãã¿ãŒã³ã«åœ±é¿ãäžããå¯èœæ§ããããŸããé »ç¹ã«å°ããã¢ã©ã€ã¡ã³ããããã¡ã¢ãªã¢ã¯ã»ã¹ãçæããã³ãŒãã¯ã倧ããã¢ã©ã€ã¡ã³ããããŠããªãã¢ã¯ã»ã¹ãæã€ã³ãŒããšã¯ç°ãªãåäœããããããããŸããã
- Wasmã®æ©èœãšæ¡åŒµïŒWasmãé²åããã«ã€ããŠãæ°ããæ©èœãææ¡ã远å ã®ã¡ã¢ãªç®¡çæ©èœãã»ãã¥ãªãã£äžã®èæ ®äºé ãå°å ¥ãããªãŒããŒãããã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
ãªãŒããŒãããã®å®éåïŒãã³ãããŒã¯ãšåæ
åè¿°ã®å€æ°ããããããã¢ã¯ã»ã¹å¶åŸ¡ãªãŒããŒããããæ£ç¢ºã«å®éåããããšã¯å°é£ã§ããWasmã®ããã©ãŒãã³ã¹ããã³ãããŒã¯ããéã«ã¯ãç¹å®ã®èšç®ã¿ã¹ã¯ãå®è¡ãããã®å®è¡æéããã€ãã£ãã³ãŒããä»ã®ãµã³ãããã¯ã¹ç°å¢ãšæ¯èŒããããšããããããŸããã¡ã¢ãªéçŽçãªãã³ãããŒã¯ã§ã¯ãéšåçã«ã¡ã¢ãªã¢ã¯ã»ã¹ãã§ãã¯ã«èµ·å ããå¯èœæ§ã®ããå·®ã芳å¯ãããããšããããŸãã
äžè¬çãªãã³ãããŒã¯ã·ããªãª
ããã©ãŒãã³ã¹ã¢ããªã¹ãã¯ããã°ãã°ä»¥äžã®ãããªãã®ã䜿çšããŸãïŒ
- è¡åä¹ç®ïŒé åã¢ã¯ã»ã¹ãšæäœã«å€§ããäŸåããå€å žçãªãã³ãããŒã¯ã
- ããŒã¿æ§é æäœïŒé »ç¹ãªã¡ã¢ãªèªã¿åããšæžã蟌ã¿ãå¿ èŠãšããè€éãªããŒã¿æ§é ïŒããªãŒãã°ã©ããããã·ã¥ããŒãã«ïŒãå«ããã³ãããŒã¯ã
- ç»åã»åç»åŠçïŒãã¯ã»ã«ããŒã¿ã®ããã«å€§ããªã¡ã¢ãªãããã¯ãæäœããã¢ã«ãŽãªãºã ã
- ç§åŠæè¡èšç®ïŒåºç¯ãªé ååŠçãäŒŽãæ°å€ã·ãã¥ã¬ãŒã·ã§ã³ãšèšç®ã
ãããã®ãã³ãããŒã¯ã®Wasmå®è£ ããã€ãã£ãã®å¯Ÿå¿ç©ãšæ¯èŒãããšããã°ãã°ããã©ãŒãã³ã¹ã®å·®ã芳å¯ãããŸãããã®å·®ã¯å€ãã®èŠå ïŒäŸïŒJITã³ã³ãã€ã«å¹çã颿°åŒã³åºããªãŒããŒãããïŒã®åèšã§ãããã¡ã¢ãªã¢ã¯ã»ã¹ãã§ãã¯ãç·ã³ã¹ãã«å¯äžããŸãã
芳枬ããããªãŒããŒãããã«åœ±é¿ãäžããèŠå
- ã¡ã¢ãªãµã€ãºïŒã©ã³ã¿ã€ã ãããè€éãªã¡ã¢ãªã»ã°ã¡ã³ããããŒãžããŒãã«ã管çããå¿ èŠãããå Žåããã倧ããªã¡ã¢ãªå²ãåœãŠã¯ããå€ãã®ãªãŒããŒããããåŒãèµ·ããå¯èœæ§ããããŸãã
- ã¢ã¯ã»ã¹ãã¿ãŒã³ïŒã©ã³ãã ã¢ã¯ã»ã¹ãã¿ãŒã³ã¯ãã·ãŒã±ã³ã·ã£ã«ã¢ã¯ã»ã¹ããããªãŒããŒãããã«ææã§ããåŸåããããŸãããªããªããã·ãŒã±ã³ã·ã£ã«ã¢ã¯ã»ã¹ã¯ããŒããŠã§ã¢ã®ããªãã§ããã«ãã£ãŠæé©åãããããšãããããã§ãã
- ã¡ã¢ãªæäœã®æ°ïŒèšç®æäœã«å¯Ÿããã¡ã¢ãªæäœã®æ¯çãé«ãã³ãŒãã¯ãããé¡èãªãªãŒããŒãããã瀺ãå¯èœæ§ãé«ãã§ãã
ç·©åæŠç¥ãšä»åŸã®æ¹åæ§
ã¢ã¯ã»ã¹å¶åŸ¡ãªãŒããŒãããã¯Wasmã®ã»ãã¥ãªãã£ã¢ãã«ã«å åšãããã®ã§ãããã©ã³ã¿ã€ã ã®æé©åãèšèªããŒã«ã«ãããç¶ç¶çãªåãçµã¿ããã®åœ±é¿ãæå°éã«æããããšãç®æããŠããŸãã
ã©ã³ã¿ã€ã ã®æé©å
Wasmã©ã³ã¿ã€ã ã¯ç¶ç¶çã«æ¹åãããŠããŸãïŒ
- å¹ççãªå¢çãã§ãã¯ïŒã©ã³ã¿ã€ã ã¯ãå¢çãã§ãã¯ã«å·§åŠãªã¢ã«ãŽãªãºã ãæ¡çšããCPUåºæã®åœä»€ããã¯ãã«åãããæäœã掻çšããå¯èœæ§ããããŸãã
- ããŒããŠã§ã¢æ¯æŽã«ããã¡ã¢ãªä¿è·ïŒäžéšã®ã©ã³ã¿ã€ã ã¯ãããŒããŠã§ã¢ã®ã¡ã¢ãªä¿è·æ©èœïŒMMUã®ããŒãžããŒãã«ãªã©ïŒãšã®ããæ·±ãçµ±åãæš¡çŽ¢ãããã§ãã¯ã®è² æ ã®äžéšããœãããŠã§ã¢ãããªãããŒãããå¯èœæ§ããããŸãã
- Just-In-TimeïŒJITïŒã³ã³ãã€ã«ã®åŒ·åïŒWasmã³ãŒããå®è¡ãããã«ã€ããŠãJITã³ã³ãã€ã©ã¯ã¡ã¢ãªã¢ã¯ã»ã¹ãã¿ãŒã³ãåæããç¹å®ã®å®è¡ã³ã³ããã¹ãå ã§äžèŠã§ããããšã蚌æã§ããã°ãäžéšã®ãã§ãã¯ãæé©åããããããã«ã¯çç¥ãããããå¯èœæ§ããããŸãã
èšèªãšã³ã³ãã€ã«ããŒã«
éçºè ãããŒã«ãã§ãŒã³ã®äœæè ã圹å²ãæããããšãã§ããŸãïŒ
- æé©åãããã¡ã¢ãªã¬ã€ã¢ãŠãïŒWasmã«ã³ã³ãã€ã«ããèšèªã¯ãå¹ççãªã¢ã¯ã»ã¹ãšãã§ãã¯ã«é©ããã¡ã¢ãªã¬ã€ã¢ãŠããç®æãããšãã§ããŸãã
- ã¢ã«ãŽãªãºã ã®æ¹åïŒããè¯ãã¡ã¢ãªã¢ã¯ã»ã¹ãã¿ãŒã³ã瀺ãã¢ã«ãŽãªãºã ãéžæããããšã§ã鿥çã«èŠ³æž¬ããããªãŒããŒããããåæžã§ããŸãã
- Wasm GCææ¡ïŒä»åŸã®WebAssemblyã®ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ïŒGCïŒææ¡ã¯ãWasmã«ãããŒãžãã¡ã¢ãªãããããããšãç®æããŠãããããã«ããã¡ã¢ãªç®¡çãšä¿è·ãããã·ãŒã ã¬ã¹ã«çµ±åã§ããå¯èœæ§ããããŸãããããèªäœãç¬èªã®ããã©ãŒãã³ã¹äžã®èæ ®äºé ãå°å ¥ããŸãã
WebAssembly System Interface (WASI) ãšãã®å
WebAssembly System InterfaceïŒWASIïŒã¯ãWasmã¢ãžã¥ãŒã«ãå®å šãã€ããŒã¿ãã«ãªæ¹æ³ã§ãã¹ãç°å¢ãšå¯Ÿè©±ã§ããããã«ããã¢ãžã¥ãŒã«åŒã®ã·ã¹ãã ã€ã³ã¿ãŒãã§ãŒã¹ã§ããWASIã¯ãI/Oããã¡ã€ã«ã·ã¹ãã ã¢ã¯ã»ã¹ããã®ä»ã®ã·ã¹ãã ã¬ãã«ã®æäœã®ããã®æšæºAPIãå®çŸ©ããŸããWASIã¯äž»ã«ã³ã¢ã¡ã¢ãªã¢ã¯ã»ã¹ãã§ãã¯ã«çŽæ¥åœ±é¿ãäžããã®ã§ã¯ãªããæ©èœïŒãã¡ã€ã«ã¢ã¯ã»ã¹ãªã©ïŒãæäŸããããšã«çŠç¹ãåœãŠãŠããŸãããWASIã®å šäœçãªèšèšã¯å®å šã§å¹ççãªå®è¡ç°å¢ãç®æããŠããã鿥çã«æé©åãããã¡ã¢ãªä¿è·ã®æ©æµãåããŸãã
Wasmã®é²åã«ã¯ã次ã®ãããªããé«åºŠãªã¡ã¢ãªç®¡çã«é¢ããææ¡ãå«ãŸããŠããŸãïŒ
- å ±æã¡ã¢ãªïŒè€æ°ã®Wasmã¹ã¬ããããããã«ã¯è€æ°ã®Wasmã€ã³ã¹ã¿ã³ã¹ãã¡ã¢ãªé åãå ±æã§ããããã«ããŸããããã¯åæãšä¿è·ã«æ°ããªèª²é¡ããããããŸããããã«ãã¹ã¬ããã¢ããªã±ãŒã·ã§ã³ã«å€§å¹ ãªããã©ãŒãã³ã¹åäžãããããå¯èœæ§ããããŸããããã§ã®ã¢ã¯ã»ã¹å¶åŸ¡ã¯ãå¢çã ãã§ãªããå ±æããŒã¿ã®èªã¿æžãæš©éãå«ããããã«éèŠãªãã®ã«ãªããŸãã
- ã¡ã¢ãªä¿è·ããŒïŒMPKïŒãŸãã¯ãã现ããããŒããã·ã§ã³ïŒå°æ¥ã®ææ¡ã§ã¯ãåçŽãªå¢çãã§ãã¯ãè¶ ããããããã现ããã¡ã¢ãªä¿è·ã¡ã«ããºã ãæ¢æ±ãããå¯èœæ§ããããŸããããã«ãããã¢ãžã¥ãŒã«ãç°ãªãã¡ã¢ãªé åã«å¯ŸããŠç¹å®ã®ã¢ã¯ã»ã¹æš©ïŒèªã¿åãå°çšãèªã¿æžãå¯èœãå®è¡äžå¯ïŒãèŠæ±ã§ããããã«ãªããããããŸãããããã«ãããèŠæ±ãããæäœã«é¢é£ãããã§ãã¯ã®ã¿ãå®è¡ããããšã§ããªãŒããŒããããåæžã§ããå¯èœæ§ããããŸãã
Wasmããã©ãŒãã³ã¹ã«é¢ããã°ããŒãã«ãªèŠç¹
Wasmã®ã¡ã¢ãªä¿è·ãããã©ãŒãã³ã¹ã«äžãã圱é¿ã¯ãäžççãªé¢å¿äºã§ããäžçäžã®éçºè ãã倿§ãªã¢ããªã±ãŒã·ã§ã³ã«WasmãæŽ»çšããŠããŸãïŒ
- ãŠã§ãã¢ããªã±ãŒã·ã§ã³ïŒãã¹ãŠã®å€§éžã®ãã©ãŠã¶ã«ããã髿§èœã°ã©ãã£ãã¯ã¹ãã²ãŒã ãè€éãªUIã¯Wasmã®éåºŠã®æ©æµãåããŸãããç¹ã«äœã¹ããã¯ã®ããã€ã¹ã§ã¯ãã¡ã¢ãªã®ãªãŒããŒãããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
- ãšããžã³ã³ãã¥ãŒãã£ã³ã°ïŒèšç®ãªãœãŒã¹ãå¶çŽãããå¯èœæ§ã®ãããšããžããã€ã¹ïŒIoTããã€ã¯ãããŒã¿ã»ã³ã¿ãŒïŒã§Wasmã¢ãžã¥ãŒã«ãå®è¡ããå Žåãã¡ã¢ãªã¢ã¯ã»ã¹ãå«ããããããªãŒããŒããããæå°éã«æããããšãæãéèŠã§ãã
- ãµãŒããŒã¬ã¹ãšã¯ã©ãŠãïŒãµãŒããŒã¬ã¹é¢æ°ã§ã¯ãã³ãŒã«ãã¹ã¿ãŒãæéãšå®è¡é床ãéèŠã§ããå¹ççãªã¡ã¢ãªç®¡çãšæå°éã®ã¢ã¯ã»ã¹ãªãŒããŒãããã¯ãããéãå¿çæéãšãäžçäžã®äŒæ¥ã®éçšã³ã¹ãåæžã«è²¢ç®ããŸãã
- ãã¹ã¯ãããããã³ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ïŒWasmããã©ãŠã¶ãè¶ ããŠæ¡å€§ããã«ã€ããŠãããŸããŸãªãªãã¬ãŒãã£ã³ã°ã·ã¹ãã äžã®ã¢ããªã±ãŒã·ã§ã³ã¯ãã»ãã¥ãªãã£ã®ããã«ãã®ãµã³ãããã¯ã¹åã«ããããŠå¿çæ§ã®ããã«ãã®ããã©ãŒãã³ã¹ã«äŸåããããšã«ãªããŸãã
è£œåæšèŠãšã³ãžã³ã«Wasmã䜿çšããŠããã°ããŒãã«ãªeã³ããŒã¹ãã©ãããã©ãŒã ãèããŠã¿ãŸãããããã®ãšã³ãžã³ããŠãŒã¶ãŒããŒã¿ãšè£œåã«ã¿ãã°ãåŠçããããã«ãªã¯ãšã¹ãããšã«æ°çŸäžåã®ã¡ã¢ãªã¢ã¯ã»ã¹ãå®è¡ããå Žåãã¢ã¯ã»ã¹ããããããæ°ããç§ã®ãªãŒããŒãããã§ãå€§å¹ ã«ç©ã¿éãªãããã©ãã¯ãã©ã€ããŒãç¬èº«ã®æ¥ãªã©ã®ããŒã¯ã·ã§ããã³ã°ã·ãŒãºã³äžã«ã³ã³ããŒãžã§ã³çã«åœ±é¿ãäžããå¯èœæ§ããããŸãããããã£ãŠããããã®ã¡ã¢ãªæäœãæé©åããããšã¯ãåãªãæè¡çãªè¿œæ±ã§ã¯ãªããããžãã¹äžã®å¿ é èŠä»¶ã§ãã
åæ§ã«ãWasmã§æ§ç¯ããããªã¢ã«ã¿ã€ã å ±åãã¶ã€ã³ããŒã«ã¯ãäžçäžã®ãŠãŒã¶ãŒéã§å€æŽãã¹ã ãŒãºã«åæãããããšãä¿èšŒããå¿ èŠããããŸããã¡ã¢ãªã¢ã¯ã»ã¹ãã§ãã¯ã«ãã£ãŠåŒãèµ·ããããé å»¶ã¯ããŸãšãŸãã®ãªããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ã€ãªãããç°ãªãã¿ã€ã ãŸãŒã³ããããã¯ãŒã¯æ¡ä»¶äžã§äœæ¥ããå ±åäœæ¥è ãèç«ãããå¯èœæ§ããããŸãã課é¡ã¯ããã®ãããªã¢ããªã±ãŒã·ã§ã³ã«èŠæ±ããããªã¢ã«ã¿ã€ã ã®å¿çæ§ãæãªãããšãªããã»ãã¥ãªãã£ä¿èšŒãç¶æããããšã§ãã
çµè«ïŒã»ãã¥ãªãã£ãšããã©ãŒãã³ã¹ã®ãã©ã³ã¹
WebAssemblyã®ã¡ã¢ãªä¿è·ã¯ããã®ã»ãã¥ãªãã£ãšããŒã¿ããªãã£ã®ç€ã§ããã¢ã¯ã»ã¹å¶åŸ¡ã¡ã«ããºã ã¯ãã¢ãžã¥ãŒã«ãæå®ãããã¡ã¢ãªç©ºéå ã§åäœããããšãä¿èšŒããåºç¯ãªè匱æ§ãé²ããŸãããããããã®ã»ãã¥ãªãã£ã«ã¯ã³ã¹ãã䌎ããŸãããããã¢ã¯ã»ã¹å¶åŸ¡ãªãŒããŒãããã§ãã
Wasmãšã³ã·ã¹ãã ãæçããã«ã€ããŠãã©ã³ã¿ã€ã å®è£ ãã³ã³ãã€ã©ã®æé©åãæ°ããèšèªæ©èœã«ãããç¶ç¶çãªç ç©¶éçºãããã®ãªãŒããŒããããæå°éã«æããããã«çµ¶ããè¡ãããŠããŸããéçºè ã«ãšã£ãŠã¯ãã¡ã¢ãªã¢ã¯ã»ã¹ã³ã¹ãã«å¯äžããèŠå ãçè§£ããã³ãŒãã§ãã¹ããã©ã¯ãã£ã¹ãæ¡çšããããšããWebAssemblyã®ããã©ãŒãã³ã¹ã®å¯èœæ§ãæå€§éã«åŒãåºãã®ã«åœ¹ç«ã¡ãŸãã
Wasmã®æªæ¥ã¯ãããã«æŽç·Žãããã¡ã¢ãªç®¡çãšä¿è·æŠç¥ãçŽæããŠããŸããç®æšã¯ãWasmãç¥ãããŠãã匷åãªã»ãã¥ãªãã£ä¿èšŒãæäŸãã€ã€ãããã©ãŒãã³ã¹ãç«¶äºåãç¶æããèŠæ±ã®å³ããããŸããŸãªã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã«é©ããŠããããšãä¿èšŒãããšãããå ç¢ãªãã©ã³ã¹ãä¿ã€ããšã§ãã
ãããã®é²æ©ã«ã€ããŠåžžã«æ å ±ãå ¥æããããããè³¢æã«é©çšããããšã§ãäžçäžã®éçºè ã¯WebAssemblyãæèŒãã驿°çã§å®å šããã€é«æ§èœãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ãç¶ããããšãã§ããŸãã