WebAssemblyã¯ãWebã§ã®ã³ãŒãå®è¡ãé«éåããããããã®ã«ãŒã«ã¯ã²ãŒã ã®ã«ãŒã«ãå€æŽããèŠå ãšåŒã°ããŠããŸãã äžéšã®ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã¯æ¢ã«å®è£ ãããŠããŸãã ãä»ã®ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã¯åŸã§è¡šç€ºãããŸãã
1ã€ã®ææ³ã¯ããã©ãŠã¶ãããŒãäžã«ã³ãŒããã³ã³ãã€ã«ããã¹ããªãŒãã³ã°ã³ã³ãã€ã«ã§ãã ãããŸã§ããã®æè¡ã¯æœåšçãªå éãªãã·ã§ã³ãšèããããŠããŸããã ããããFirefox 58ã®ãªãªãŒã¹ã«ãããçŸå®ã®ãã®ã«ãªããŸãã
Firefox 58ã«ã¯2ã¬ãã«ã®ã³ã³ãã€ã©ãå«ãŸããŠããŸãã æ°ããããŒã¹ã³ã³ãã€ã©ã¯ãæé©åã³ã³ãã€ã©ããã10ã15åéãã³ãŒããã³ã³ãã€ã«ããŸãã
ããã2ã€ã®å€æŽã«ããããããã¯ãŒã¯ããã®ã³ãŒããããéãã³ãŒããã³ã³ãã€ã«ã§ããŸãã

ãã¹ã¯ãããã§ã¯ã1ç§ããã30ã60 MBã®WebAssemblyã³ãŒããã³ã³ãã€ã«ããŸãã ããã¯ããã±ãããé ä¿¡ãããããã¯ãŒã¯ãããé«éã§ã ã
Firefox NightlyãŸãã¯Betaããæã¡ã®å Žåã¯ããèªèº«ã®ããã€ã¹ã§ãã®æè¡ãè©Šãããšãã§ããŸãã äžèŠæš¡ã®ã¢ãã€ã«ããã€ã¹ã§ããã³ã³ãã€ã«ã¯8 MB /ç§ã§å®è¡ãããŸããããã¯ãã»ãšãã©ã®ã¢ãã€ã«ãããã¯ãŒã¯ã®ããŠã³ããŒãé床ãããé«éã§ãã
ã€ãŸããããŠã³ããŒããå®äºãããšããã«ã³ãŒãã®å®è¡ãéå§ãããŸãã
ãªããããéèŠãªã®ã§ããïŒ
Webããã©ãŒãã³ã¹ã®æ¯æè ã¯ãWebããŒãžã®èªã¿èŸŒã¿ãé ããããããWebãµã€ãäžã®JavaScriptã®å€ãã«ãšã£ãŠéèŠã§ãã
ãã®é床äœäžã®äž»ãªçç±ã®1ã€ã¯ã解ææéãšã³ã³ãã€ã«æéã§ãã Steve Sowdersãææããããã«ãWebããã«ããã¯ã¯ä»¥åã¯ãããã§ããã ãçŸåšã¯CPUãã€ãŸãå®è¡ã®ã¡ã€ã³ã¹ã¬ããã§ããã

ãã®ãããã¡ã€ã³ã¹ã¬ããããå¯èœãªéãå€ãã®äœæ¥ãååŸããå¿ èŠããããŸãã ãŸããããŒãžã®å¯Ÿè©±æ§ãã§ããã ãæ©ã確ä¿ãããããCPUãåžžã«äœ¿çšããŸãã ãŸããäžè¬çã«CPUã®è² è·ãæžããããšããå§ãããŸãã
JavaScriptã¯ãããã®ç®æšã®ããã€ããéæã§ããŸãã ãã¡ã€ã«ãåä¿¡ããåŸãã¡ã€ã³ã¹ããªãŒã ã®å€éšã®ãã¡ã€ã«ã解æã§ããŸãã ãããããããã¯ãŸã å解ããå¿ èŠããããããã¯å€ãã®äœæ¥ã§ãã ãããŠãã³ã³ãã€ã«ããåã«è§£æãå®äºããã®ãåŸ ã€å¿ èŠããããŸãã éåžžã é 延 JS ã³ã³ãã€ã«ããªã³ã¶ãã©ã€ã§çºçãããããã³ã³ãã€ã«ã®å Žåã¯ã¡ã€ã³ã¹ããªãŒã ã«æ»ããŸãã

