Brendan Ike ã¯æšæ¥ããŠã§ãéçºã³ãã¥ããã£ãçç ŽããŸããããŠã§ãã¯ãJavaScriptãããã¯ããã«åªããåäœãããæ°ããäœã¬ãã«ãã€ããªã³ã³ãã€ã«åœ¢åŒãåãåããŸããGoogleãMicrosoftãMozillaãããã³ããã€ãã®ç¬ç«ããå°é家ãW3C WebAssembly Community Groupã§æ°ãããããžã§ã¯ãã«åãçµãã§ããã圌ããåãçµãã§ããã®ã¯å°ããªããšã§ã¯ãããŸããã
WebAssemblyã¯æ¬¡ã®ãšããã§ãã
- JavaScriptã®æ¹åïŒãã¹ãŠã®éèŠãªããšãwasmã«å®è£ ãïŒWebAssemblyã®ç¥-翻蚳è ã®ã¡ã¢ïŒãæšæºJavaScriptã¢ãžã¥ãŒã«ãšããŠã€ã³ããŒãããŸãã
- æ°ããããã°ã©ãã³ã°èšèªïŒ WebAssemblyã¯ããã€ããªåœ¢åŒã§æœè±¡çãªæ§æããªãŒïŒJavaScriptãªã©ïŒãå®çŸ©ããŸãã ã³ãŒããèšè¿°ããŠãããã¹ã圢åŒã®ãšã©ãŒãåãé€ãããšãã§ããŸãã WebAssemblyã¯èªã¿ãããã§ãã
- ãã©ãŠã¶ãŒã®æ¹åïŒãã©ãŠã¶ãŒã¯ãã€ããªåœ¢åŒãç解ããŸããã€ãŸããéçºè ã¯ãã€ããªãã³ã³ãã€ã«ã§ããçŸåšäœ¿çšãããŠããJavaScriptããã¹ããã¡ã€ã«ãããã¯ããã«å€ããå§çž®ã§ããŸãã ãã¡ã€ã«ãå°ããã»ã©ãããŠã³ããŒãã¯é«éã«ãªããŸãã ã³ã³ãã€ã«æéãæé©åããå¯èœæ§ã«å¿ããŠãWebAssemblyã®ã³ãŒãã¯JavaScriptãããé«éã«éä¿¡ããã³å®è¡ã§ããŸãã
- ã³ã³ãã€ã«ã®ç®çïŒä»ã®èšèªãWebãã©ãããã©ãŒã ã®ã¹ã¿ãã¯å šäœãéããŠäžæµã®ãã€ããªãµããŒããåãåãèœåã
ããã¯JavaScriptã«ãšã£ãŠäœãæå³ããŸããïŒ
ãã®è³ªåã«çããåã«ãæéãå·»ãæ»ããŸãããã ReactãAngularãBackboneãjQueryã®åã®æ代ã«æ»ã£ãŠãã ããã
ããã«ããã
ãããã¯ãŒã¯ã¯ãã¡ãã»ãŒãžé ä¿¡ã·ã¹ãã ã䜿çšããŠè¡šç€ºããããã€ããŒããã¹ãããã¥ã¡ã³ãã®ã»ããã§ããããŸã çžäºæ¥ç¶ãããŠããŸããã æåã®WebãµãŒããŒã¯ãCERNã®NeXTã³ã³ãã¥ãŒã¿ãŒïŒäžèšåç §ïŒã§èµ·åãããŸãã...
1991幎ã®åºã§ã ç§ã¯ç°è²ã«å€ããæéããããŸããã§ããã ç§ã¯10,000çªç®ã®ããã¹ãããŒã¹ã®ã¯ãšã¹ãã²ãŒã ãããã¯ããããšããŠããŸãïŒãããããã¹ãŠæ°ããŠããŸããïŒã
ãã®ç®çã®ããã«äžçš®ã®ããã°ã©ãã³ã°èšèªãéžæããŸããã åœæãç§ã¯ãã§ã«BASICãšPascalã«ããããããŠããŸããã Cã䜿çšãããã£ãã®ã§ãããã§ããŸããã§ãããBorlandTurbo C ++ã®ç®±å ¥ãããŒãžã§ã³ã«ä¿åããŠããŸããïŒæåéãã説ææžãšã€ã³ã¹ããŒã«ãã£ã¹ã¯ãå ¥ã£ãããã±ãŒãžããã¯ã¹ã«å ¥ã£ãŠããŸãïŒã ããããç§ã¯æãåçŽãªã¿ãŒãã¢ã»ã³ãã©ãŒããæã£ãŠããŸããã§ããã
ã¢ã»ã³ããªèšèªã§èšè¿°ããDOSã®ã³ãã³ãã©ã€ã³ãšããããã°ãã䜿çšããŠå®è¡å¯èœããã°ã©ã ã«ãã³ã³ãã€ã«ãããŸããã ããããããããšæããªããä¿¡ããŠãã ããã DOSã§äœæ¥ããã®ã«åå幞éã ã£ã人ã§ãããããããã°ãã䜿çšããŠã¢ã»ã³ãã©ãŒããããã°ããæ¢åã®ã³ãŒããéã¢ã»ã³ãã«ïŒãªããŒã¹ãšã³ãžãã¢ãªã³ã°ïŒã§ããããšãç¥ããŸããã
ãã£ãããïŒ ãã å«ãã ã£ãã æ°ããBorland Turbo C ++ã«åº§ã£ãŠäººéçã«ããã°ã©ã ã§ããç¬éãåŸ ã€ããšãã§ããŸããã§ããã äžè¬çã«ã圌ãã¯ç§ã«ãããäžããŸããã ãã£ãïŒ
Borland Turbo Assemblerãããªã€ã³ã¹ããŒã«ãããŠãããããç§ã¯Borland Turbo C ++ã奜ãã§ããã ãªã«ïŒïŒ ãã°ãããé«ã¬ãã«ã®ãªããžã§ã¯ãæåC ++ããŒã«ãããã®ã«ããªãã¢ã»ã³ããªèšèªã§ããã°ã©ã ããã®ã§ããïŒ
æã«ã¯ãè³ã溶ããããšãªãã裞ã®éãŸãã¯ããã«è¿ãéã§äœæ¥ãããããšããããŸãã ã¡ãªã¿ã«ãC ++ã䜿çšããåã«å€ãã®ãã·ã³ã³ãŒããèšè¿°ããããšãèšåããŸãããïŒ
ç§ã¯å€¢äžã§ããã¢ã»ã³ããªèšèªã§ã³ãŒããæžããšããå®éã®çµæãéæããããšã¯ããã»ã©ç°¡åã§ã¯ãããŸããã ããã§ã¯ããªãWebAssemblyãå¿ èŠãªã®ã§ããããïŒ
WebAssemblyãå¿ èŠãªã®ã¯ãJavascriptã®æè»æ§ããã¹ãŠããããããã®äžã«èŠããå€ãã®ããšãæ³åããããšã¯ãŸã å°é£ã§ãããããã«è¿œå ããå¿ èŠãããèšèªã®æ©èœã¯èšèªãè€éã«ããã ãã§ããã ãŠãŒã¶ãŒãæ··ä¹±ãããããã§ã ã
WebAssemblyã䜿çšãããšãããããããã°ã©ã ã«äœ¿çšã§ããåçŽãªäœã¬ãã«ã®ã³ãŒããããã¯ãæäœã§ããŸãã
JavaScriptãšã©ãéãã®ã§ããïŒ ããŒã¯ãŒãã¯ãäœã¬ãã«ãã§ãã ããªããã£ããå®çŸ©ããŸããããã«ã¯ããããã®ã¿ã€ãã«å¯Ÿããå€ãã®ã¿ã€ããšæäœããããã®ãªãã©ã«ãå¶åŸ¡ãããŒãåŒã³åºããããŒããªã©ãå«ãŸããŸãã
ãããã¯éåžžã«åçŽãªããªããã£ãã§ãã è€éãªããšã¯äœããããŸããã è€éãªãªããžã§ã¯ãã·ã¹ãã ïŒãããã¿ã€ããŸãã¯ãã®ä»ïŒã¯ãããŸããã çµã¿èŸŒã¿ã®èªåãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãã¯ååšãããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãå¿ èŠã«ãªã£ããšãã«å®æçã«åæ¢ããŸãã
å®éãWebAssemblyãäžè¬çãªèšèªãšã¯èããªãæ¹ã䟿å©ã§ãã ãã¥ãŒãªã³ã°ãã·ã³ã«å°ã䌌ãè»ã®ããã«èŠããŸãã......
WebAssemblyãšã¯äœã§ããïŒ
WebAssemblyã¯ã ãã€ããªåœ¢åŒã§æ ŒçŽãããæœè±¡æ§æããªãŒ ïŒASTïŒãå®çŸ©ããŸã ã ãã€ããªã¯ã å°ããªã¢ããªã±ãŒã·ã§ã³ãäœæã§ããã®ã§çŽ æŽãããã§ã ã ãã€ããªã³ãŒãããããã°ããæ¹æ³ãçåã«æã£ãŠããããšã§ãããã
幞ããªããšã«ããã©ãŠã¶ã§åäœãããããã¬ãç©æ¥µçã«éçºãããŠãããæœè±¡çãªæ§æããªãŒãïŒæ¯èŒçïŒèªã¿ãããããã¹ã圢åŒã§è¡šç€ºãããŸã ã äŸã瀺ããããšæããŸãããä»ã®ãšããããŸãå€ãã¯ãããŸããã ãããããWebAssemblyã®ã³ãŒãã¯ãJavaScriptã§ææžãã§èšè¿°ãããåæ§ã®ã³ãŒããããèªã¿ã«ãããããããŸããããå°ãªããšãASM.jsãšåããããèªã¿ãããã§ãããã ãããããã£ãšç°¡åã§ãã èŠãŠã¿ãŸãããã
WebAssemblyã¯äœã®ããã«äœ¿çšãããŸããïŒ
ãšããããã¹ã¬ãããšSIMDïŒåäžåœä»€ãè€æ°ããŒã¿ïŒã®åçŽãªäœæ¥ãã€ãŸãã1ã€ã®ã³ãã³ãã¹ããªãŒã ãšè€æ°ã®ããŒã¿ã¹ããªãŒã ã§äœ¿çšã§ããŸãã å€ãã®ããŒã¿ãããã¯ããã¥ãŒã«å ¥ããŠããã1ã€ã®ã³ãã³ããäœæããŠåæã«åŠçã§ããŸãã
ããã¯ãã¹ããªãŒãã³ã°ãããªã®äžŠååŠçãããã»ããµã«ãã£ãŠåŠçãããããšãæå³ããŸãã åŸããåããªãå ŽåãJSã§ãã®æ±ºå®ã«ã€ããŠèããããšããããŸãããJavaScriptã§äœã¬ãã«ã®åé¡ã解決ããã®ã¯ãã€ãäžäŸ¿ã§ããã
ãã®ãããªå Žåããããããªããžã§ã¯ãã·ã¹ãã ããã¬ããŒãžã¯ãªãŒããŒããããã³åçãªã¯ãšãªåŠçãå¿ããŠãã ããã ããŒã¿ã¹ããªãŒã ããã¥ãŒã«å ¥ããŠãã§ããã ãè¿ éãã€å¹ççã«åŠçããŸãã
ã¢ããªã¯ã©ãã§ããïŒ
çŸåšã Ableton Live ïŒé³æ¥œã®äœæïŒãAdobe Premiere Pro ïŒãããªã®äœæïŒãªã©ã®ã¢ããªã±ãŒã·ã§ã³ã¯ãWebãžã®ç§»æ€ã«ã¯ããŸãé©ããŠããŸããã ããã¯å¯èœã§ããããŸã é£ããããšã«æ³šæããŠãã ããã 解決ãã¹ãå€ãã®åé¡ããŸã ãããŸãã ããšãã°ããªã¢ã«ã¿ã€ã ã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ãæé©ã«åæããæ¹æ³ã決å®ããå¿ èŠããããŸãã
ããã«ãåŠçæ©èœã®ãããã¯ãŒã¯ãä»ããŠå€§éã®ããŒã¿ã転éããã¢ããªã±ãŒã·ã§ã³ãéçºããããšãå¯èœã§ãã ããšãã°ãã®ã¿ãŒããã«ã®ã¢ããªã±ãŒã·ã§ã³ãªã©ã 人ã ã¯ãã®ãããªããšãèãããšããéåžžJavaScriptã«ã€ããŠèããŸããã å€ãã®äººã¯ããããè©ŠããŠã¿ãã®ãçŽç²ãªçæ°ã ãšæãã§ãããã
ãããããããã«ãããJavaScriptã¯ã倢èŠãããšãã§ããã¢ããªã±ãŒã·ã§ã³ã®ã»ãšãã©ãæ§ç¯ããããã®æ¬åœã«çŽ æŽãããèšèªã§ãã
WebAssemblyã¯ãJavaScriptã®ã®ã£ãããã·ãŒã ã¬ã¹ã«åããŸããJavaScriptã®æ©èœã«ã¯ã®ã£ããããããããã¯æ±ºããŠç§å¯ã§ã¯ãããŸããã 圌ã®æãå¿ å®ãªãã¡ã³ã§ãããèšèªãé床ã«ã飲ã¿èŸŒããããšãè©Šã¿ãæè»æ§ãšå¹çæ§ã倱ããšãã䞻匵ã«å察ããããšã¯ã»ãšãã©ãããŸããã æšæ¥ãJavaScriptèªäœã«æ©èœãè¿œå ããã ãã§ããããã®ã®ã£ããã«å¯ŸåŠã§ãããšæããŸããã Brendan Ikeã¯FluentäŒè°ã§ãåãéãææ¡ããŸããã ææããŸããã
ãã ãããã®éãã£ãš1ã€ã®ãã€ã³ããèŠéããŠããŸããã誰ããé«æ°Žæºèšèªã§ããã°ã©ãã³ã°ãããã®ã§ãããåæã«ãé床ãäžããå¿ èŠããããšãã«ã¢ã»ã³ããªèšèªã«ãã·ã³ã¯ãã§ããŸãã
WebAssemblyã¯ãJavaScriptã®é床ãåäžãããããšããããŸãïŒä»æ¥ãWebAssemblyã«ã€ããŠã®èšäºãWebå šäœã§æ°çŸã§ã¯ãªãã«ãããäœåããããšç¢ºä¿¡ããŠããŸãã ãããã®ã»ãšãã©ãã以åã«æžãããã®ã§ã¯ãªãããã®ããã°ã©ãã³ã°èšèªã®ãŸã£ããç°ãªãæ©èœã«å°å¿µããããšã¯ééããããŸããã ãšããã§ãç§ã圌女ã«åãã§ããŸãã
WebAssemblyã䜿çšãããšãWebéçºã§ããå€ãã®èšèªã䜿çšã§ããŸã
ãã¡ãããå®éã«ã¯ãWebAssemblyãWebéçºã§ä»ã®ããã°ã©ãã³ã°èšèªã䜿çšããå¿ èŠã¯ãããŸããã ããšãã°ãJavaScriptã®ã³ã³ãã€ã«ã§çŽ æŽãããAAA ã²ãŒã ãšã³ãžã³ãæ¢ã«ãããŸãã
JavaScriptãé ããšèããå Žåã¯...ããã§ã¯ãããŸãããWebAssemblyã¯ãã»ãšãã©ã®JSéçºè ãJavaScriptã§èŠãããªããã®ãè¿œå ããŸãã æ©èœèªäœãå¿ èŠã§ãããJavaScriptã«ã¯ééããªãå ŽæããããŸããã ããã«ãä»ã®ããã°ã©ãã³ã°èšèªããã®ã³ã³ãã€ã«ã䜿çšããŠãããããã¹ãŠã®æ©èœãååŸã§ããŸãã
å®éãWebAssemblyã¯ããã®ç®çã®ããã«ç¹å¥ã«äœæããã代æ¿ã³ã³ãã€ã©ãæäŸããŸãã
ããã§ãããšãã°å ±æã¡ã¢ãªãã§ãŒã³ã«å€§ããäŸåããã³ãŒãã移æ€ããã®ãã¯ããã«ç°¡åã«ãªããŸãã WebAssemblyã®ã³ã³ãã€ã©ãŒãèšè¿°ããæ¹ãJavaScriptã®ã³ã³ãã€ã©ãŒãèšè¿°ãããããç°¡åã§ãããšç¢ºä¿¡ããŠããŸããããã¯ãæåã®ãã®ãèšèªé¢æ°ãç¹å®ã®æœè±¡æ§æããªãŒã«æé©ã«è»¢éããããšãä¿èšŒããããã§ãã
ãã¹ãŠã®å€ãããã°ã©ãã³ã°èšèªãWebäžã§åé¡ãªã䜿çšã§ããããã«ãªã£ããšããäºå®ã¯è¯ãããšã§ãããããã¯äž»ãªããšã§ã¯ãããŸããã äºå®ã¯æ¬¡ã®ãšããã§ãã
WebAssemblyã¯ãéçºè ãæ°ããããã°ã©ãã³ã°èšèªã§äœæ¥ãéå§ããåªããçç±ã§ãããããã¯ãŒã¯ã«ã¯çŽ æŽãããæªæ¥ããããŸãã ãã®ãããæé ãã«ãªãåã«ã圱ããæãåºããŠããžãã¹ã«åãæããããšããå§ãããŸãã
ã¢ããªã³+ FAQ
QïŒ wasmãšã¯äœã§ããïŒ
AïŒ W eb As se m blyã®é åèªã
QïŒ JVMã䜿çšããªãã®ã¯ãªãã§ããïŒ
AïŒãã©ã°ã€ã³ã䜿çšããŠJVMããã©ãŠã¶ãŒã«è¿œå ããããšããè©Šã¿ãè€æ°åãããŸããã æ®å¿µãªãããããã«ã€ããŠã¯è¯ãããšã¯äœããããŸããã JavaScriptã«ã¯ä»®æ³ãã·ã³ãçµã¿èŸŒãŸããŠãããããå¥ã®ä»®æ³ãã·ã³ãè¿œå ãããšã2çªç®ã®æ¥ç¶APIã»ããã衚瀺ãããä»®æ³ãã·ã³ãDOMããããã¯ãŒã¯ãã»ã³ãµãŒãå ¥åããã€ã¹ãªã©ã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã ãã®ããã«äœããç ç²ã«ããªããã°ãªããŸããã ããšãã°ãä»®æ³ãã·ã³ã®ããã»ã¹ã¯ãå©çšå¯èœãªãªãœãŒã¹ãã©ã®ããã«åæ£ããŸããïŒ ãã®è³ªåã«çããããšã¯ãæã£ãããé£ããã§ãã
æåã¯ãWebAssemblyã¯ASM.jsããªãã¡ã€ã«ãšããŠæ©èœããŸããã€ãŸããJavaScriptä»®æ³ãã·ã³ã䜿çšã§ããŸãã ããã«åºã¥ããŠèšèªã®èšèšãéçºããããããWebAssemblyã¯ã代æ¿ã®ä»®æ³ãã·ã³ãæäŸã§ãããããã¹ã ãŒãºã«ãã©ãŠã¶ãšçµ±åã§ããŸãã
QïŒ WebAssemblyã®ç»å Žã¯ãå°æ¥å€ãã®æ°ããããã°ã©ãã³ã°èšèªãç»å Žããããšãæå³ããŸããïŒ ããã¯æçåã«ã€ãªãããŸããïŒ
JavaScriptã¯å®å šã«å®å šã§ãã ãã®çæ ç³»ã¯ä»åŸæ°å¹Žéç¹æ ããŸãã WebAssemblyã¯ãæçåãšããããããããã©ãŒãã³ã¹ãå€æ§æ§ãããã³åé²ã«é¢ãããã®ã§ããAïŒJavaScriptã¯ããµãŒããŒåŽã ãã§ãªããå°åã³ã³ãã¥ãŒã¿ãŒããããããªã©ã®çµã¿èŸŒã¿ã·ã¹ãã ã®ããã°ã©ãã³ã°ã«ãããŠãåžžã«éåžžã«æ·±å»ãªç«¶äºãç¹°ãåºããŠããŸããã éçºããããšã³ã·ã¹ãã ãšå°éã®éçºããŒã ãšã®ããªãè¯ãéžæè¢ãå€æ°ååšããŠããã«ãããããããNodeã¯æ°èäŒæ¥ãå¶å©äŒæ¥ã®ãµãŒããŒã§ã®ååšæãæ¥éã«é«ãç¶ããŠããŸãã
ããã«ãJavaScriptã¯åŒ·åãªãšã³ã·ã¹ãã ã ãã§ãªããéçºè ã®éæ²³ã«çŽé¢ããŠãåªãããµããŒããæäŸããŠããŸãã ããŸããŸãªã¢ãžã¥ãŒã«ã®äººæ°ã°ã©ããèšäºã«è¿œå ããã®ã奜ãã§ãã ãããã®æ²ç·ãèŠãŠé©ãã
ç·ã®æ²ç·ã«æ³šæããŠãã ããã ããã¯ãNodeã«å梱ãããŠããæšæºã®JavaScriptãªããžããªã§ããnpmã§ãã
JavaScriptã¯ãã²ãŒã éçºããããããIoTããã€ã¹ã®ããã°ã©ãã³ã°ã§ãŸããŸã䜿çšãããŠããŸãã ãããã®åéã§ã¯CãC ++ãããã³Javaãšããªãã®ç«¶äºããããŸãããããã¯JavaScriptãäž»èŠãªWebããã°ã©ãã³ã°èšèªãšããŠã®äœçœ®ã«åœ±é¿ãäžããããšã¯ãããŸããã ãã¹ãŠã®éçºè ã«ã¯éžæè¢ããããJavaScriptã䜿çšããçç±ã¯ãããŸããããããæ°ã«å ¥ã£ãŠããããã§ãã
JavaScriptã¯åç¶ããŸãã ãããã°ã©ãã³ã°èšèªã«ã¯2çš®é¡ãããããŸããã人ã ãåžžã«äžæºãæã£ãŠããèšèªãšã誰ã䜿çšããŠããªãèšèªã§ããã ãã§ã«ã³ã»ã¹ãã©ãŠã¹ãã«ã
䟿å©ãªè³æ
W3C WebAssemblyã³ãã¥ããã£ã°ã«ãŒã
ã¡ãŒãªã³ã°ãªã¹ã
IRCïŒircïŒ//irc.w3.orgïŒ6667 /ïŒwebassembly
Github
誰ãé¢ä¿ããŠããŸããïŒ
èè ã«ã€ããŠ
Eric Elliottã¯ã ãProgramming JavaScript Applicationsãããã³ãLearn JavaScript Universal Development with NodeãES6ãïŒReactãã®èè ã§ãã 圌ã¯ãã¢ããã·ã¹ãã ãºããºã³ããã£ãããã¹ãã¶ãŠã©ãŒã«ã¹ããªãŒããžã£ãŒãã«ãESPNãBBCãããã³ã¢ãã·ã£ãŒããã©ã³ã¯ãªãŒã·ã£ã³ãã¡ã¿ãªã«ãªã©ã®ã¢ãŒãã£ã¹ãã®ãœãããŠã§ã¢éçºã«æºãã£ãŠããŸããã ãšãªãã¯ã¯ãã»ãšãã©ã®æéãäžçã§æãçŸãã女æ§ãšã·ãªã³ã³ãã¬ãŒã§éãããŸãã
翻蚳äœæ¥ïŒ greebn9k ïŒã»ã«ã²ã€ã°ãªããã£ãã¯ïŒã ã»ãã³ãã ïŒ ããŒãã»ãã³ ïŒã ã·ã«ããªãªã³ ïŒã¢ã³ãã¬ã€ãã«ã¬ãïŒ
ã·ã³ã°ãªãŒ