WebAssemblyã®ã¡ã¢ãªä¿è·ã¡ã«ããºã ãããã©ãŒãã³ã¹ã«äžãã圱é¿ãç¹ã«ã¢ã¯ã»ã¹å¶åŸ¡åŠçã®ãªãŒããŒãããã«çŠç¹ãåœãŠã詳现ãªåæãæé©åæŠç¥ãšå°æ¥ã®ååã解説ããŸãã
WebAssemblyã®ã¡ã¢ãªä¿è·ã«ãããããã©ãŒãã³ã¹ãžã®åœ±é¿ïŒã¢ã¯ã»ã¹å¶åŸ¡åŠçã®ãªãŒããŒããã
WebAssemblyïŒWASMïŒã¯ããŠã§ãããã®ä»ã®ç°å¢ã§é«æ§èœãªã¢ããªã±ãŒã·ã§ã³ãå®çŸããããã®äž»èŠãªæè¡ãšããŠç»å ŽããŸããããã®èšèšã¯ã»ãã¥ãªãã£ãšå¹çãåªå ããŠããããŠã§ããã©ãŠã¶ãã¯ã©ãŠãã³ã³ãã¥ãŒãã£ã³ã°ãããçµèŸŒã¿ã·ã¹ãã ããããã¯ãã§ãŒã³æè¡ãŸã§ãå¹ åºããŠãŒã¹ã±ãŒã¹ã«é©ããŠããŸããWASMã®ã»ãã¥ãªãã£ã¢ãã«ã®äžæ žããªãã®ãã¡ã¢ãªä¿è·ã§ãããæªæã®ããã³ãŒããå²ãåœãŠãããã¡ã¢ãªç©ºéå€ã®ããŒã¿ã«ã¢ã¯ã»ã¹ãããã倿Žãããããã®ãé²ããŸãããããããã®ä¿è·ã«ã¯ä»£åã䌎ããŸãããããã¢ã¯ã»ã¹å¶åŸ¡åŠçã®ãªãŒããŒãããã§ãããã®èšäºã§ã¯ããããã®ã¡ã«ããºã ãããã©ãŒãã³ã¹ã«äžãã圱é¿ãæ·±ãæãäžãããªãŒããŒãããã®åå ãæé©åæè¡ããããŠWASMã¡ã¢ãªä¿è·ã®å°æ¥ã®æ¹åæ§ãæ¢ããŸãã
WebAssemblyã®ã¡ã¢ãªã¢ãã«ãçè§£ãã
WebAssemblyã¯ãµã³ãããã¯ã¹åãããç°å¢å ã§åäœããŸããããã¯ãã·ã¹ãã ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã峿 Œã«ç®¡çãããŠããããšãæå³ããŸãããã®ç°å¢ã®äžå¿ã«ããã®ããªãã¢ã¡ã¢ãªã§ãããã¯WASMã¢ãžã¥ãŒã«ãã¢ã¯ã»ã¹ã§ããé£ç¶ããã¡ã¢ãªãããã¯ã§ãããã®ãªãã¢ã¡ã¢ãªã¯éåžžãJavaScriptã§ã¯åä»ãé åïŒTyped ArrayïŒãšããŠãä»ã®åã蟌ã¿ç°å¢ã§ã¯åæ§ã®ã¡ã¢ãªé åãšããŠå®è£ ãããŸãã
WASMã¡ã¢ãªã¢ãã«ã®äž»ãªç¹åŸŽïŒ
- ãªãã¢ã¡ã¢ãª: ãµã€ãºå€æŽå¯èœãªåäžã®ãã€ãé åã
- ãµã³ãããã¯ã¹å: åºç€ãšãªããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãããŒããŠã§ã¢ãžã®çŽæ¥ã¢ã¯ã»ã¹ã鲿¢ã
- 決å®è«çå®è¡: ç°ãªããã©ãããã©ãŒã éã§äžè²«ããåäœãä¿èšŒã
- åä»ãåœä»€: åœä»€ã¯ç¹å®ã®ããŒã¿åïŒäŸïŒi32, i64, f32, f64ïŒã«å¯ŸããŠæäœãè¡ããéçè§£æãšæé©åãæ¯æŽã
ãã®ãµã³ãããã¯ã¹åãããåä»ããããæ±ºå®è«çãªç°å¢ã¯ãç¹ã«æ§ã ãªãœãŒã¹ããã®ä¿¡é Œã§ããªãã³ãŒããå®è¡ãããå¯èœæ§ã®ãããŠã§ããã©ãŠã¶ã®ãããªã³ã³ããã¹ãã«ãããŠãã»ãã¥ãªãã£ã«ãšã£ãŠæ¥µããŠéèŠã§ãããããããããã®ç¹æ§ã匷å¶ããã«ã¯ã©ã³ã¿ã€ã ãã§ãã¯ãšå¢çæ€æ»ãå¿ èŠã§ãããããããªãŒããŒããããåŒãèµ·ãããŸãã
ã¡ã¢ãªä¿è·ã®å¿ èŠæ§
ã¡ã¢ãªä¿è·ã¯ãWASMã¢ããªã±ãŒã·ã§ã³ãšãããåäœããã·ã¹ãã ã®å®å šæ§ãšã»ãã¥ãªãã£ãç¶æããããã«äžå¯æ¬ ã§ããã¡ã¢ãªä¿è·ããªããã°ãæªæã®ããããããã¯ãã°ã®ããWASMã¢ãžã¥ãŒã«ã¯æ¬¡ã®ãããªããšãè¡ãå¯èœæ§ããããŸãïŒ
- æ©å¯ããŒã¿ã®èªã¿åã: ä»ã®ã¢ãžã¥ãŒã«ããã¹ãç°å¢ã«å±ããããŒã¿ãžã®ã¢ã¯ã»ã¹ã
- éèŠãªã³ãŒãã®äžæžã: ä»ã®ã¢ãžã¥ãŒã«ããã¹ãã·ã¹ãã ã®ã³ãŒãã®æ¹å€ã
- ã·ã¹ãã ã®äžå®å®å: ã¡ã¢ãªãç Žå£ããããšã«ããã¯ã©ãã·ã¥ãäºæãã¬åäœã®èªçºã
ãŠã§ããã©ãŠã¶ã§å®è¡ãããŠããWASMã¢ãžã¥ãŒã«ïŒäŸãã°ããµãŒãããŒãã£ã®åºåããŠã§ãã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããŒãã³ãïŒãããŠãŒã¶ãŒã®é²èЧ履æŽãä¿åãããCookieããããã¯ãã©ãŠã¶ã®å éšããŒã¿æ§é ãžã®äžæ£ãªã¢ã¯ã»ã¹æš©ãåŸãã·ããªãªãæ³åããŠã¿ãŠãã ããããã®çµæã¯ããã©ã€ãã·ãŒã®äŸµå®³ããæ¬æ Œçãªã»ãã¥ãªãã£äŸµå®³ãŸã§å€å²ã«ãããå¯èœæ§ããããŸããåæ§ã«ãçµèŸŒã¿ã·ã¹ãã ã®ã³ã³ããã¹ãã§ã¯ãã¹ããŒãããã€ã¹å ã®äŸµå®³ãããWASMã¢ãžã¥ãŒã«ããããã€ã¹ã®ã»ã³ãµãŒãã¢ã¯ãã¥ãšãŒã¿ãŒãéä¿¡ãã£ãã«ãå¶åŸ¡ããå¯èœæ§ããããŸãã
ãããã®ã·ããªãªãé²ããããWASMã¯æ§ã ãªã¡ã¢ãªä¿è·ã¡ã«ããºã ãæ¡çšããã¢ãžã¥ãŒã«ãå²ãåœãŠãããå¢çå ã®ã¡ã¢ãªã«ã®ã¿ã¢ã¯ã»ã¹ããå®çŸ©ãããããŒã¿åãéµå®ããããšãä¿èšŒããŸãã
ã¢ã¯ã»ã¹å¶åŸ¡åŠçã«ããããªãŒããŒãããã®åå
WASMã®ã¡ã¢ãªä¿è·ã¡ã«ããºã ã¯ãããã€ãã®ãªãŒããŒãããã®åå ããããããŸãïŒ
1. å¢çãã§ãã¯
WASMã¢ãžã¥ãŒã«ã«ãã£ãŠå®è¡ããããã¹ãŠã®ã¡ã¢ãªã¢ã¯ã»ã¹ã¯ãããããªãã¢ã¡ã¢ãªã®ç¯å²å ã«åãŸã£ãŠãããã確èªããããã«ãã§ãã¯ãããå¿ èŠããããŸããããã«ã¯ãã¢ã¯ã»ã¹ãããã¡ã¢ãªã¢ãã¬ã¹ãã¡ã¢ãªé åã®ããŒã¹ã¢ãã¬ã¹ãšãµã€ãºãšæ¯èŒããããšãå«ãŸããŸããããã¯ãå¢çå€ã¢ã¯ã»ã¹ãé²ãããã®åºæ¬çãªèŠä»¶ã§ãã
WASMã¢ãžã¥ãŒã«ãã¢ãã¬ã¹`offset`ãã32ãããæŽæ°ãèªã¿åãããšããç°¡åãªäŸãèããŠã¿ãŸãããïŒ
i32.load offset
`i32.load`åœä»€ãå®è¡ãããåã«ãWASMã©ã³ã¿ã€ã ã¯`offset + 4`ïŒi32ã®ãµã€ãºïŒãæå¹ãªã¡ã¢ãªç¯å²å ã«ããããšãæ€èšŒããããã®å¢çãã§ãã¯ãå®è¡ããªããã°ãªããŸããããã®ãã§ãã¯ã¯éåžžã`offset + 4`ãæå€§ã¡ã¢ãªã¢ãã¬ã¹ãšæ¯èŒããããšãå«ã¿ãŸãããã§ãã¯ã倱æããå Žåãã©ã³ã¿ã€ã ã¯ã¡ã¢ãªã¢ã¯ã»ã¹ãé²ãããã«ãã©ããïŒãšã©ãŒç¶æ ïŒãããªã¬ãŒããŸãã
æŠå¿µçã«ã¯åçŽã§ããããããã®å¢çãã§ãã¯ã¯ãç¹ã«é ååŠçãæååæäœãæ°å€èšç®ãªã©ãé »ç¹ãªã¡ã¢ãªã¢ã¯ã»ã¹ãè¡ãã³ãŒãã«å¯ŸããŠã倧ããªãªãŒããŒãããã远å ããå¯èœæ§ããããŸãã
2. åå®å šãã§ãã¯
WebAssemblyã®åã·ã¹ãã ã¯ãåœä»€ãæ£ããããŒã¿åã§æäœãããããšãä¿èšŒããããšã§ããã®ã»ãã¥ãªãã£ã«è²¢ç®ããŠããŸããããããåå®å šã匷å¶ããã«ã¯ãã¡ã¢ãªã¢ã¯ã»ã¹äžã«è¿œå ã®ãã§ãã¯ãå¿ èŠã§ãã
äŸãã°ãæµ®åå°æ°ç¹å€ãã¡ã¢ãªã«æžã蟌ãéãWASMã©ã³ã¿ã€ã ã¯ããã®ã¡ã¢ãªäœçœ®ãæµ®åå°æ°ç¹ããŒã¿åãæ ŒçŽããããã«é©åã«ã¢ã©ã€ã³ã¡ã³ããããŠãããã確èªããå¿ èŠããããããããŸãããã¢ã©ã€ã³ã¡ã³ããããŠããªãã¡ã¢ãªã¢ã¯ã»ã¹ã¯ãäžéšã®ã¢ãŒããã¯ãã£ã§ã¯ããŒã¿ç Žæãããã°ã©ã ã®ã¯ã©ãã·ã¥ã«ã€ãªããå¯èœæ§ããããŸãã
WASM仿§ã¯å³æ Œãªåãã§ãã¯ã匷å¶ããäŸãã°ãæç€ºçãªå€æãªãã«æŽæ°ãæµ®åå°æ°ç¹æ°ãšããŠè§£éããããšãé²ããŸããããã«ãããåã®æ··åã«é¢é£ããäžè¬çãªã»ãã¥ãªãã£è匱æ§ãé²ããŸãã
3. 鿥åŒã³åºãã®ãªãŒããŒããã
颿°ãã€ã³ã¿ãä»ããŠé¢æ°ãåŒã³åºããã鿥åŒã³åºãã¯ãã©ã³ã¿ã€ã ãã¿ãŒã²ãã颿°ãæå¹ã§æ£ããã·ã°ããã£ãæã£ãŠãããã確èªããå¿ èŠãããããã远å ã®ãªãŒããŒãããããããããŸããWASMã¯é¢æ°ãã€ã³ã¿ãæ ŒçŽããããã«ããŒãã«ã䜿çšããã©ã³ã¿ã€ã ã¯ããŒãã«ãžã®ã¢ã¯ã»ã¹ã«äœ¿çšãããã€ã³ããã¯ã¹ãç¯å²å ã«ããã颿°ã·ã°ããã£ãæåŸ ãããåãšäžèŽããããšã確èªããªããã°ãªããŸããã
å€ãã®ããã°ã©ãã³ã°èšèªã§ã¯ã颿°ãã€ã³ã¿ã¯æäœå¯èœã§ãããæ»æè ãåŒã³åºããä»»æã®ã¡ã¢ãªäœçœ®ã«ãªãã€ã¬ã¯ãã§ããã»ãã¥ãªãã£è匱æ§ã«ã€ãªãããŸããWASMã¯ã颿°ãã€ã³ã¿ãã¢ãžã¥ãŒã«ã®ã³ãŒãã»ã°ã¡ã³ãå ã®æå¹ãªé¢æ°ã®ã¿ãæãã颿°ã·ã°ããã£ãäžè²«ããŠããããšãä¿èšŒããããšã«ãã£ãŠãããã軜æžããŸãããã®æ€èšŒããã»ã¹ã¯ãªãŒããŒããããå°å ¥ããŸãããã»ãã¥ãªãã£ãå€§å¹ ã«åŒ·åããŸãã
4. ã·ã£ããŠã¹ã¿ãã¯ã®ãªãŒããŒããã
ã·ã£ããŠã¹ã¿ãã¯ã®ãããªäžéšã®é«åºŠãªã¡ã¢ãªä¿è·æè¡ã¯ãWASMã®ã»ãã¥ãªãã£ãããã«åŒ·åããããã«ç ç©¶ãããŠããŸããã·ã£ããŠã¹ã¿ãã¯ã¯ããªã¿ãŒã³ã¢ãã¬ã¹ãæ ŒçŽããããã«äœ¿çšãããå¥ã®ã¹ã¿ãã¯ã§ãããæ»æè ãéåžžã®ã¹ã¿ãã¯äžã®ãªã¿ãŒã³ã¢ãã¬ã¹ãäžæžãããŠå¶åŸ¡ãæªæã®ããã³ãŒãã«ãªãã€ã¬ã¯ãããã®ãé²ããŸãã
ã·ã£ããŠã¹ã¿ãã¯ãå®è£ ããã«ã¯ã远å ã®ã¡ã¢ãªãšã©ã³ã¿ã€ã ãªãŒããŒããããå¿ èŠã§ãããã¹ãŠã®é¢æ°åŒã³åºãã¯ãªã¿ãŒã³ã¢ãã¬ã¹ãã·ã£ããŠã¹ã¿ãã¯ã«ããã·ã¥ãããã¹ãŠã®é¢æ°ãªã¿ãŒã³ã¯ã·ã£ããŠã¹ã¿ãã¯ãããªã¿ãŒã³ã¢ãã¬ã¹ããããããŠããããéåžžã®ã¹ã¿ãã¯äžã®ãªã¿ãŒã³ã¢ãã¬ã¹ãšæ¯èŒããªããã°ãªããŸããããã®ããã»ã¹ã¯ãªãŒããŒãããã远å ããŸããããªã¿ãŒã³æåããã°ã©ãã³ã°ïŒROPïŒæ»æã«å¯Ÿããå ç¢ãªé²åŸ¡ãæäŸããŸãã
ããã©ãŒãã³ã¹ãžã®åœ±é¿ã®æž¬å®
ã¡ã¢ãªä¿è·ã¡ã«ããºã ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ãå®éåããããšã¯ãã»ãã¥ãªãã£ãšããã©ãŒãã³ã¹ã®ãã¬ãŒããªããçè§£ããäžã§æ¥µããŠéèŠã§ãããã®åœ±é¿ã枬å®ããããã«ãããã€ãã®æ¹æ³ã䜿çšã§ããŸãïŒ
- ãã€ã¯ããã³ãããŒã¯: ç¹å®ã®ã¡ã¢ãªã¢ã¯ã»ã¹ãã¿ãŒã³ãåé¢ããå¢çãã§ãã¯ãåå®å šãã§ãã¯ã®ãªãŒããŒããããæž¬å®ããããã®ãå°ããçŠç¹ãçµã£ããã³ãããŒã¯ã
- ãã¯ããã³ãããŒã¯: å®å šãªã¢ããªã±ãŒã·ã§ã³ã«ãããå šäœçãªããã©ãŒãã³ã¹ãžã®åœ±é¿ãè©äŸ¡ããããã«ãå®äžçã®ã¯ãŒã¯ããŒããã·ãã¥ã¬ãŒããããããå€§èŠæš¡ã§çŸå®çãªãã³ãããŒã¯ã
- ãããã¡ã€ãªã³ã°ããŒã«: WASMã¢ãžã¥ãŒã«ã®å®è¡ãåæããã¡ã¢ãªã¢ã¯ã»ã¹ã«é¢é£ããããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããã®ããŒã«ã
ãããã®æ¹æ³ã䜿çšããããšã§ãéçºè ã¯WASMã³ãŒãã®ããã©ãŒãã³ã¹ç¹æ§ã«é¢ããæŽå¯ãåŸãŠãæé©åãé©çšã§ããé åãç¹å®ã§ããŸããäŸãã°ãã¿ã€ããªã«ãŒãå ã§å€æ°ã®å°ããªã¡ã¢ãªã¢ã¯ã»ã¹ãå®è¡ãããã€ã¯ããã³ãããŒã¯ã¯ãå¢çãã§ãã¯ã«é¢é£ãããªãŒããŒããããæããã«ããããšãã§ããŸããè€éãªã¢ã«ãŽãªãºã ãã·ãã¥ã¬ãŒããããã¯ããã³ãããŒã¯ã¯ãå®äžçã®ã·ããªãªã«ãããã¡ã¢ãªä¿è·ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ã«ã€ããŠãããå šäœçãªèŠç¹ãæäŸã§ããŸãã
æé©åæè¡
WASMã«ãããã¡ã¢ãªä¿è·ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ã軜æžããããã«ãããã€ãã®æé©åæè¡ã䜿çšã§ããŸãïŒ
1. éçè§£æãšã³ã³ãã€ã©æé©å
ã³ã³ãã€ã©ã¯éçè§£æãå®è¡ããŠãåé·ãªå¢çãã§ãã¯ãç¹å®ããããããæé€ããããšãã§ããŸããäŸãã°ãã³ã³ãã€ã©ãããã°ã©ã ã®æ§é ã«åºã¥ããŠã¡ã¢ãªã¢ã¯ã»ã¹ãåžžã«å¢çå ã«ããããšã蚌æã§ããå Žåã察å¿ããå¢çãã§ãã¯ãå®å šã«åé€ã§ããŸãããã®æé©åã¯ãéçã«ãµã€ãºã決å®ãããé åã䜿çšããã³ãŒãããäºæž¬å¯èœãªã¡ã¢ãªã¢ã¯ã»ã¹ãè¡ãã³ãŒãã«ç¹ã«å¹æçã§ãã
ããã«ãã³ã³ãã€ã©ã¯ã«ãŒãã¢ã³ããŒãªã³ã°ãåœä»€ã¹ã±ãžã¥ãŒãªã³ã°ãã¬ãžã¹ã¿å²ãä»ããªã©ãä»ã®æ§ã ãªæé©åãé©çšããŠãã¡ã¢ãªã¢ã¯ã»ã¹ã®ç·æ°ãæžãããããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãããããã®æé©åã¯ãå®è¡ããå¿ èŠããããã§ãã¯ã®æ°ãæå°éã«æããããšã§ãã¡ã¢ãªä¿è·ã«é¢é£ãããªãŒããŒãããã鿥çã«åæžã§ããŸãã
2. Just-In-Time (JIT) ã³ã³ãã€ã«
JITã³ã³ãã€ã©ã¯ãå®è¡ã³ã³ããã¹ãã«åºã¥ããŠã©ã³ã¿ã€ã ã§WASMã³ãŒããåçã«æé©åã§ããŸããç¹å®ã®ããŒããŠã§ã¢ã¢ãŒããã¯ãã£çšã«ã³ãŒããç¹åãããã©ã³ã¿ã€ã æ å ±ãæŽ»çšããŠåé·ãªãã§ãã¯ãæé€ããããšãã§ããŸããäŸãã°ãJITã³ã³ãã€ã©ãç¹å®ã®ã³ãŒãé åãåžžã«ç¹å®ã®ã¡ã¢ãªç¯å²ã§å®è¡ãããããšãæ€åºããå Žåãå¢çãã§ãã¯ãã€ã³ã©ã€ã³åããããå®å šã«æé€ãããããããšããå¯èœã§ãã
JITã³ã³ãã€ã«ã¯WASMã³ãŒãã®ããã©ãŒãã³ã¹ãåäžãããããã®åŒ·åãªæè¡ã§ãããããèªäœããªãŒããŒããããå°å ¥ããŸããJITã³ã³ãã€ã©ã¯ã³ãŒããåæããæé©åãå®è¡ãããã·ã³ã³ãŒããçæããå¿ èŠããããããã«ã¯æéãšãªãœãŒã¹ãæ¶è²»ããŸãããã®ãããJITã³ã³ãã€ã©ã¯éåžžãéå±€çãªã³ã³ãã€ã«æŠç¥ãæ¡çšããŸããã³ãŒãã¯æåã«æå°éã®æé©åã§è¿ éã«ã³ã³ãã€ã«ãããé »ç¹ã«å®è¡ãããå Žåã«ã¯ããç©æ¥µçãªæé©åã䌎ã£ãŠåã³ã³ãã€ã«ãããŸãã
3. ããŒããŠã§ã¢æ¯æŽã«ããã¡ã¢ãªä¿è·
äžéšã®ããŒããŠã§ã¢ã¢ãŒããã¯ãã£ã¯ãWASMã©ã³ã¿ã€ã ããªãŒããŒããããåæžããããã«æŽ»çšã§ãããçµã¿èŸŒã¿ã®ã¡ã¢ãªä¿è·ã¡ã«ããºã ãæäŸããŸããäŸãã°ãäžéšã®ããã»ããµã¯ãã¡ã¢ãªå¢çã匷å¶ããããã«äœ¿çšã§ããã¡ã¢ãªã»ã°ã¡ã³ããŒã·ã§ã³ãã¡ã¢ãªç®¡çãŠãããïŒMMUïŒããµããŒãããŠããŸãããããã®ããŒããŠã§ã¢æ©èœã䜿çšããããšã§ãWASMã©ã³ã¿ã€ã ã¯å¢çãã§ãã¯ãããŒããŠã§ã¢ã«ãªãããŒããããœãããŠã§ã¢ã®è² æ ã軜æžã§ããŸãã
ããããããŒããŠã§ã¢æ¯æŽã«ããã¡ã¢ãªä¿è·ã¯åžžã«å©çšå¯èœãŸãã¯å®çšçã§ãããšã¯éããŸãããWASMã©ã³ã¿ã€ã ãåºç€ãšãªãããŒããŠã§ã¢ã¢ãŒããã¯ãã£ãšç·å¯ã«çµ±åãããå¿ èŠãããããããç§»æ€æ§ãå¶éããå¯èœæ§ããããŸããããã«ãããŒããŠã§ã¢ã®ã¡ã¢ãªä¿è·ã¡ã«ããºã ãèšå®ããã³ç®¡çãããªãŒããŒãããããå©ç¹ãäžåãããšããããŸãã
4. ã¡ã¢ãªã¢ã¯ã»ã¹ãã¿ãŒã³ãšããŒã¿æ§é
ã¡ã¢ãªãžã®ã¢ã¯ã»ã¹æ¹æ³ã䜿çšãããããŒã¿æ§é ã¯ãããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸããã¡ã¢ãªã¢ã¯ã»ã¹ãã¿ãŒã³ãæé©åããããšã§ãå¢çãã§ãã¯ã®æ°ãæžããããã£ãã·ã¥ã®å±ææ§ãåäžãããããšãã§ããŸãã
äŸãã°ãé åã®èŠçŽ ã«é 次ã¢ã¯ã»ã¹ããããšã¯ãã©ã³ãã ã«ã¢ã¯ã»ã¹ãããããäžè¬çã«å¹ççã§ãããªããªããã·ãŒã±ã³ã·ã£ã«ãªã¢ã¯ã»ã¹ãã¿ãŒã³ã¯ããäºæž¬å¯èœã§ãããã³ã³ãã€ã©ãããŒããŠã§ã¢ã«ãã£ãŠããè¯ãæé©åã§ããããã§ããåæ§ã«ããã€ã³ã¿ã®è¿œè·¡ã鿥åç §ãæå°éã«æããããŒã¿æ§é ã䜿çšããããšã§ãã¡ã¢ãªã¢ã¯ã»ã¹ã«é¢é£ãããªãŒããŒããããåæžã§ããŸãã
éçºè ã¯ãã¡ã¢ãªä¿è·ã®ãªãŒããŒããããæå°éã«æããããã«ãWASMã³ãŒãã§äœ¿çšããã¡ã¢ãªã¢ã¯ã»ã¹ãã¿ãŒã³ãšããŒã¿æ§é ãæ éã«æ€èšããå¿ èŠããããŸãã
å°æ¥ã®æ¹åæ§
WASMã¡ã¢ãªä¿è·ã®åéã¯çµ¶ããé²åããŠãããã»ãã¥ãªãã£ãšããã©ãŒãã³ã¹ã®åäžã«çŠç¹ãåœãŠãç ç©¶éçºãé²è¡äžã§ããææãªå°æ¥ã®æ¹åæ§ã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
1. 现ç²åºŠã®ã¡ã¢ãªä¿è·
çŸåšã®WASMã¡ã¢ãªä¿è·ã¡ã«ããºã ã¯ãéåžžããªãã¢ã¡ã¢ãªå šäœãåäœãšããŠåäœããŸãã现ç²åºŠã®ã¡ã¢ãªä¿è·ã¯ãã¡ã¢ãªã¢ã¯ã»ã¹ã«å¯ŸããŠãããã现ããªå¶åŸ¡ãæäŸããããšãç®æããŠãããã¡ã¢ãªã®ç°ãªãé åã«ç°ãªãã¢ã¯ã»ã¹èš±å¯ãæãããããšãã§ããŸããããã«ãããããæŽç·Žãããã»ãã¥ãªãã£ã¢ãã«ãå¯èœã«ãªããå¿ èŠãªç¹å®ã®ã¡ã¢ãªé åã«ã®ã¿ãã§ãã¯ãé©çšããããšã§ãã¡ã¢ãªä¿è·ã®ãªãŒããŒããããåæžã§ããå¯èœæ§ããããŸãã
2. ã±ã€ãããªãã£ããŒã¹ã®ã»ãã¥ãªãã£
ã±ã€ãããªãã£ããŒã¹ã®ã»ãã¥ãªãã£ã¯ãç¹å®ã®ã¢ã¯ã·ã§ã³ãå®è¡ããæš©å©ã衚ãåœé äžå¯èœãªããŒã¯ã³ã§ããã±ã€ãããªãã£ã«åºã¥ããŠãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãèš±å¯ãããã»ãã¥ãªãã£ã¢ãã«ã§ããWASMã®æèã§ã¯ãã±ã€ãããªãã£ã䜿çšããŠã¡ã¢ãªé åã颿°ããã®ä»ã®ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãå¶åŸ¡ã§ããŸããããã«ãããåŸæ¥ã®ã¢ã¯ã»ã¹å¶åŸ¡ãªã¹ããšæ¯èŒããŠãããæè»ã§å®å šãªã¢ã¯ã»ã¹å¶åŸ¡ç®¡çæ¹æ³ãæäŸãããå¯èœæ§ããããŸãã
3. 圢åŒçæ€èšŒ
圢åŒçæ€èšŒæè¡ã¯ãWASMã³ãŒãã®æ£ãããšã¡ã¢ãªä¿è·ã¡ã«ããºã ã®ã»ãã¥ãªãã£ç¹æ§ãæ°åŠçã«èšŒæããããã«äœ¿çšã§ããŸããããã«ãããã³ãŒãã«ãã°ãè匱æ§ããªãããšã«å¯ŸããŠé«ãã¬ãã«ã®ä¿èšŒãæäŸã§ããŸãã圢åŒçæ€èšŒã¯å°é£ã§ããææãªç ç©¶åéã§ãããWASMã¢ããªã±ãŒã·ã§ã³ã®ã»ãã¥ãªãã£ãå€§å¹ ã«åäžãããå¯èœæ§ããããŸãã
4. èéåæå·
éåã³ã³ãã¥ãŒã¿ããã匷åã«ãªãã«ã€ããŠãWASMã¢ããªã±ãŒã·ã§ã³ãä¿è·ããããã«äœ¿çšãããŠããæå·ã¢ã«ãŽãªãºã ãè匱ã«ãªãå¯èœæ§ããããŸããèéåæå·ã¯ãéåã³ã³ãã¥ãŒã¿ããã®æ»æã«èæ§ã®ããæ°ããæå·ã¢ã«ãŽãªãºã ãéçºããããšãç®æããŠããŸãããããã®ã¢ã«ãŽãªãºã ã¯ãWASMã¢ããªã±ãŒã·ã§ã³ã®é·æçãªã»ãã¥ãªãã£ã確ä¿ããããã«äžå¯æ¬ ãšãªããŸãã
å®äžçã®äŸ
ã¡ã¢ãªä¿è·ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ã¯ãæ§ã ãªWASMã¢ããªã±ãŒã·ã§ã³ã§èŠãããŸãïŒ
- ãŠã§ããã©ãŠã¶: ãã©ãŠã¶ã¯ãè€éãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãã²ãŒã ããã«ãã¡ãã£ã¢ã³ã³ãã³ããå®è¡ããããã«WASMã䜿çšããŸããå¹ççãªã¡ã¢ãªä¿è·ã¯ãæªæã®ããã³ãŒãããã©ãŠã¶ã®ã»ãã¥ãªãã£ããŠãŒã¶ãŒã®ããŒã¿ã䟵害ããã®ãé²ãããã«äžå¯æ¬ ã§ããäŸãã°ãWASMããŒã¹ã®ã²ãŒã ãå®è¡ããéããã©ãŠã¶ã¯ã²ãŒã ã®ã³ãŒãããŠãŒã¶ãŒã®é²èЧ履æŽããã®ä»ã®æ©å¯ããŒã¿ã«ã¢ã¯ã»ã¹ã§ããªãããã«ããå¿ èŠããããŸãã
- ã¯ã©ãŠãã³ã³ãã¥ãŒãã£ã³ã°: WASMã¯ããµãŒããŒã¬ã¹é¢æ°ãã³ã³ããåãããã¢ããªã±ãŒã·ã§ã³ã®ããã«ãã¯ã©ãŠãã³ã³ãã¥ãŒãã£ã³ã°ç°å¢ã§ãŸããŸã䜿çšãããŠããŸããã¡ã¢ãªä¿è·ã¯ãç°ãªãããã³ããåé¢ããããããã³ããå¥ã®ããã³ãã®ããŒã¿ã«ã¢ã¯ã»ã¹ããã®ãé²ãããã«æ¥µããŠéèŠã§ããäŸãã°ãã¯ã©ãŠãç°å¢ã§å®è¡ããããµãŒããŒã¬ã¹é¢æ°ã¯ãã»ãã¥ãªãã£äŸµå®³ãé²ãããã«ä»ã®é¢æ°ããéé¢ãããå¿ èŠããããŸãã
- çµèŸŒã¿ã·ã¹ãã : WASMã¯ãIoTããã€ã¹ãã¹ããŒãå®¶é»ãªã©ã®çµèŸŒã¿ã·ã¹ãã ã«ãé²åºããŠããŸããã¡ã¢ãªä¿è·ã¯ããããã®ããã€ã¹ã®ã»ãã¥ãªãã£ãšä¿¡é Œæ§ã確ä¿ããããã«äžå¯æ¬ ã§ããäŸãã°ãWASMã³ãŒããå®è¡ããã¹ããŒãå®¶é»ã¯ãããã€ã¹ã®ã»ã³ãµãŒãã¢ã¯ãã¥ãšãŒã¿ãŒãéä¿¡ãã£ãã«ãå¶åŸ¡ããå¯èœæ§ã®ããæªæã®ããã³ãŒãããä¿è·ãããå¿ èŠããããŸãã
- ãããã¯ãã§ãŒã³æè¡: WASMã¯ãã¹ããŒãã³ã³ãã©ã¯ããå®è¡ããããã«ãããã¯ãã§ãŒã³ãã©ãããã©ãŒã ã§äœ¿çšãããŠããŸããã¡ã¢ãªä¿è·ã¯ãæªæã®ããã³ã³ãã©ã¯ãããããã¯ãã§ãŒã³ã®ç¶æ ãç Žå£ããããè³éãçãã ãããã®ãé²ãããã«éèŠã§ããäŸãã°ããããã¯ãã§ãŒã³äžã§å®è¡ãããã¹ããŒãã³ã³ãã©ã¯ãã¯ãæ»æè ãã³ã³ãã©ã¯ãã®è³éãæãåãããšãå¯èœã«ããè匱æ§ããä¿è·ãããå¿ èŠããããŸãã
çµè«
ã¡ã¢ãªä¿è·ã¯WASMã®ã»ãã¥ãªãã£ã¢ãã«ã®åºæ¬çãªåŽé¢ã§ãããã¢ãžã¥ãŒã«ãå²ãåœãŠãããã¡ã¢ãªç©ºéå€ã®ããŒã¿ã«ã¢ã¯ã»ã¹ããã倿Žãããã§ããªãããã«ããŸããã¡ã¢ãªä¿è·ã¯ã¢ã¯ã»ã¹å¶åŸ¡åŠçã®ãªãŒããŒããããå°å ¥ããŸããããã®ãªãŒããŒãããã¯WASMã¢ããªã±ãŒã·ã§ã³ã®å®å šæ§ãšã»ãã¥ãªãã£ãç¶æããããã«å¿ èŠãªã³ã¹ãã§ããé²è¡äžã®ç ç©¶éçºåªåã¯ãã¡ã¢ãªä¿è·ã¡ã«ããºã ã®æé©åãšãã»ãã¥ãªãã£ãæãªãããšãªããªãŒããŒããããåæžããæ°ããæè¡ã®æ¢æ±ã«çŠç¹ãåœãŠãŠããŸããWASMãé²åãç¶ããæ°ããã¢ããªã±ãŒã·ã§ã³ãèŠåºãããã«ã€ããŠãã¡ã¢ãªä¿è·ã¯åŒãç¶ãéèŠãªçŠç¹ã§ããç¶ããã§ãããã
ã¡ã¢ãªä¿è·ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ããªãŒããŒãããã®åå ãããã³å©çšå¯èœãªæé©åæè¡ãçè§£ããããšã¯ãå®å šã§å¹ççãªWASMã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ãããéçºè ã«ãšã£ãŠäžå¯æ¬ ã§ãããããã®èŠçŽ ãæ éã«èæ ®ããããšã§ãéçºè ã¯ã¡ã¢ãªä¿è·ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ãæå°éã«æããã¢ããªã±ãŒã·ã§ã³ãå®å šãã€é«æ§èœã§ããããšãä¿èšŒã§ããŸãã