WebAssemblyã䜿çšãããšãæåããäœæ¥ãå°ãªããªããŸãã WebAssemblyã®ãã³ãŒãã¯ãJavaScriptã®è§£æãããã¯ããã«ç°¡åã§é«éã§ãã ãããŠããããã®ãã³ãŒããšã³ã³ãã€ã«ã¯ããã€ãã®ã¹ã¬ããã«åå²ã§ããŸãã
ããã¯ãè€æ°ã®ã¹ã¬ãããåºæ¬çãªã³ã³ãã€ã«ãå®è¡ããå€§å¹ ã«é«éåããããšãæå³ããŸãã ããã»ã¹ã®æåŸã«ãããªã³ã³ãã€ã«ãããã³ãŒããã¡ã€ã³ã¹ã¬ããã§å®è¡ããå§ããŸãã JSã®å Žåã®ããã«ãã³ã³ãã€ã«ã®åŸ æ©ãåæ¢ããå¿ èŠã¯ãããŸããã

ããªã³ã³ãã€ã«ãããã³ãŒãã¯ã¡ã€ã³ã¹ã¬ããã§å®è¡ãããŸãããçŸæç¹ã§ã¯ä»ã®ã¹ã¬ãããæé©åãããããŒãžã§ã³ã§åäœããŠããŸãã æé©åãããããŒãžã§ã³ã®æºåãæŽããšãäºåããŒãžã§ã³ã眮ãæããããã³ãŒããããã«é«éã«å®è¡ãããŸãã
ããã«ãããWebAssemblyã®èªã¿èŸŒã¿ã¯ãJavaScriptã®èªã¿èŸŒã¿ãããç»åã®ãã³ãŒãã«äŒŒãŠããŸãã èããŠã¿ãŠãã ãã...ããã©ãŒãã³ã¹ã¯150 KBãè¶ ããããšãããã¹ã¯ãªãããæšå¥šããŠããŸããããã®ãµã€ãºã®ç»åã¯æºè¶³ã®ãããã®ã§ã¯ãããŸããã

ããã¯ãã JavaScriptã®äŸ¡æ Œ ãã®èšäºã§ãšãã£ãªã¹ããã説æããããã«ãç»åã®èªã¿èŸŒã¿ãã¯ããã«é«éã ããã§ãã ãŸããç»åã®ãã³ãŒãã¯ã¡ã€ã³ã¹ããªãŒã ããããã¯ããŸãããã¢ã¬ãã¯ã¹ã©ãã»ã«ãèšäºã ãããè²·ãäœè£ã¯ãããŸããïŒ ãã§èª¬æããããã« ãªã¢ã«ã¿ã€ã ã®Webããã©ãŒãã³ã¹äºç® ã
ããã¯ãWebAssemblyãã¡ã€ã«ãç»åãšåã倧ããã«ãªãããšãæå³ããŸããã WebAssemblyããŒã«ã®æåã®ããŒãžã§ã³ã¯å€§ããªãã¡ã€ã«ãäœæããŸããããããã¯ã©ã³ã¿ã€ã ã®å€§éšåãå«ããå¿ èŠãããããã§ãã ãµã€ãºãçž®å°ããããã®ç©æ¥µçãªäœæ¥ãé²è¡äžã§ãã ããšãã°ãEmscriptenã«ã¯ã ããã·ã¥ã€ãã·ã¢ãã ãããããŸãã Rustã§ã¯ãwasm32-unknown-unknownã¿ãŒã²ããã䜿çšããŠéåžžã«å°ããªãã¡ã€ã«ãååŸã§ããããã«ãªããŸããã ããã«ãããã«æé©åããããã®wasm-gcãwasm-snipãªã©ã®ããŒã«ããããŸãã
ããã¯ãWebAssemblyãã¡ã€ã«ãåçã®JavaScriptãããã¯ããã«é«éã«ããŒããããããšãæå³ããŸãã
ããã¯éåžžã«éèŠã§ãã Yehuda Katzãææããããã« ãããã¯ã²ãŒã ã®ã«ãŒã«ãå®éã«å€ããèŠå ã§ãã
ããã§ã¯ãæ°ããã³ã³ãã€ã©ãã©ã®ããã«æ©èœããããèŠãŠã¿ãŸãããã
ã¹ããªãŒã ã®ã³ã³ãã€ã«ïŒåæã®ã³ã³ãã€ã«
ã³ãŒãã®ã³ã³ãã€ã«ãéå§ããã»ã©ãã³ãŒããæ©ãçµäºããŸãã ããã¯ãã¹ããªãŒãã³ã°ã³ã³ãã€ã«ãè¡ãããšã§ã... .wasmãã¡ã€ã«ãã§ããã ãæ©ãã³ã³ãã€ã«ãå§ããããšã«ãã£ãŠã
ãã¡ã€ã«ãããŠã³ããŒããããšãããã¡ã€ã«ã¯1ã€ã«ãŸãšããããŠããŸããã 代ããã«ãäžé£ã®ããã±ãŒãžã§æäŸãããŸãã
以åã¯ã.wasmãã¡ã€ã«ã®ãã¹ãŠã®ããã±ãŒãžãããŠã³ããŒãããå¿ èŠãããããã®åŸãã©ãŠã¶ãŒã®ãããã¯ãŒã¯å±€ããããArrayBufferã«é 眮ããŸããã

