ã¯ããã«
Webãã¡ã€ã³ã«ããããªãšããã§ããããªèšèªã§ããã°ã©ããŒããã£ãŠããçŽé³ãµãã¿ãšç³ããŸãã
ä»åã¯ã2017幎3æã«ããŒãžã§ã³1.0ã2022幎6æã«ããŒãžã§ã³2.0ããªãªãŒã¹ãããæ¯èŒçæ°ããæè¡ã§ãã WebAssembly (Wasm) ã®æŠèª¬ãšãçŸå°å¥³ã²ãŒã ã®ã³ã¹ãåæžããã³ããã©ãŒãã³ã¹åäžã«ã€ããŠèªãããŠããã ããŸãã
ãã®èšäºã¯æ§DEC Advent Calendar 2024ã«åå ããŠããŸãã
察象èªè
ãã®èšäºã®å¯Ÿè±¡èªè ã¯ã以äžã®ãããªäººã§ãã
- çŸåšå人ã²ãŒã ãäœã£ãŠãã人ïŒç¹ã«ãWeb ãããŒã¹ãšãªããšã³ãžã³ã䜿çšããŠãã人ïŒ
- æ°ããæè¡ã«èå³ããã人
- Unity/UE/Godotãªã©ã«ç©è¶³ããªãæãããã人
- ã²ãŒã ãšã³ãžã³ããèªäœããŠãã人
- ãªããšãªãçŸå°å¥³ã²ãŒã ã®ããããæªæ¥ãèŠãã人
ãã®ããããŸã£ããæè¡ã«èå³ã®ãªã人ãããããšå€§å€ã€ãŸããªãèšäºã«ãªã£ãŠããããšããšæããŸããã容赊ãã ããã
äœè«
ãçŸå°å¥³ã²ãŒã ã衚èš
ãã®èšäºã§ã¯ããããŠãçŸå°å¥³ã²ãŒã ããšè¡šèšãããŠããã ããŸãã
çç±ã¯äž»ã«äºã€ãããŸãã
äžã€ã¯ããã®èšäºããšãã²ã«éã£ã話ã§ã¯ãªãããšã ãšãã²ã¯ããã«ã²ãŒã ãšãšã³ãžã³ãä»çµã¿ã倧ãŸãã«å ±éããŠãããããä»åã®èšäºã«ãããŠã¯ãšãã·ãŒã³ããããã©ããã¯ãã»ã©éèŠã§ã¯ãããŸããã äœãªããããã«ã²ãŒã ã§ãªããšãã¢ã¯ã·ã§ã³ã²ãŒã ãRPGãããŸããŸãªãžã£ã³ã«ã«é©çšã§ããŸãããçŸå°å¥³ã²ãŒã ãããã²ãŒã ããšèªã¿æ¿ããŠããã£ãŠãæ§ããŸããã
ããäžã€ã¯ããã®èšäºã¯é»è»å ã§å·çãããŠããããšã§ãã ã³ã¡ã³ãã¯æ§ããŸãã
ã¿ã€ãã«ã«ã€ããŠ
ãŸãããã®èšäºã®ã¿ã€ãã«ã¯å人ã²ãŒã å¶äœã«å±ã女åé«çãã¡ãæã挫ç»ãã¹ãã©ã®ãŸã»ãããå ãã¿ãšãããŠããã ããŸããã
åãããã« Rust ãšããããã°ã©ãã³ã°èšèªãš Wasm ã䜿çšããŠã²ãŒã éçºãè¡ãèšäºã«ãã©ã¹ãã®ãŸã»ãããšãããã®ããããŸãã ãã®èšäºã§ã¯äž»ã« Wasm ã«çŠç¹ãåœãŠãŠããããã®ã§ãã®ã¿ã€ãã«ãšãªããŸãããããŸããå ãã¿ã被ããšã¯æã£ãŠããŸããã§ããâŠâŠ
äœè«ã®äœè«ã§å®£äŒã§ãããç§ã¯çŸåšãµãŒã¯ã«ã§çŸåè§Šæãã£ã¡å人ã²ãŒã ãéçºäžã§ãã ãã©ã³ãã®ååã¯ãããŠãããµãšãã§ããå¶ç¶ã£ãŠãããã§ããã
å·çåŸè¿œèšïŒä»èŠãã12æ1æ¥ã«ãRustã®ãŸã»ã2ããã§ããŠãŸãããââã®ãŸã»ãã·ãªãŒãºãå¢ããŠãâŠâŠïœ
ããã°ã©ãã³ã°èšèªã®çš®é¡
ã§ã¯ãå ã»ã©ããæããŠãã Wasm ãšããæè¡ã¯äœãããããŠãã©ã®ããããçŸå°å¥³ã²ãŒã ãšé¢é£æ§ãããã解説ãããŠããã ããŸãã
âŠâŠãšãããããšããã§ããããŸã㯠Wasm ãèªãåã«æ¢åã®ããã°ã©ãã³ã°èšèªã«ã€ããŠå°ã解説ããŸãã ãã³ã³ãã€ã«æ¹åŒããã€ã³ã¿ããªã¿æ¹åŒããäœãªã®ãããã£ãŠãã人ã¯ããã®ã»ã¯ã·ã§ã³ã¯é©åœã«é£ã°ããŠãã ããã
ã³ã³ãã€ã«æ¹åŒèšèª
ã¢ã»ã³ããªã®ç޹ä»
ãŸãã軜ãã³ã³ãã¥ãŒã¿ãŒã®ããã°ã©ã ãäœã§ã§ããŠããããã玹ä»ããŸãã
以äžã¯æ°å€ã®åŒæ°ã 2 ã€åãåãããã® 2 ã€ã®æ°å€ãè¶³ããå€ãè¿ãåçŽãªé¢æ°ããC èšèªã§å®è£ ãããã®ã§ãã
int add(int num1, int num2) {
return num1 + num2;
}
ããã§ã¯ãããã«å¯ŸããŠã³ã³ãã¥ãŒã¿ãŒãè§£éã§ããèšèªã§ããæ©æ¢°èªã«ç¿»èš³ããã³ã³ãã€ã«ãè¡ããŸãã çµæã¯ä»¥äžã®éãã§ãã
add(int, int):
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], edi
mov DWORD PTR [rbp-8], esi
mov edx, DWORD PTR [rbp-4]
mov eax, DWORD PTR [rbp-8]
add eax, edx
pop rbp
ret
ãªãã ãããããããªãïŒåœç€Ÿæ¯ïŒæååãåºãŠããŸããã
ãããã¢ã»ã³ããªãšèšããã³ã³ãã¥ãŒã¿ãŒãèªã¿ãå®éã«å éšã§å®è¡ããŠããåœä»€ïŒæ£ç¢ºã«ã¯ãæ²èŒããŠãããã®ã¯ãã€ããªã§ã¯ãªãæåã§è¡šãããã®ïŒã§ãã
äŸãã°ãWindows ã§äœ¿çšããã exe ãã¡ã€ã«ã Mac ã® app ãã¡ã€ã«ïŒæ£ç¢ºã«ã¯ããã®äžèº«ã®ãã€ããªãã¡ã€ã«ïŒãªã©ã¯ãæ©æ¢°èªã§èšè¿°ãããŠããŸãã
ã¢ã»ã³ããªã«ã³ã³ãã€ã«ã§ããèšèªãã³ã³ãã€ã«æ¹åŒèšèªãšãããä»äœ¿çšããCèšèªãC++ãGoãRustãªã©ãæ§ã ãªãã®ããããŸãã
䜿çšäŸ
ãšããããšã¯ãã¿ãªãããããå®è¡ãããŠãã exe ãã¡ã€ã«ã¯ãäœã®ããã°ã©ãã³ã°èšèªã§æžããŠããããšäžèº«ã¯ã¢ã»ã³ããªã§ããããããã³ã³ãã¥ãŒã¿ãŒãè§£éããŠå®è¡ããŠãããšããããšã§ãã
ã¿ãªãããéè³ãããã¯ã䜿çšããããŠããçŸå°å¥³ã²ãŒã ã®å€§å㯠exe ãã¡ã€ã«ã§ãããããããããã£ãŠãã®äžã®çŸå°å¥³ã²ãŒã ã®å€§åãã¢ã»ã³ããªãå°ãªããã䜿ãããŠãããšããããšã«ãªããŸãã
ã€ã³ã¿ããªã¿æ¹åŒèšèª
äžæ¹ã§ãã€ã³ã¿ããªã¿æ¹åŒèšèªãšããèšèªããã®äžã«ã¯ååšããŸãã
ã€ã³ã¿ããªã¿æ¹åŒèšèªãšããŠãäžçªç°¡åãªãã®ãšã㊠JavaScript ãæããããŸãããã®äŸãèŠãŠã¿ãŸãããã
function add(num1, num2) {
return num1 + num2;
}
ããã¯å ã»ã©ã® add 颿°ã JavaScript ã§å®è£ ãããã®ã§ãã
ã€ã³ã¿ããªã¿ãšã¯
ã§ã¯ã³ã³ãã€ã«æ¹åŒèšèªãšæ¯ã¹ãŠäœããã€ã³ã¿ããªã¿ããªã®ããšãããšããããã®èšèªã¯å®è¡ããéã«ãã€ã³ã¿ããªã¿ããå¿ èŠãšããããã§ãã
äŸãã°ãã¢ã»ã³ããªãé€ããã¹ãŠã®ããã°ã©ãã³ã°èšèªã§èšè¿°ããããã¡ã€ã«ã¯æ©æ¢°èªã§ã¯ãªããããã³ã³ãã¥ãŒã¿ãŒããã®ãŸãŸå®è¡ããããšã¯ã§ããŸããã
ã³ã³ãã€ã«æ¹åŒèšèªã§ã¯äºåã«ã³ã³ãã€ã«ãè¡ããæ©æ¢°èªã«å€æããäœæ¥ãè¡ã£ãŠããŸããã ãããã€ã³ã¿ããªã¿æ¹åŒèšèªã§ã¯ããããã®ã³ãŒããè§£éããŠå®è¡ãããã€ã³ã¿ããªã¿ããšããå®è¡ãã¡ã€ã«ïŒã€ãŸããã€ã³ã¿ããªã¿èªäœã¯ã¢ã»ã³ããªã§èšè¿°ãããŠããïŒãããããã®ãã€ã³ã¿ããªã¿ãããããã®ã³ãŒããè§£éããŠå®è¡ããŠããã®ã§ãã
ããã«ã¯ã³ã³ãã€ã«æ¹åŒèšèªãšç°ãªãã人éãèªã¿ãããæžãããããå³åº§ã«ä¿®æ£ãå®è¡ãããããªã©ã®å©ç¹ããããŸãã
æ¬ ç¹1: ã³ã³ãã€ã«ã exe ãšããŠé åžããããšãã§ããªã
äŸãã°ãããªããçŸåšèŠãŠãããã® Web ããŒãžã§ã¯ JavaScript ãåäœããŠãããããã«ãã£ãŠäžéšã®ç»é¢è¡šç€ºãè¡ãããŠããŸãã ããããå ã»ã©ç€ºããããã«ã€ã³ã¿ããªã¿æ¹åŒèšèªã¯ã€ã³ã¿ããªã¿ãå¿ é ãšãªããŸãã ãã®ãããã€ã³ã¿ããªã¿ãªãã«ã¯å®è¡ããããšãã§ããªãã®ã§ãã
ã€ãŸããã€ã³ã¿ããªã¿æ¹åŒèšèªã§ããã°ã©ã ãæžããŠé åžããã ãã§ã¯ exe ãã¡ã€ã«ãšããŠå®è¡ããŠããããªãã®ã§ãã
æ¬ ç¹2: 倧éã®æŒç®åŠçãé ã
ããããã®èšäºã«ãããŠæéèŠãªç¹ã§ãã
ã€ã³ã¿ããªã¿æ¹åŒèšèªã¯ãäžåºŠã€ã³ã¿ããªã¿ãçµç±ããŠããŸãã æ©æ¢°èªãããèªãããè§£éããããšãã£ããã§ãŒãºãæãŸããããïŒäžè¬çã«ã¯ïŒé床ãé ããšããæ¬ ç¹ãåæã«ååšããŸãã ïŒäŸãã° JavaScript ã䜿çšãã Node.js ãããããæŽŸçãã Deno, Bun ãªã©ããšãŠãé«éãªã€ã³ã¿ããªã¿ãååšããŸãããããããã¯ã€ã³ã¿ããªã¿ã®å®è£ ã«ãšãŠã€ããªãåŽåãšæéãšäººå¡ããããããçµæã§ãããã€ã³ã¿ããªã¿æ¹åŒèšèªã¯åºæ¬çã«ã³ã³ãã€ã«æ¹åŒèšèªããé ããšèšã£ãŠãééãã§ã¯ãããŸãããïŒ ãã£ãŠãé«éã§å€§éã«æŒç®ããåŠçãå®è£ ããã®ã«ãé©ããŠããŸããã
ãã®ãããã²ãŒã ã§ãã䜿ããã3Dã®åŠçãªã©ã«ã¯ãã€ã³ã¿ããªã¿æ¹åŒèšèªã¯ãªããªãæ¡çšããã«ããã®ã§ãã
Wasm ã®ç»å Ž
ãããªäžãWebAssembly ãç»å ŽããŸãã
WebAssembly ã¯ã2017幎ã«ããŒãžã§ã³ 1.0 ãçºè¡šãããæ°ããã¢ã»ã³ããªã®è¡šçŸæ¹æ³ã§ããããWeb äžã§åäœããã€ã³ã¿ããªã¿æ¹åŒèšèªã§ãã JavaScript ã®å®è¡é床ãé ãããšããåé¡ã解決ããããã«äœæãããŸããã Wasm ã¯æ©æ¢°èªãã®ãã®ã§ã¯ãããŸãããå®è¡ã®éã«ã¯ãã¯ãã€ã³ã¿ããªã¿ãå¿ èŠãšããŸãã ãããæ©æ¢°èªã«ãšãŠãè¿ãæ§æãæã£ãŠããã®ã§ãä»ã®ã€ã³ã¿ããªã¿æ¹åŒèšèªããæ©ãã³ã³ãã€ã«ãšé«éãªåœä»€ã®å®è¡ãå¯èœã§ãã ïŒãã ããJavaScript ã«éã£ãŠã¯ããŸãã«é«éãããŠã[JavaScript ãå®è¡ããæé] â [Wasm ãã³ã³ãã€ã«ããæé] + [Wasm ãå®è¡ããæé] ã®ãããªçŸè±¡ãèµ·ããããšããããŸããïŒ
ç¹åŸŽ
èšèªéäŸå
Wasm ã¯æ°ããæ©æ¢°èªã®ãããªãã®ã§ãã
ä»ãŸã§ã³ã³ãã€ã«æ¹åŒèšèªã®ã³ã³ãã€ã©ã¯ãå®è¡ãããç°å¢ã«åãããŠæ©æ¢°èªãçæããŠããŸããã ããããã³ã³ãã€ã©ã Wasm ã«å¯Ÿå¿ããïŒWasm ãåºåã§ããããã«ãªãïŒãšãäžã€ã® Wasm ããã°ã©ã ã§ Windows, macOS, Linux ãªã©ãããããªç°å¢ã§åãããã®ã§ãã
ãŸããã³ã³ãã€ã©ã察å¿ããã°ãã®èšèªãã Wasm ããã°ã©ã ã¯äœæã§ãããããC 以å€ã«ã Go ã Rustããã§ã«æ§ã ãªã³ã³ãã€ã«æ¹åŒèšèªãã Wasm ã«ã³ã³ãã€ã«ã§ããããã«ãªã£ãŠããŸãã
å®è¡ç°å¢
Wasm ã¯äž»ã« Web ãã©ãŠã¶ã§åäœããããšãç®çãšããŠäœæãããèŠæ Œã§ãããWasm ã¯æ±çšæ§ãé«ããWeb ã®æ©èœãç¹åŸŽã«äŸåããŠããŸããã ãã®ãããWeb ãã©ãŠã¶ä»¥å€ã«ãããŸããŸãªãã©ãããã©ãŒã ã§åããããšãã§ããDocker ã®ãããªã³ã³ããã®ä»£æ¿æè¡ãšããŠæ³šç®ãããŠããŸãã
æ¡çšäºäŸ
ã§ããããããã Web ãã©ãŠã¶ã¯ Web ããŒãžãèŠãããã®ãã®ã§ããããWasm ãå¿ èŠã«ãªãã»ã© Web ãã©ãŠã¶ã§å€§éã®èšç®ãå¿ èŠãªå Žé¢ã¯çŸåšããŸããªããšèšããŸãã ãã㊠Web ãã©ãŠã¶ä»¥å€ã§ã¯ããŸã WASI èŠæ ŒïŒä»åã®èšäºã§ã¯è§£èª¬ããŸããïŒãäžååã§ããå®çšçã§ã¯ãããŸããã
ã§ã¯ãã©ããªãšããã§å©çšãããŠããã®ã§ããããïŒ å®ã¯ãã¿ãªããããªãã¿çŸå°å¥³ã²ãŒã ã«ãã§ã« Wasm ã®æè¡ã¯åãå ¥ããããWeb äžã§ãã¹ããã§ããããããªãã©ãããã©ãŒã ã§åãæä»£ããã§ã«æ¥ãŠããã®ã§ãã
Artemis Engine
ãšãã«æåãªãã®ã«ã¯ãArtemis Engine ãæããããŸãã ãã®ãšã³ãžã³èªäœã Wasm ã«å¯Ÿå¿ããŠãããArtemis Engine ã§è£œäœãããã²ãŒã ã¯ãã¹ãŠ Wasm ãžã³ã³ãã€ã«ã Web äžã§åäœãããããšãå¯èœã§ãã
Artemis Engine ãæ¡çšããŠãããã©ã³ãã®ã²ãšã€ãšããŠãŸã©ããµãšãæããããŸããããŸã©ããµãšãåã㊠Artemis Engine ãæ¡çšãããã©ãºããªãŒãã¥ãŒããããææ°äœã®ãã»ã¬ã¯ããªããªãŒãžã¥ããŸã§ããã¹ãŠ Web ã§äœéšçããã¬ã€ããããšãã§ããŸãã ãã® Web äœéšçã¯ã䜿çšããŠãããšã³ãžã³ã§ãã Artemis Engine ã® Wasm 察å¿ã«ãã£ãŠæãç«ã£ãŠããŸãã
ãšããããç§ã Wasm ãç¥ã£ããã£ããèªäœããŸã©ããµãšäœããããã·ã¯ãªãšã€ãã£ããã®Webäœéšçã§ãã åœæããartemis.wasmããšããè¬ã®ãã¡ã€ã«ã§ãã¹ãŠãåŠçãããŠããããšã«å¯ŸããŠãã¡ããã¡ãé©ããŸãããUnity
ãŸãããªãã¿ã® Unity ã§ã¯ãWeb äžã§ãã¬ã€ããéã« Wasm ã䜿çšãããŠããŸãã
Artemis Engine ãšã¯éããUnity ã¯3Dã²ãŒã å¶äœãã¬ãŒã ã¯ãŒã¯ã§ãã ãã®ãããªç¹æ§äžãç©çæŒç®ãªã©ã®ãªãœãŒã¹ãå€ã䜿çšããèšç®ããããã3Dãªããžã§ã¯ããã¬ã³ããªã³ã°ãããããªå€§éã®èšç®ãè¡ããŸãã ããã§ Wasm ã䜿çšããããšã§ãUnity 補ã²ãŒã ã® Web äžã§ã®å¿«é©ãªãã¬ã€ãå®çŸãããŠããŸãã
Unity 6 ã§ã¯ãBuild Profiles ã§ Web ãæå®ãããšãWeb ã§åäœãã圢åŒã§ãã«ããããŸãã
ãã®ä»
ä»åã®èšäºã®ç®çã§ã¯ãªãã®ã§ç޹ä»ã¯ããŸãã§ããŸããããçŸå°å¥³ã²ãŒã 以å€ã«ãåãå ¥ããããŠããã¢ããªã±ãŒã·ã§ã³ã¯ãããŸãã
äŸãã°ãã§ã«å»æ¢ãã䜿çšã§ããªããªã£ãŠãã Flash ãå®è¡ã§ããæ¡åŒµæ©èœãRuffleãã¯ãFlash ãšãã¥ã¬ãŒã¿ãŒã Rust ã§èšè¿°ããŠãWasm ã«ã³ã³ãã€ã«ããŠåäœãããŠããŸãã
ã»ãã«ããGoogle Meet ã§ã¯èæ¯ã®ãŒããåŠçãªã©ã®éãäœæ¥ã«å©çšãããŠããŸãã
ãŸããå°ã 倿 çãªäºäŸãšãªããŸãããWasm ã¯æ¢åã® C èšèªãªã©ã§èšè¿°ãããã³ãŒãããã³ã³ãã€ã«ããããšãã§ãããããWeb äžã§ä»®æ³ãã·ã³ãåãã WebVM ãªã詊ã¿ãååšããŠããŸãã å人çã«ã¯ããã«èå³ããããã§ããããã²ãŒã ã«æã ãããæäœã§ããPCããæäœã¢ã¯ã·ã§ã³ãèµ·ãããšLinuxãåãããããŸãã«ã楜ããããããªãã§ããâŠâŠïŒ
ãšèšãããŸããŠãâŠâŠ
ãŸãããããŸã§è©±ããŠããå¥ã«ä»ãŸã§ã® exe ãã¡ã€ã«åœ¢åŒã§ããã®ã§ã¯ïŒããšèšããããšå人çã«åè«ã§ããªãéšåããããŸãã
ãããããã® Wasm ã®èšèªéäŸåã»ãã©ãããã©ãŒã éäŸåããã«æŽ»çšããã°ãçŸå°å¥³ã²ãŒã çéã«ãããŠã exe 圢åŒã倧ããäžåãã¡ãªãããåŸãããã®ã§ã¯ãªãããšèããŠããŸãã
çŸå°å¥³ã²ãŒã ãš Wasm
ããã¶ãé·ããªããŸããããçŸå°å¥³ã²ãŒã çéã§ã¯ Wasm ãçšããŠä»¥äžã®ãããªããšãã§ãããšèããŠããŸãã
äºäŸ1: 察å¿ãã©ãããã©ãŒã ã®å§åçãªå¢å
ãã¡ãããå ã»ã©æãããã®ãŸãŸã®çç±ã§ã察å¿ãã©ãããã©ãŒã ãäœã³ã¹ãã§å¢ããããšãã§ããŸãã
ä»ãŸã§ã®ã²ãŒã ãšã³ãžã³ã«ã Android ã iOS ãªã©ãã¢ãã€ã«å¯Ÿå¿ã¢ããªã±ãŒã·ã§ã³ããã«ãããäºäŸã¯ãããŸãããèšèªããã€ãã£ã察å¿ããŠããªãçã§ãã€ãã£ãã¢ããªã®éçºç¥èãå€ãå¿ èŠã«ãªãããšããããŸãã Wasm ãªãããã®åé¡ã解決ã§ããŸããWasm ã¯çµ±äžãããèŠæ Œã§ãããããWasm ã€ã³ã¿ããªã¿ãå°å ¥ããã ãã§ãã¢ãã€ã«å¯Ÿå¿ãå¯èœã§ãã
ãã¡ãããåœåã®ç®çã§ãã£ã Web ã§åäœããããšããããšãå¯èœã§ãã ãããã«ãããã€ã³ã¿ããªã¿ããããã°åäœããæ©æ¢°èªã®ãããªãã®ãªããã§ããããäžåºŠã®ã³ã³ãã€ã«ã§æ°å€ãã®ãã©ãããã©ãŒã ãžã®å¯Ÿå¿ãèŠèŸŒããŸãã
äºäŸ2: ã¯ã©ãŠããã¬ã€ã®ã³ã¹ãå€§å¹ åæž
äžæ¹ã§ãã®æè¡ã¯ãäœãã²ãŒã 補äœè ã®ã¿ã«éãããçŸåšã®è²©å£²ãã©ãããã©ãŒã éå¶è ïŒDLsiteãFANZAçïŒãªã©ã®ã³ã¹ããå€§å¹ ã«åæžã§ããããã³ã·ã£ã«ãç§ããŠããã®ã§ãã
FANZA ã§ã¯çŸåšããŒã¿çã§çŸå°å¥³ã²ãŒã ã Web ã§ãã¬ã€ã§ãããçŸå°å¥³ã²ãŒã ãã©ãŠã¶çïŒÎ²ïŒããšããæ©èœãæäŸãããŠããŸãã ãã®æ©èœã¯ãããŒãžãã芧ã«ãªãã°ãããéããã¯ã©ãŠãäžã§çŸå°å¥³ã²ãŒã ãåäœããããã®ç»é¢ãé ä¿¡ããããšã«ãã£ãŠæãç«ã£ãŠããŸãã
ãããããã®é ä¿¡ã«ã¯ãã¡ãªãããæ°å€ãååšããŸãã ãŸããèšèŒãããŠããããã«ç»è³ªãäžããã»ã©ãæéåäœã§éä¿¡éãå¢ããŠãããŸãã ãŸããã€ã³ã¿ãŒãããå質ã«ãã£ãŠã¯åããæ»ããã§ãªãã£ãããå Žåã«ãã£ãŠã¯åæãããŠããŸã£ãããå¿«é©ãªãã¬ã€ãšã¯èšããŸããã
ããã§ Wasm ãæ¡çšããã°ãäžåºŠããŠã³ããŒãããã°ããŒã«ã«ã§åããããããç»è³ªããã¬ãŒã ã¬ãŒããæ°ã«ããå¿ èŠã¯ãããŸããã ç¹ã«çŸå°å¥³ã²ãŒã ã¯ããã¹ãã»çµµã»BGMãªã©ãèšç®éãå°ãªãã·ã¹ãã ã®ã¿ã§æãç«ã£ãŠããããšãå€ããããã¢ãã€ã«ç«¯æ«ã§ãããŠã³ããŒãããŠãã¬ã€ã§ããŸãã
Wasm 察å¿ã¯äºæ¥è åŽã«ã¡ãªããã ãã
ãããŸã§ããŠãŒã¶ãŒã®ã¡ãªãããæããŠããŸãããå®ã¯äºæ¥è åŽã®ã»ããã¡ãªãããå€ãã®ã§ãã
ãŸããã¯ã©ãŠãäžã§ Windows ãã·ã³ãå®è¡ãããå¿ èŠããªãã®ã§ãã®åã®çµè²»ãæµ®ããŸãã åç»é ä¿¡ã·ã¹ãã ãäžèŠãªã®ã§ããã®åã®çµè²»ãæµ®ããŸãã ãããŠéä¿¡è²»ãæµ®ããŸããäžåºŠãŠãŒã¶ãŒãããŠã³ããŒãããã ããã〠Wasm ãšã²ãŒã ã®ã¢ã»ããã¯éçãã¡ã€ã«ã§ããããã§ãã
ã¯ã©ãŠããã¬ã€ã®åé¡ã®9å²ã¯ Wasm ã§è§£æ±ºããïŒéèšïŒ
ãªããã®è©±ã¯ãœã·ã£ã²ã®Webçã§ãåãããšãèšããŸãã ãœã·ã£ã²ãåæ§ã®åç»é ä¿¡æè¡ãçšããã¯ã©ãŠããã¬ã€ãå®è£ ããŠããå Žåãå€ãããã§ãã
å人ã²ãŒã å¶äœã«ãããŠ
äŸãã°ãæçµçãªåºå圢åŒã exe 圢åŒã§åäœãããã®ã§ããã°ãWasm ãå°å ¥ããŠãããããšã§æ©æµãåããããå¯èœæ§ããããŸãã ãèªåã䜿çšããŠãããšã³ãžã³ã Wasm ã«å¯Ÿå¿ããŠããªãããšãã£ãããšã®ã»ããå€ããšæããŸããããããªæ¹ãé ã®çé ã«ã§ã眮ããŠãããŠããããå®è£ ããããšèãããšãã«å°ãã§ãæ€èšããŠããã ããã°å¹žãã§ãã
ãŸãä»ã²ãŒã ãšã³ãžã³ãèªäœããŠããæ¹ã¯ããã² Wasm ãžã®ã³ã³ãã€ã«ããæ¡çšããã ããWeb äœéšçãªã©ã®å¹ åºããã©ãããã©ãŒã 察å¿ããæ€èšããã ããããšæããŸãã
Wasm ã«éããªãããã©ãŒãã³ã¹åäž
ä»å㯠Wasm ã«éã£ãèšäºã§ããããJavaScript ã®ã¿ã§èšè¿°ããããšã³ãžã³ã§ãã£ãŠããWeb æšæºã®çµ±äžã«ã€ããã¬ãŒã ã¯ãŒã¯çæ§ã ãªéžæè¢ãå¢ããŠããããšã«ãã£ãŠãæ¢åã®ã¢ããªã±ãŒã·ã§ã³ã«ãããã©ãŒãã³ã¹åäžã®èŠèŸŒã¿ããããŸãã ãã®èšäºã§ã¯è§£èª¬ããŸããããTauri ãšããæ°ãããã¬ãŒã ã¯ãŒã¯ã䜿çšããããšã§ããã¯ãŒã«ããã£ã©ããã«ããŒè£œã²ãŒã ã®ã¢ããªã±ãŒã·ã§ã³ãµã€ãºã 150 MB 以äžåæžã§ããŸãã ïŒæ§DEC Advent Calendar åå è åãã¡ãã»ãŒãžïŒæ°ãåãããã€èšäºãæžãããšãã§ããã°ãã¢ããã³ãã«ã¬ã³ããŒã«æ»ã蟌ã¿ç»é²ããå¯èœæ§ããããŸãïŒ
ãããã«
çŸå°å¥³ã²ãŒã ã«ãã㊠Wasm ãçšããå©ç¹ã«ã€ããŠãã»ãŒã»ãŒããã°ã©ãã³ã°ã®è©±ããããããã¶ãé·ãèªã£ãŠããŸããŸããã
Wasm ã«éãããæ¢åã®ã²ãŒã ãšã³ãžã³ã§ãæ°ããæè¡ã®çµã¿èŸŒã¿ã«èå³ããªã人ã¯å€ãïŒåœç€Ÿèª¿ã¹ïŒã®ã§ããã®èšäºã§å°ãã§ãããã©ãŒãã³ã¹åäžãã³ã¹ãåæžã«èå³ãæã£ãŠããã ããã幞ãã§ãã
æåŸã«äžèšãçŸåãšãã²ã®äŸçµŠéãå¢ãããŠãã ããïŒïŒïŒïŒïŒïŒ