WebAssemblyã®ãã«ãããªã¥ãŒãªã¿ãŒã³æ©èœãæé©åææ³ã颿°ã€ã³ã¿ãŒãã§ãŒã¹ã®åŒ·åã«ã€ããŠè§£èª¬ãWebã¢ããªã±ãŒã·ã§ã³ãªã©ã®ããã©ãŒãã³ã¹åäžãç®æããŸãããœãããŠã§ã¢éçºãžã®äžççãªåœ±é¿ãçè§£ããŸãããã
WebAssembly ãã«ãããªã¥ãŒãªã¿ãŒã³æé©åïŒé¢æ°ã€ã³ã¿ãŒãã§ãŒã¹ã®åŒ·å
WebAssembly (Wasm) ã¯ãçŸä»£ã®ãœãããŠã§ã¢éçºã®åºç€ãšããŠæ¥éã«æ®åããŠããŸããWasm ã¯ããŠã§ããã©ãŠã¶ããã以å€ã®ç°å¢ã§ã³ãŒããå®è¡ããããã®ã髿§èœã§å®å šãªæ¹æ³ãæäŸãããŠã§ãã²ãŒã ããç§åŠã·ãã¥ã¬ãŒã·ã§ã³ãŸã§ãå¹ åºãã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäžå¯æ¬ ãªãã¯ãããžãŒãšãªã£ãŠããŸããWasm ã®å¹çæ§ã®éèŠãªåŽé¢ã¯ããã®æé©åæ©èœã«ãããç¹ã«åœ±é¿åã®ããåéã® 1 ã€ãããã«ãããªã¥ãŒãªã¿ãŒã³ãµããŒããšãããã«é¢é£ãã颿°ã€ã³ã¿ãŒãã§ãŒã¹ã®åŒ·åã§ãããã®ããã°èšäºã§ã¯ããã«ãããªã¥ãŒãªã¿ãŒã³ã®ãã¥ã¢ã³ã¹ãæãäžããæé©åæŠç¥ãæ¢æ±ããéçºè ãžã®åœ±é¿ãäžçèŠæš¡ã§èå¯ããŸãã
WebAssembly ã®é²åãšæé©åã®å¿ èŠæ§
WebAssembly ã®èµ·æºã¯ããŠã§ãåãã®é«éãã€ããŒã¿ãã«ãªã³ã³ãã€ã«ã¿ãŒã²ããã®å¿ èŠæ§ã«ç«¯ãçºããŠããŸããåœåãWasm ã¯éãããæ©èœã»ãããæäŸããŠããŸããããéçºè ã®å¢å€§ããèŠæ±ã«å¿ããããã«ç¶ç¶çã«é²åããŠããŸãããåæã®ããŒãžã§ã³ã¯ãäž»ã«é¢æ°ããã®åäžå€ã®ãªã¿ãŒã³ã«çŠç¹ãåœãŠãŠããŸããããããããã®ã¢ãããŒãã¯ãç¹ã«è€æ°ã®ããŒã¿ãè¿ãå¿ èŠã®ãã颿°ã®å Žåãéå¹çã«ã€ãªããããšããããŸãããããšãã°ãæ°å€ãªã¹ãã®åèšãšå¹³åã®äž¡æ¹ãèšç®ãã颿°ãèããŠã¿ãŸãããããã«ãããªã¥ãŒãªã¿ãŒã³ããªãå Žåãæ¬¡ã®ãããªåé¿çã«é ŒããããåŸãªãå ŽåããããŸãã
- ã·ãªã¢ã©ã€ãºãããæ§é äœïŒJSON ãã«ã¹ã¿ã ãã€ããªåœ¢åŒãªã©ïŒãå«ãåäžã®æ»ãå€ã䜿çšããã
- ãã¥ãŒã¿ãã«ãªãªããžã§ã¯ãïŒé åãæ§é äœãªã©ïŒã颿°ã«æž¡ãã颿°å ã§ããã倿Žããã
ãããã®ã¢ãããŒãã¯ã©ã¡ãããã¡ã¢ãªã¢ãã±ãŒã·ã§ã³ããã·ãªã¢ã©ã€ãº/ã·ãªã¢ã©ã€ãºãããã³æœåšçãªãã£ãã·ã¥ãã¹ã«é¢ããŠãªãŒããŒããããããããå¯èœæ§ããããŸãããŸããã³ãŒãã®å¯èªæ§ãšä¿å®æ§ãè€éã«ããå¯èœæ§ããããŸããWebAssembly ã§ã®ãã«ãããªã¥ãŒãªã¿ãŒã³ã®å°å ¥ã¯ããããã®å¶éã«çŽæ¥å¯Ÿå¿ãããã®ã§ãã
ãã«ãããªã¥ãŒãªã¿ãŒã³ã®çè§£
ãã«ãããªã¥ãŒãªã¿ãŒã³ã«ãããWasm 颿°ã¯è€æ°ã®å€ãçŽæ¥è¿ãããšãã§ããŸãããã®æ©èœã«ãããã³ãŒããåçåãããåé¿çã®å¿ èŠæ§ããªããªããããå¹ççãªããŒã¿åŠçãå¯èœã«ãªããŸããå©ç¹ã¯ã颿°ãèªç¶ã«è€æ°ã®çµæãçæããã·ããªãªã§ç¹ã«é¡èã§ããããšãã°ãæ°åŠã©ã€ãã©ãªã«ã¯ãçµæãšãšã©ãŒã³ãŒããè¿ã颿°ãããå Žåããã°ã©ãã£ãã¯ã¹ã©ã€ãã©ãªã«ã¯ãé ç¹ã®äœçœ®ãšè²ãè¿ã颿°ãããå ŽåããããŸããå®è£ 㯠WebAssembly ã®ã³ã¢ä»æ§ã®äžéšã§ããå€ãã®ç°ãªãèšèªãšã³ã³ãã€ã©ããè€æ°ã®å€ãè¿ãããã®ãµããŒããå®è£ ããŠããŸãã
ãã«ãããªã¥ãŒãªã¿ãŒã³ã®å©ç¹
- ããã©ãŒãã³ã¹ã®åäžïŒè¿œå ã®ã¡ã¢ãªã¢ãã±ãŒã·ã§ã³ãšã·ãªã¢ã©ã€ãº/ãã·ãªã¢ã©ã€ãºã®æé ã®å¿ èŠæ§ããªãããå®è¡æéãççž®ããŸãã
- ã³ãŒãã®å¯èªæ§ã®åäžïŒé¢æ°ã·ã°ããã£ãç°¡çŽ åããã³ãŒããçè§£ããã³ä¿å®ããããããŸãã颿°ã¯ããã®æå³ãããæç¢ºã«è¡šçŸããããã«ãªããŸããã
- ã¡ã¢ãªãããããªã³ãã®åæžïŒäžéããŒã¿æ§é ã®äœæãåé¿ããã¡ã¢ãªãããããªã³ãã®åæžã«è²¢ç®ããŸãã
- 颿°åŒã³åºãã®ç°¡çŽ åïŒãã€ã³ã¿ããŒã¹ã®ãªã¿ãŒã³ãäžææ§é äœã®å²ãåœãŠãªã©ã远å ã®æé ãå¿ èŠãšããã«ãè¿ãããå€ã«çŽæ¥ã¢ã¯ã»ã¹ã§ããŸãã
ãã«ãããªã¥ãŒãªã¿ãŒã³ã®ä»çµã¿
ãã«ãããªã¥ãŒãªã¿ãŒã³ãæã€ Wasm 颿°ãåŒã³åºããããšãã©ã³ã¿ã€ã ã·ã¹ãã ã¯ãåäžå€ãªã¿ãŒã³ã®å Žåãšåæ§ã«ãè¿ãããå€ãã¹ã¿ãã¯ã«çŽæ¥é 眮ããŸãããã®åŸãåŒã³åºãå ã¯å¿ èŠã«å¿ããŠãããã®å€ã«ã¢ã¯ã»ã¹ã§ããŸããWebAssembly ã®åœä»€ã»ãããšãã€ãã³ãŒã圢åŒã¯ãè€æ°ã®æ»ãå€ã®åãšé¢æ°ã·ã°ããã£ããµããŒãããããã«æŽæ°ãããŠããŸããããã«ãããã³ã³ãã€ã©ã¯ã远å ã®ã¡ã¢ãªç®¡çãªãŒããŒããããæ¿å ¥ããå¿ èŠãªããããå¹ççãªã³ãŒããçæã§ããŸããã¹ã¿ãã¯ã®åäœæ¹æ³ã¯ããã«ãããªã¥ãŒãªã¿ãŒã³ã«ãšã£ãŠéåžžã«éèŠã§ãã
äŸïŒæŠå¿µçïŒïŒ
é åã®æå°å€ãšæå€§å€ãè¿ãæ¬äŒŒã³ãŒãã®ç°¡ç¥åããã颿°ãæ³åããŠãã ããã
(module
(func $minMax (param $array i32) (param $length i32) (result i32 i32)
... // Implementation to calculate min and max
(return (i32.const min) (i32.const max))
)
)
ãã®æŠå¿µçãªäŸã§ã¯ã`minMax` 颿°ã¯ãé åãšãã®é·ããå ¥åãšããŠåãåããé åå ã§èŠã€ãã£ãæå°å€ãšæå€§å€ã衚ã 2 ã€ã® 32 ãããæŽæ°å€ãè¿ããŸããè€æ°ã®å€ãçŽæ¥è¿ãããšã§ãããã»ã¹ãåçåããã代æ¿ã¢ãããŒãã®å¿ èŠæ§ã軜æžãããŸãã
ãã«ãããªã¥ãŒãªã¿ãŒã³ã®æé©åææ³
ãã«ãããªã¥ãŒãªã¿ãŒã³ã®åºæ¬çãªæ©èœã¯ããã«ã¡ãªããããããããŸãããããã«æé©åææ³ã䜿çšãããšãããã©ãŒãã³ã¹ã®åäžãæå€§åãããŸããç®æšã¯ããªãŒããŒããããæå°éã«æããç¹å®ã®ã³ã³ãã€ã©æé©åãå©çšããã©ã³ã¿ã€ã ç°å¢ãšã®å¹ççãªçžäºäœçšãä¿èšŒããããšã§ãã
ã³ã³ãã€ã©æé©å
ã³ã³ãã€ã©ã¯ããã«ãããªã¥ãŒãªã¿ãŒã³ã䜿çšããã³ãŒããæé©åããäžã§éèŠãªåœ¹å²ãæãããŸããC/C++ãRustãGo ãªã©ã®èšèªã®ææ°ã®ã³ã³ãã€ã©ïŒãããã¯ãã¹ãŠ WebAssembly ã§äœ¿çšãããŸãïŒã¯ãå¹çç㪠Wasm ã³ãŒãã®çæã«çéããŠããŸããã³ã³ãã€ã©ã¯ãäžé£ã®æé©åãå®è¡ããŸããæ¬¡ã«ãããã€ãã®æŠç¥ã瀺ããŸãã
- ã¬ãžã¹ã¿å²ãåœãŠïŒã¡ã¢ãªã¢ã¯ã»ã¹ãæå°éã«æããããã«ãæ»ãå€ãã¬ãžã¹ã¿ã«å¹ççã«å²ãåœãŠãŸãã
- ãããã³ãŒãåé€ïŒäžèŠãªã³ãŒããã¹ãŸãã¯èšç®ãåé€ããŸãã
- ã€ã³ã©ã€ã³å±éïŒé¢æ°ãå°ãããé »ç¹ã«åŒã³åºãããå Žåãã³ã³ãã€ã©ã¯ã颿°åŒã³åºãã®ãªãŒããŒããããåæžããããã«ãåŒã³åºããµã€ãã§ãã®ã³ãŒããã€ã³ã©ã€ã³åããããšãéžæããå ŽåããããŸãã
- åœä»€éžæïŒã¿ãŒã²ããã¢ãŒããã¯ãã£ã«æé©ãª Wasm åœä»€ãéžæããŸãã
- 宿°äŒæïŒã³ãŒãå šäœã§å®æ°å€ãèå¥ããŠäŒæããèšç®ãåæžããŸãã
éçºè ã¯ãWasm ãã«ãããªã¥ãŒãªã¿ãŒã³ããµããŒãããå¹ççã«æé©åããã³ã³ãã€ã©ãéžæããå¿ èŠããããŸããã³ã³ãã€ã«æãã©ã°ïŒããã³è©²åœããå Žåã¯ãªã³ã«ãã©ã°ïŒã¯ããããã®æé©åã埮調æŽããããã«éèŠã§ããããšããããããŸãã
ã¡ã¢ãªç®¡ç
ã¡ã¢ãªç®¡çã¯äžå¯æ¬ ã§ããã¡ã¢ãªã®å¹ççãªäœ¿çšã¯ãããã©ãŒãã³ã¹ã«çŽæ¥åœ±é¿ããŸãããã«ãããªã¥ãŒãªã¿ãŒã³ã䜿çšããå Žåã®ã¡ã¢ãªç®¡çã®æé©åã¯ãéèŠãªé åã§ããããã€ãã®èæ ®äºé ã¯æ¬¡ã®ãšããã§ãã
- ã¹ã¿ãã¯ã®äœ¿çšéïŒãã«ãããªã¥ãŒãªã¿ãŒã³ã¯ã¹ã¿ãã¯ãå©çšãããããã¹ã¿ãã¯ãªãŒããŒãããŒãåé¿ããããã«ãã¹ã¿ãã¯ã®äœ¿çšéãæ éã«ç®¡çããããšãäžå¯æ¬ ã§ããããã¯éåžžãååž°é¢æ°åŒã³åºãã§æžå¿µãããŸãã
- äžèŠãªå²ãåœãŠã®åé¿ïŒãã«ãããªã¥ãŒãªã¿ãŒã³ã«ããå²ãåœãŠã®å¿ èŠæ§ããªããªãå¯èœæ§ãããããããããåå°å ¥ããåé¿çãå°å ¥ããããšã¯é¿ããŠãã ããã
- ã¡ã¢ãªå®å šæ§ïŒWasm ã¯ããµã³ãããã¯ã¹åãããå®è¡ã«ãããæ¬è³ªçã«ã¡ã¢ãªå®å šæ§ãæäŸããŸãããã®æ©èœãå©çšããŠãæ»ãå€ãå®å šã«ç®¡çããŸãã
ã©ã³ã¿ã€ã ç°å¢ã®çžäºäœçš
Wasm ã¢ãžã¥ãŒã«ãã©ã³ã¿ã€ã ç°å¢ãšã©ã®ããã«çžäºäœçšãããã¯ãç¹ã«ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã§ãããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸããæ¬¡ã®æé©åã¯ç¹ã«é¢é£æ§ããããŸãã
- å¹ççãªããŒã¿è»¢éïŒWasm ã¢ãžã¥ãŒã«ãšã®éã§ããŒã¿ïŒJavaScript ãªã©ïŒãæž¡ãå Žåã¯ãå¹ççãªããŒã¿è»¢éã¡ã«ããºã ãéžæããŸããäžèŠãªããŒã¿ã³ããŒã¯é¿ããŠãã ããã
- ãã¹ã颿°åŒã³åºãã®æå°åïŒãã¹ã颿°åŒã³åºãïŒWasm ãã JavaScript ãªã©ïŒã«ã¯ãªãŒããŒãããããããŸãããã倧ãããããè€éãªã¿ã¹ã¯ãå®è¡ããããã« Wasm 颿°ãèšèšããããšã«ããããããã®åŒã³åºãã®æ°ãæå°éã«æããŸãã
- ãããã¡ã€ãªã³ã°ïŒãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠãWasm ã¢ãžã¥ãŒã«ã®ããã©ãŒãã³ã¹ãåæããŸããããã©ãŒãã³ã¹ã®ããã«ããã¯ãšæé©åã®é åãç¹å®ããŸãã
颿°ã€ã³ã¿ãŒãã§ãŒã¹ã®åŒ·å
ãã«ãããªã¥ãŒãªã¿ãŒã³ã¯ã颿°ã€ã³ã¿ãŒãã§ãŒã¹ã匷åããéã®ããºã«ã®äžéšã«ãããŸããã颿°ã€ã³ã¿ãŒãã§ãŒã¹èšèšå šäœãæ¹åãããšãããã©ãŒãã³ã¹ãã³ãŒãã®ä¿å®æ§ãããã³äœ¿ããããã®ç¹ã§å€§ããªã¡ãªãããåŸãããŸãã
ã€ã³ã¿ãŒãã§ãŒã¹èšèšã®ãã¹ããã©ã¯ãã£ã¹
- æç¢ºã§ç°¡æœãªé¢æ°ã·ã°ããã£ïŒçè§£ãããã颿°ã·ã°ããã£ãèšèšããŸãããã©ã¡ãŒã¿ãŒã«ããããããååãä»ããæ»ãå€ã®åãæç€ºçã«æå®ããŸãã
- ãšã©ãŒåŠçïŒå ç¢ãªãšã©ãŒåŠçã¡ã«ããºã ãå®è£ ããŸããé©åãªå Žåã¯ããã«ãããªã¥ãŒãªã¿ãŒã³ã䜿çšããŠãçµæãšãšã©ãŒã³ãŒãã®äž¡æ¹ãè¿ããŸããã«ã¹ã¿ã ãšã©ãŒåã䜿çšããæ§é åããããšã©ãŒåŠçãæ€èšããŠãã ããã
- å ¥åæ€èšŒïŒäºæããªãåäœãé²ãããã«ãå ¥åãã©ã¡ãŒã¿ãŒãæ€èšŒããŸãããšããžã±ãŒã¹ãšç¡å¹ãªå ¥åãé©åã«åŠçããŸãã
- ã¢ãžã¥ãŒã«æ§ïŒè€éãªé¢æ°ãããå°ããããã管çããããã¢ãžã¥ãŒã«ã«åå²ããŸããããã«ãããã³ãŒãã®åå©çšãä¿é²ãããä¿å®ã容æã«ãªããŸãã
- ããã¥ã¡ã³ãåïŒé¢æ°ããã©ã¡ãŒã¿ãŒãæ»ãå€ãããã³ãšã©ãŒæ¡ä»¶ã説æãã詳现ãªããã¥ã¡ã³ãããJSDocïŒãŸãã¯ã¿ãŒã²ããèšèªã«çžåœãããã®ïŒãªã©ã®èšèªã䜿çšããŠäœæããŸããé©åã«ããã¥ã¡ã³ãåããã颿°ã€ã³ã¿ãŒãã§ãŒã¹ã¯ãWebAssembly ã³ãŒãã®æåã®éµãšãªããŸãã
API èšèšã®èæ ®äºé
ãã«ãããªã¥ãŒãªã¿ãŒã³ã䜿çšãã API ãèšèšããå Žåã¯ã次ã®ç¹ãèæ ®ããŠãã ããã
- API ã®å®å®æ§ïŒæ¢åã®ã³ãŒããäžæããªãããã«ãAPI ãäžäœäºææ§ãæã€ããã«èšèšããŸãã
- ããŒãžã§ã³ç®¡çïŒããŒãžã§ã³ç®¡çïŒã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ãªã©ïŒã䜿çšããŠãAPI ãªãªãŒã¹ã管çããŸãã
- API ããã¥ã¡ã³ãïŒäŸããŠãŒã¹ã±ãŒã¹ãå«ãå æ¬ç㪠API ããã¥ã¡ã³ããæäŸããŸããAPI ãç°¡åã«ã¢ã¯ã»ã¹ã§ããå Žæã«å ¬éããŸãã
- ãã¬ãŒã ã¯ãŒã¯ã®çµ±åïŒããåºãäžçã§äœ¿çšãããŠããæ¢åã®ãã¬ãŒã ã¯ãŒã¯ãšã®çµ±åãæ€èšããŠãã ãããããšãã°ãäžè¬çãªãŠã§ããã¬ãŒã ã¯ãŒã¯ã®ãã€ã³ãã£ã³ã°ãæäŸããŸãã
å®è·µçãªäŸãšãŠãŒã¹ã±ãŒã¹
ãã«ãããªã¥ãŒãªã¿ãŒã³ã«ã¯ãå¹ åºãã¢ããªã±ãŒã·ã§ã³ããããŸããæ¬¡ã«ããã€ãã®äŸã瀺ããŸãã
- ç§åŠèšç®ïŒæ°å€ã·ãã¥ã¬ãŒã·ã§ã³ã§ã¯ã颿°ã¯è€æ°ã®åºåãèšç®ããããšããããããŸããããšãã°ãç©çãšã³ãžã³ã¯äœçœ®ãšé床ãè¿ãå Žåããããçµ±èšãšã³ãžã³ã¯å¹³åãšæšæºåå·®ãè¿ãå ŽåããããŸãã
- ã°ã©ãã£ãã¯ã¹ã¬ã³ããªã³ã°ïŒã¬ã³ããªã³ã°ãšã³ãžã³ã¯ãåãã¯ã»ã«ã«å¯ŸããŠè²ãšæ·±åºŠå€ãè¿ãå ŽåããããŸãã
- ã²ãŒã éçºïŒè¡çªæ€åºãªã©ã®ã²ãŒã ããžãã¯ã¯ãè¡çªã®çš®é¡ãè¡æç¹ãªã©ã®è€æ°ã®å€ãè¿ãããšãã§ããŸãã
- ããŒã¿åŠçïŒããŒã¿ã»ãããåŠçãã颿°ã¯ãè€æ°ã®çµæïŒããŒã¿ã»ããå ã®æå¹ãªã¬ã³ãŒãæ°ãšç¡å¹ãªã¬ã³ãŒãæ°ãªã©ïŒãè¿ãããšãã§ããŸãã
- ãŠã§ãã¢ããªã±ãŒã·ã§ã³ïŒãŠã§ãã¢ããªã±ãŒã·ã§ã³ã¯ Wasm ãå©çšããŠãèšç®è² è·ã®é«ãã¿ã¹ã¯ã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸããç»ååŠçã©ã€ãã©ãªã¯ãåŠçãããç»åãšã¹ããŒã¿ã¹ã³ãŒããè¿ãå ŽåããããŸãã
äŸïŒç»ååŠç
Wasm ã¢ãžã¥ãŒã«ã¯ãç»ååŠçæ©èœãæäŸã§ããŸãã颿° `processImage` ã¯ãç»åãå ¥åãšããŠåãåããæ°ããç»åãšãåŠçãæåãããã©ããã瀺ãã¹ããŒã¿ã¹ã³ãŒããè¿ãå ŽåããããŸããWebAssembly ã®å©ç¹ã¯ããã€ãã£ããã·ã³ã³ãŒããžã®å¹ççãªã³ã³ãã€ã«ã«ããããã®ãããªé¢æ°ã§æããã«ãªããŸãã
(module
(func $processImage (param $inputImage i32) (param $width i32) (param $height i32) (result i32 i32)
... // Image processing logic, generating the outputImage, and status code
(return (i32.const outputImage) (i32.const status))
)
)
JavaScript ã§ã¯ã颿°åŒã³åºãã¯æ¬¡ã®ããã«ãªããŸãã
const wasmModule = ... // Load the WebAssembly module
const { processImage } = wasmModule.instance.exports;
// Assuming inputImage, width, and height are defined
const [outputImage, status] = processImage(inputImage, width, height);
if (status === 0) {
// Processing successful
// Access the outputImage
} else {
// Error occurred
console.error("Image processing failed with status:", status);
}
äžççãªåœ±é¿ãšå°æ¥ã®ãã¬ã³ã
WebAssembly ãšãã®æ©èœïŒãã«ãããªã¥ãŒãªã¿ãŒã³ãªã©ïŒã®æ¡çšã¯ããœãããŠã§ã¢éçºã«äžççã«åœ±é¿ãäžããŠããŸããæ¬¡ã«ãããã€ãã®éèŠãªèгå¯äºé ã瀺ããŸãã
- ã¯ãã¹ãã©ãããã©ãŒã éçºïŒWasm ã䜿çšãããšãéçºè ã¯ãæå°éã®å€æŽã§ãããŸããŸãªãã©ãããã©ãŒã ïŒãŠã§ããã©ãŠã¶ããµãŒããŒãçµã¿èŸŒã¿ããã€ã¹ïŒã§å®è¡ãããã³ãŒããäœæã§ããŸãã
- ããã©ãŒãã³ã¹ã®åäžïŒæé©åã«ãããã¢ããªã±ãŒã·ã§ã³ãé«éåãããç¹ã«ãªãœãŒã¹ãéãããç°å¢ã§ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããŸãã
- ã³ã³ãã€ã©ãšããŒã«ã®é²åïŒãã«ãããªã¥ãŒãªã¿ãŒã³ã®ã³ã³ãã€ã©ãµããŒãã¯ãããŒã«ãšã³ã·ã¹ãã ãšãšãã«æ¹åããç¶ããŠããŸãã
- èšèªãµããŒãïŒRustãC/C++ãGo ãªã©ã®å€æ°ã®ããã°ã©ãã³ã°èšèªã¯ãWasm ãã«ãããªã¥ãŒãªã¿ãŒã³ããã€ãã£ãã«ãµããŒãããããã«ãªããŸããã
- ãªãŒãã³ã¹ã¿ã³ããŒãïŒWebAssembly ã¯ãªãŒãã³ã¹ã¿ã³ããŒãã§ãããåäžã®ãã³ããŒã«ãã£ãŠå¶åŸ¡ãããŠããŸãããããã«ãããã€ãããŒã·ã§ã³ãä¿é²ããããã³ããŒããã¯ã€ã³ã鲿¢ãããŸãã
å°æ¥ã®ãã¬ã³ã
- ãããªãæé©åïŒçŸåšé²è¡äžã®ç ç©¶ã¯ãã¹ã¿ãã¯ãã¡ã¢ãªã¢ã¯ã»ã¹ãããã³åœä»€å®è¡ã«é¢é£ããæé©åãªã©ãWasm å®è¡ã®å¹çãåäžãããããšã«çŠç¹ãåœãŠãŠããŸãã
- Wasm ã³ã³ããŒãã³ãã¢ãã«ïŒWasm ã³ã³ããŒãã³ãã¢ãã«ã¯ãWasm ã¢ãžã¥ãŒã«ã®äœ¿ãããããåäžãããããšãç®çãšããŠããŸãã
- ãŠãŒã¹ã±ãŒã¹ã®æ¡å€§ïŒãã¯ãããžãŒãæçããã«ã€ããŠãWasm ã¯ããµãŒããŒã¬ã¹ã³ã³ãã¥ãŒãã£ã³ã°ããšããžã³ã³ãã¥ãŒãã£ã³ã°ãããã³ IoT (Internet of Things) ãªã©ã®æ°ããé åã«é²åºãããšäºæ³ãããŸãã
- ã»ãã¥ãªãã£ã®åŒ·åïŒWebAssembly ã¯ãã»ãã¥ãªãã£ã念é ã«çœ®ããŠèšèšãããŠããŸããéçºè ã¯ãããå€ãã®ã»ãã¥ãªãã£æ©èœã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã
å®çšçãªæŽå¯ãšãã¹ããã©ã¯ãã£ã¹
Wasm ãããžã§ã¯ãã§ãã«ãããªã¥ãŒãªã¿ãŒã³ã广çã«äœ¿çšããã«ã¯ã次ã®ç¹ãèæ ®ããŠãã ããã
- é©åãªèšèªã®éžæïŒWasm ãšãã«ãããªã¥ãŒãªã¿ãŒã³ã®ãã€ãã£ããµããŒããæäŸããèšèªãéžæããŸããRust ã¯ããã®ã¡ã¢ãªå®å šæ§æ©èœã«ãããéåžžã«åŒ·åãªéžæè¢ã§ããããšããããããŸãã
- 颿°ã·ã°ããã£ã®æé©åïŒåé¿çãåé¿ããããã«ãè€æ°ã®å€ãçŽæ¥è¿ãããã«é¢æ°ãèšèšããŸãã
- ã³ã³ãã€ã©æé©åã®æŽ»çšïŒWebAssembly ãšãã«ãããªã¥ãŒãªã¿ãŒã³çšã«æé©åãããææ°ã®ã³ã³ãã€ã©ã䜿çšããŸããã³ã³ãã€ã©ãã©ã°ã䜿çšããŸãã
- ã³ãŒãã®ãããã¡ã€ãªã³ã°ïŒãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããŸãã
- API ã®ããã¥ã¡ã³ãåïŒé¢æ°ãš API ã®æç¢ºãªããã¥ã¡ã³ããæäŸããŸãã
- ã¡ã¢ãªå®å šæ§ã®åªå ïŒã³ãŒããã¡ã¢ãªã»ãŒãã§ããããšã確èªããŸãã
- 培åºçãªãã¹ãïŒWasm ã¢ãžã¥ãŒã«ã培åºçã«ãã¹ãããŸãã
ãããã®ãã©ã¯ãã£ã¹ãæ¡çšããããšã§ã髿§èœã§ä¿¡é Œæ§ãé«ããä¿å®å¯èœãª WebAssembly ã¢ãžã¥ãŒã«ãäœæã§ããŸããWebAssembly ãšãã®é²åãã³ã¢ã¹ãã«ã»ãããšããŠåãå ¥ããŸãã
çµè«
ãã«ãããªã¥ãŒãªã¿ãŒã³ã¯ãWebAssembly ã®å€§å¹ ãªæ©èœæ¡åŒµã§ãããããã©ãŒãã³ã¹ã®åäžãããèªã¿ãããã³ãŒããããã³ããå°ããªã¡ã¢ãªãããããªã³ãã«ã€ãªãããŸãããã®ããã°èšäºã§èª¬æãããŠããæé©åææ³ã¯ããã®æ©èœã®ã¡ãªãããæå€§éã«åŒãåºãã®ã«åœ¹ç«ã¡ãŸããWebAssembly ãé²åãç¶ããã«ã€ããŠãéçºè ã¯ææ°ã®éçºæ å ±ãåžžã«ææ¡ãããã¹ããã©ã¯ãã£ã¹ãæ¡çšããå¿ èŠããããŸããWebAssembly ãšãã®é²åããæ©èœã®æ¡çšã¯ãããåªãããœãããŠã§ã¢ãšäžçäžã®ãŠãŒã¶ãŒã«ãšã£ãŠããè¯ããšã¯ã¹ããªãšã³ã¹ã«ã€ãªããå¯èœæ§ããããŸããããã§èª¬æããæ©èœåŒ·åã¯ããã®éã®ãã«äžå¯æ¬ ã§ããWebAssembly ã§ãœãããŠã§ã¢éçºã®æªæ¥ãåãå ¥ããŸãããïŒ