次ã«ããã®ArrayBufferã¯Web VMïŒå¥åJSãšã³ãžã³ïŒã«è»¢éãããŸããã ãã®æç¹ã§ãWebAssemblyã³ã³ãã€ã©ãŒã¯ã³ã³ãã€ã«ãéå§ããŸãã

ããããã³ã³ãã€ã©ãŒãä¿çã«ããæ£åœãªçç±ã¯ãããŸããã WebAssemblyã1è¡ãã€ã³ã³ãã€ã«ããããšã¯æè¡çã«å¯èœã§ãã ãã®ãããæåã®ãã©ã°ã¡ã³ããå°çããåŸã«ããã»ã¹ãéå§ã§ããŸãã
ããã¯ãŸãã«ã³ã³ãã€ã©ãŒãè¡ãããšã§ãWebAssemblyã¹ããªãŒãã³ã°ããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ãå©çšããŠããŸãã

Responseãªããžã§ã¯ãã
WebAssembly.instantiateStreaming
æž¡ããšãããŠã³ããŒãåŸããã«æ°ããã³ãŒããã©ã°ã¡ã³ããWebAssemblyãšã³ãžã³ã«éãããŸãã ãã®åŸã次ã®ãã©ã°ã¡ã³ãããŸã ããŠã³ããŒããããŠããéã«ãã³ã³ãã€ã©ã¯æåã®ãã©ã°ã¡ã³ãã§äœæ¥ãéå§ã§ããŸãã

ã³ãŒããåæã«ããŠã³ããŒãããŠã³ã³ãã€ã«ããããšã«å ããŠãå¥ã®å©ç¹ããããŸãã
.wasmã¢ãžã¥ãŒã«ã®ã³ãŒãã»ã¯ã·ã§ã³ã¯ãããŒã¿ã®æ®ãã®éšåïŒã¢ãžã¥ãŒã«ã®ã¡ã¢ãªãªããžã§ã¯ãã«é 眮ãããïŒã®åã«å§ãŸããŸãã ãã®ãããã¹ããªãŒãã³ã°ã³ã³ãã€ã«ã®å Žåãã¢ãžã¥ãŒã«ããŒã¿ãæåŸãŸã§ããŠã³ããŒããããŠããªãéã«ã³ãŒããã³ã³ãã€ã«ãããŸãã ã¢ãžã¥ãŒã«ã«å€§éã®ããŒã¿ãå¿ èŠãªå Žåãã¡ã¢ãªãªããžã§ã¯ãã®ãµã€ãºã¯æ°ã¡ã¬ãã€ãã«ãªãå¯èœæ§ããããã¹ããªãŒã ã³ã³ãã€ã«ã«ããããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸãã

ã¹ããªãŒãã³ã°ã³ã³ãã€ã«ã§ã¯ãã³ã³ãã€ã«ããã»ã¹ãæ©ãéå§ãããŸãã ããããããéãããããšãã§ããŸãã
ã¬ãã«1ã³ã¢ã³ã³ãã€ã©ïŒã³ã³ãã€ã«é床
é«éãªã³ãŒããå¿ èŠãªå Žåã¯ãæé©åããå¿ èŠããããŸãã ããããã³ã³ãã€ã«äžã«ãããã®æé©åãè¡ãã«ã¯æéãããããã³ã³ãã€ã«èªäœãé ããªããŸãã ãããã£ãŠãããã¯æ確ãªåŠ¥åã§ãã
ãã ãã2ã€ã®ã³ã³ãã€ã©ã䜿çšãããšãé«éã³ã³ãã€ã«ãšæé©åãããã³ãŒãã®äž¡æ¹ã®å©ç¹ãåŸãããšãã§ããŸãã æåã®ãã®ã¯ç¹å¥ãªæé©åãªãã§è¿ éã«ã³ã³ãã€ã«ããã2çªç®ã®ãã®ã¯ããé ãåäœããŸãããããæé©åãããã³ãŒããçæããŸãã
ããã¯éå±€åã³ã³ãã€ã©ãšåŒã°ããŸãã ã³ãŒããæåã«å°çãããšãã¬ãã«1ã³ã³ãã€ã©ãŒïŒãŸãã¯ããŒã¹ã³ã³ãã€ã©ãŒïŒã«ãã£ãŠã³ã³ãã€ã«ãããŸãã åºæ¬ã³ã³ãã€ã©ãŒã«ãã£ãŠã³ã³ãã€ã«ãããã³ãŒããéå§ãããåŸãã¬ãã«2ã³ã³ãã€ã©ãŒã¯ã³ãŒããå床åŠçããããã¯ã°ã©ãŠã³ãã§ããæé©åãããããŒãžã§ã³ãæºåããŸãã
ããã»ã¹ãå®äºãããšãã³ãŒãã®åºæ¬ããŒãžã§ã³ã¯æé©åãããããŒãžã§ã³ãšãããã¹ã¯ãããããŸãã ããã«ãããã³ãŒãã®å®è¡ãé«éåãããŸãã

JavaScriptãšã³ãžã³ã¯ãé·ãéãã«ãã¬ãã«ã³ã³ãã€ã©ã䜿çšããŠããŸããã ãã ããJSãšã³ãžã³ã¯ããããããã³ãŒãã«å¯ŸããŠã®ã¿ã¬ãã«2ã³ã³ãã€ã©ïŒã€ãŸããæé©åïŒã䜿çšããŸã...ããã¯ãå®è¡ã®ããã«ããåŒã³åºãããŸãã
å¯Ÿç §çã«ãWebAssemblyã§ã¯ãã¬ãã«2ã³ã³ãã€ã©ãŒã¯å®å šã«åã³ã³ãã€ã«ãå®è¡ããã¢ãžã¥ãŒã«ã³ãŒãå šäœãæé©åããŸãã å°æ¥çã«ã¯ãæé©åãã©ã®ããã«è²ªæ¬²ãŸãã¯æ zyã«ããããå¶åŸ¡ãããªãã·ã§ã³ãè¿œå ããããšãã§ããŸãã
åºæ¬çãªã³ã³ãã€ã©ã¯ãããŒãã«ãããæéãå€§å¹ ã«ç¯çŽããŸãã æé©åã³ã³ãã€ã©ããã10ã15åé«éã«å®è¡ãããŸãã ãããŠãç§ãã¡ã®ã±ãŒã¹ã§ã³ã³ãã€ã«ãããã³ãŒãã¯ã2åé ãã ãã§ãã
ã€ãŸããæé©åãããŠããªãåºæ¬ããŒãžã§ã³ã®ã¿ãæ©èœããŠããæåã®ç¬éã§ããã³ãŒãã¯ååã«é«éã«æ©èœããŸãã
䞊ååïŒããã«é«éå
Firefox Quantumã®èšäºã§ ãç²èª¿æŽãšåŸ®èª¿æŽã®äžŠååã®ãªãã·ã§ã³ã«ã€ããŠèª¬æããŸããã äž¡æ¹ã®ã¿ã€ãã䜿çšããŠWebAssemblyãã³ã³ãã€ã«ããŸãã
åè¿°ã®ããã«ãæé©åã³ã³ãã€ã©ã¯ããã¯ã°ã©ãŠã³ãã§å®è¡ãããã¡ã€ã³ã¹ã¬ãããã³ãŒãå®è¡çšã«è§£æŸããŸãã æé©åã³ã³ãã€ã©ãåã³ã³ãã€ã«ãå®è¡ããŠããéãåºæ¬çãªã³ã³ãã€ã«æžã¿ããŒãžã§ã³ãæ©èœããå ŽåããããŸãã
ãã ãããã®å Žåãã»ãšãã©ã®ã³ã³ãã¥ãŒã¿ãŒã§ã¯ãã»ãšãã©ã®ã³ã¢ãã¢ã³ããŒãããããŸãŸã§ãã ãã¹ãŠã®ã³ã¢ãæé©ã«äœ¿çšããããã«ãäž¡æ¹ã®ã³ã³ãã€ã©ã¯åŸ®èª¿æŽããã䞊ååã䜿çšããŠäœæ¥ãåé¢ããŸãã
䞊ååãŠãããã¯é¢æ°ã§ãã åé¢æ°ã¯ãåå¥ã®ã«ãŒãã«ã§åå¥ã«ã³ã³ãã€ã«ã§ããŸãã å®éãããã¯éåžžã«åŸ®èª¿æŽãããŠãããããå®éã«ã¯ãããã®æ©èœããã倧ããªæ©èœã°ã«ãŒãã«ã°ã«ãŒãåããå¿ èŠããããŸãã ãããã®ã°ã«ãŒãã¯ç°ãªãã³ã¢ã«éä¿¡ãããŸãã
...ãããŠãå®å šãªãã£ãã·ã¥ã®ããã«ãã®äœæ¥ããã¹ãŠã¹ãããããŸãïŒå°æ¥ïŒ
çŸåšãããŒãžããªããŒããããã³ã«ããã³ãŒããšã³ã³ãã€ã«ãç¹°ãè¿ãå®è¡ãããŸãã ãã ããåã.wasmãã¡ã€ã«ãããå Žåã¯ãåããã·ã³ã³ãŒãã«ã³ã³ãã€ã«ããå¿ èŠããããŸãã
ãããã£ãŠãã»ãšãã©ã®å Žåããã®äœæ¥ã¯ã¹ãããã§ããŸãã ãããç§ãã¡ãå°æ¥ããããšã§ãã ãã³ãŒããšã³ã³ãã€ã«ã¯æåã®ããŒãžã®èªã¿èŸŒã¿æã«å®è¡ãããçµæã®ãã·ã³ã³ãŒãã¯HTTPãã£ãã·ã¥ã«ä¿åãããŸãã 次ã«ããã®URLã®èŠæ±ã«å¿ããŠãããã«ããªã³ã³ãã€ã«ããããã·ã³ã³ãŒããçºè¡ãããŸãã
ãã®ãããéåžžãåŸç¶ã®ããŒãžã®èªã¿èŸŒã¿ã§ã¯èªã¿èŸŒã¿æéããªããªããŸãã

ãã®æ©èœã®åºç€ã¯ãã§ã«æ§ç¯ãããŠããŸãã Firefox 58ã§ã¯ããã®æ¹æ³ã§JavaScriptãã€ãã³ãŒãããã£ãã·ã¥ããŸãã .wasmãã¡ã€ã«ããµããŒãããããã«ããã®æ©èœãæ¡åŒµããã ãã§ãã