JavaScriptã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã®å®è£ ãå©ç¹ããŠãŒã¹ã±ãŒã¹ãããã³é«æ§èœWebã¢ããªã±ãŒã·ã§ã³æ§ç¯ã®ããã®ãã¹ããã©ã¯ãã£ã¹ãç¶²çŸ ããã¬ã€ãã
JavaScriptã¢ãžã¥ãŒã«ã¯ãŒã«ãŒïŒããã©ãŒãã³ã¹åäžã®ããã®ããã¯ã°ã©ãŠã³ãåŠçã®è§£æŸ
仿¥ã®Webéçºã®ç¶æ³ã§ã¯ãã¬ã¹ãã³ã·ãã§ããã©ãŒãã³ã¹ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæäŸããããšãæãéèŠã§ãã JavaScriptã¯åŒ·åã§ãããæ¬è³ªçã«ã·ã³ã°ã«ã¹ã¬ããã§ãã ããã«ãããç¹ã«èšç®è² è·ã®é«ãã¿ã¹ã¯ãåŠçããå Žåã«ãããã©ãŒãã³ã¹ã®ããã«ããã¯ãçºçããå¯èœæ§ããããŸãã JavaScriptã¢ãžã¥ãŒã«ã¯ãŒã«ãŒãç»å ŽããŸãããããã¯ãã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ãã¹ã¬ããã«ãªãããŒãããã¡ã€ã³ã¹ã¬ãããè§£æŸããŠãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®æŽæ°ãšã€ã³ã¿ã©ã¯ã·ã§ã³ãåŠçããããã¹ã ãŒãºã§ã¬ã¹ãã³ã·ããªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå®çŸããææ°ã®ãœãªã¥ãŒã·ã§ã³ã§ãã
JavaScriptã¢ãžã¥ãŒã«ã¯ãŒã«ãŒãšã¯äœã§ããïŒ
JavaScriptã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã¯ãWebããŒãžãŸãã¯Webã¢ããªã±ãŒã·ã§ã³ã®ã¡ã€ã³å®è¡ã¹ã¬ãããšã¯å¥ã«ãããã¯ã°ã©ãŠã³ãã¹ã¬ããã§JavaScriptã³ãŒããå®è¡ã§ããWebã¯ãŒã«ãŒã®äžçš®ã§ãã åŸæ¥ã®Webã¯ãŒã«ãŒãšã¯ç°ãªããã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã¯ESã¢ãžã¥ãŒã«ïŒimport
ããã³export
ã¹ããŒãã¡ã³ãïŒã®äœ¿çšããµããŒãããŠãããããã³ãŒãã®ç·šæãšäŸåé¢ä¿ã®ç®¡çã倧å¹
ã«å®¹æã«ãªããä¿å®ãããããªããŸãã ã¡ã€ã³ã¹ã¬ããããããã¯ããã«ã¿ã¹ã¯ãå®è¡ã§ããã䞊è¡ããŠå®è¡ãããç¬ç«ããJavaScriptç°å¢ãšèããŠãã ããã
ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã䜿çšããäž»ãªå©ç¹ïŒ
- å¿çæ§ã®åäžïŒèšç®è² è·ã®é«ãã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ãã¹ã¬ããã«ãªãããŒãããããšã§ãã¡ã€ã³ã¹ã¬ããã¯UIã®æŽæ°ãšãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãåŠçã§ããããã«ãªããããã¹ã ãŒãºã§ã¬ã¹ãã³ã·ããªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå®çŸããŸãã ããšãã°ãè€éãªç»ååŠçã¿ã¹ã¯ãæ³åããŠã¿ãŠãã ããã ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒããªãå ŽåãUIã¯åŠçãå®äºãããŸã§ããªãŒãºããŸãã ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã䜿çšãããšãç»ååŠçãããã¯ã°ã©ãŠã³ãã§è¡ãããUIã¯å¿çæ§ãç¶æããŸãã
- ããã©ãŒãã³ã¹ã®åäžïŒã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã¯äžŠååŠçãå¯èœã«ãããã«ãã³ã¢ããã»ããµã掻çšããŠã¿ã¹ã¯ãåæã«å®è¡ã§ããŸãã ããã«ãããèšç®è² è·ã®é«ãæäœã®å šäœçãªå®è¡æéãå€§å¹ ã«ççž®ã§ããŸãã
- ã³ãŒãã®ç·šæã®ç°¡çŽ åïŒã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã¯ESã¢ãžã¥ãŒã«ããµããŒãããŠãããããã³ãŒãã®ç·šæãšäŸåé¢ä¿ã®ç®¡çãåäžããŸãã ããã«ãããè€éãªã¢ããªã±ãŒã·ã§ã³ã®äœæãä¿å®ãããã³ãã¹ãã容æã«ãªããŸãã
- ã¡ã€ã³ã¹ã¬ããã®è² è·ã®è»œæžïŒã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ãã¹ã¬ããã«ãªãããŒãããããšã§ãã¡ã€ã³ã¹ã¬ããã®è² è·ã軜æžããããã©ãŒãã³ã¹ãåäžãããç¹ã«ã¢ãã€ã«ããã€ã¹ã§ã®ããããªãŒæ¶è²»ãåæžã§ããŸãã
ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã®ä»çµã¿ïŒè©³çްãªèª¬æ
ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã®èåŸã«ããäžå¿çãªæŠå¿µã¯ãJavaScriptã³ãŒããç¬ç«ããŠå®è¡ã§ããåå¥ã®å®è¡ã³ã³ããã¹ããäœæããããšã§ãã 圌ããã©ã®ããã«æ©èœãããã®ã¹ããããã€ã¹ãããã®å èš³ã¯æ¬¡ã®ãšããã§ãã
- ã¯ãŒã«ãŒã®äœæïŒã¡ã€ã³ã®JavaScriptã³ãŒãã§æ°ããã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã€ã³ã¹ã¿ã³ã¹ãäœæããã¯ãŒã«ãŒ ã¹ã¯ãªãããžã®ãã¹ãæå®ããŸãã ã¯ãŒã«ãŒ ã¹ã¯ãªããã¯ãããã¯ã°ã©ãŠã³ãã§å®è¡ãããã³ãŒããå«ãåå¥ã®JavaScriptãã¡ã€ã«ã§ãã
- ã¡ãã»ãŒãžã®åãæž¡ãïŒã¡ã€ã³ã¹ã¬ãããšã¯ãŒã«ãŒ ã¹ã¬ããéã®éä¿¡ã¯ãã¡ãã»ãŒãžã®åãæž¡ããéããŠè¡ãããŸãã ã¡ã€ã³ã¹ã¬ããã¯ã
postMessage()
ã¡ãœããã䜿çšããŠã¯ãŒã«ãŒ ã¹ã¬ããã«ã¡ãã»ãŒãžãéä¿¡ã§ããã¯ãŒã«ãŒ ã¹ã¬ããã¯åãã¡ãœããã䜿çšããŠã¡ã€ã³ã¹ã¬ããã«ã¡ãã»ãŒãžãéä¿¡ã§ããŸãã - ããã¯ã°ã©ãŠã³ãå®è¡ïŒã¯ãŒã«ãŒ ã¹ã¬ãããã¡ãã»ãŒãžãåä¿¡ãããšã察å¿ããã³ãŒããå®è¡ãããŸãã ã¯ãŒã«ãŒ ã¹ã¬ããã¯ã¡ã€ã³ã¹ã¬ãããšã¯ç¬ç«ããŠåäœãããããå®è¡æéã®é·ãã¿ã¹ã¯ã¯UIããããã¯ããŸããã
- çµæã®åŠçïŒã¯ãŒã«ãŒ ã¹ã¬ãããã¿ã¹ã¯ãå®äºãããšãçµæãå«ãã¡ãã»ãŒãžãã¡ã€ã³ã¹ã¬ããã«è¿ä¿¡ããŸãã æ¬¡ã«ãã¡ã€ã³ã¹ã¬ããã¯çµæãåŠçããããã«å¿ããŠUIãæŽæ°ã§ããŸãã
ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã®å®è£ ïŒå®è·µçãªã¬ã€ã
ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒãå®è£ ããŠèšç®è² è·ã®é«ãèšç®ãå®è¡ããå®éçãªäŸãèŠãŠã¿ãŸãããïŒnçªç®ã®ãã£ããããæ°ãèšç®ããŸãã
ã¹ããã1ïŒã¯ãŒã«ãŒ ã¹ã¯ãªãããäœæããïŒfibonacci.worker.jsïŒ
次ã®å
容ã§fibonacci.worker.js
ãšããååã®æ°ããJavaScriptãã¡ã€ã«ãäœæããŸãã
// fibonacci.worker.js
function fibonacci(n) {
if (n <= 1) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
self.addEventListener('message', (event) => {
const n = event.data;
const result = fibonacci(n);
self.postMessage(result);
});
説æïŒ
fibonacci()
颿°ã¯ãnçªç®ã®ãã£ããããæ°ãååž°çã«èšç®ããŸããself.addEventListener('message', ...)
颿°ã¯ãã¡ãã»ãŒãžãªã¹ããŒãèšå®ããŸãã ã¯ãŒã«ãŒãã¡ã€ã³ã¹ã¬ããããã¡ãã»ãŒãžãåä¿¡ãããšãã¡ãã»ãŒãžããŒã¿ããn
ã®å€ãæœåºãããã£ããããæ°ãèšç®ããself.postMessage()
ã䜿çšããŠçµæãã¡ã€ã³ã¹ã¬ããã«è¿ä¿¡ããŸãã
ã¹ããã2ïŒã¡ã€ã³ ã¹ã¯ãªãããäœæããïŒindex.htmlãŸãã¯app.jsïŒ
ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒãšå¯Ÿè©±ããããã®HTMLãã¡ã€ã«ãŸãã¯JavaScriptãã¡ã€ã«ãäœæããŸãã
// index.html or app.js
ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã®äŸ
説æïŒ
- ãã£ããããæ°ã®èšç®ãããªã¬ãŒãããã¿ã³ãäœæããŸãã
- ãã¿ã³ãã¯ãªãã¯ãããšãæ°ãã
Worker
ã€ã³ã¹ã¿ã³ã¹ãäœæããã¯ãŒã«ãŒ ã¹ã¯ãªããïŒfibonacci.worker.js
ïŒãžã®ãã¹ãæå®ããtype
ãªãã·ã§ã³ã'module'
ã«èšå®ããŸãã ããã¯ãã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã䜿çšããããã«éåžžã«éèŠã§ãã - ã¯ãŒã«ãŒ ã¹ã¬ããããçµæãåä¿¡ããã¡ãã»ãŒãžãªã¹ããŒãèšå®ããŸãã ã¯ãŒã«ãŒãã¡ãã»ãŒãžãè¿ä¿¡ãããšãèšç®ããããã£ããããæ°ã§
resultDiv
ã®å å®¹ãæŽæ°ããŸãã - æåŸã«ã
worker.postMessage(40)
ã䜿çšããŠã¡ãã»ãŒãžãã¯ãŒã«ãŒ ã¹ã¬ããã«éä¿¡ãããã£ããããæ°ïŒ40ïŒãèšç®ããããã«æç€ºããŸãã
éèŠãªèæ ®äºé ïŒ
- ãã¡ã€ã«ã¢ã¯ã»ã¹ïŒã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã¯ãDOMããã®ä»ã®ãã©ãŠã¶APIãžã®ã¢ã¯ã»ã¹ãå¶éãããŠããŸãã DOMãçŽæ¥æäœããããšã¯ã§ããŸããã UIãæŽæ°ããã«ã¯ãã¡ã€ã³ã¹ã¬ãããšã®éä¿¡ãäžå¯æ¬ ã§ãã
- ããŒã¿è»¢éïŒã¡ã€ã³ã¹ã¬ãããšã¯ãŒã«ãŒ ã¹ã¬ããéã§æž¡ãããããŒã¿ã¯ãå ±æã§ã¯ãªãã³ããŒãããŸãã ããã¯æ§é åã¯ããŒã³ãšããŠç¥ãããŠããŸãã 倧éã®ããŒã¿ã»ããã®å Žåã¯ããŒãã³ããŒè»¢éã«Transferable Objectsã䜿çšããããšãæ€èšããŠãããã©ãŒãã³ã¹ãåäžãããŸãã
- ãšã©ãŒåŠçïŒã¡ã€ã³ã¹ã¬ãããšã¯ãŒã«ãŒ ã¹ã¬ããã®äž¡æ¹ã§é©åãªãšã©ãŒåŠçãå®è£
ããŠãçºçããå¯èœæ§ã®ããäŸå€ããã£ããããŠåŠçããŸãã
worker.addEventListener('error', ...)
ã䜿çšããŠãã¯ãŒã«ãŒ ã¹ã¯ãªããã®ãšã©ãŒããã£ããããŸãã - ã»ãã¥ãªãã£ïŒã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã¯ãåäžçæå ããªã·ãŒã®å¯Ÿè±¡ãšãªããŸãã ã¯ãŒã«ãŒ ã¹ã¯ãªããã¯ãã¡ã€ã³ããŒãžãšåããã¡ã€ã³ã§ãã¹ããããŠããå¿ èŠããããŸãã
é«åºŠãªã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã®ææ³
åºæ¬ãè¶ ããŠãããã€ãã®é«åºŠãªææ³ã䜿çšãããšãã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã®å®è£ ãããã«æé©åã§ããŸãã
Transferable Objects
ã¡ã€ã³ã¹ã¬ãããšã¯ãŒã«ãŒ ã¹ã¬ããéã§å€§éã®ããŒã¿ã»ããã転éããå ŽåãTransferable Objectsã¯å€§ããªããã©ãŒãã³ã¹äžã®å©ç¹ãæäŸããŸãã ããŒã¿ãã³ããŒãã代ããã«ãTransferable Objectsã¯ã¡ã¢ãªãããã¡ã®æææš©ãä»ã®ã¹ã¬ããã«è»¢éããŸãã ããã«ãããããŒã¿ã®ã³ããŒã®ãªãŒããŒããããæé€ãããããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸãã
// ã¡ã€ã³ã¹ã¬ãã
const arrayBuffer = new ArrayBuffer(1024 * 1024); // 1MB
const worker = new Worker('worker.js', { type: 'module' });
worker.postMessage(arrayBuffer, [arrayBuffer]); // æææš©ã転é
// ã¯ãŒã«ãŒ ã¹ã¬ãã (worker.js)
self.addEventListener('message', (event) => {
const arrayBuffer = event.data;
// arrayBufferãåŠçããŸã
});
SharedArrayBuffer
SharedArrayBuffer
ã䜿çšãããšãè€æ°ã®ã¯ãŒã«ãŒãšã¡ã€ã³ã¹ã¬ãããåãã¡ã¢ãªãŒäœçœ®ã«ã¢ã¯ã»ã¹ã§ããŸãã ããã«ãããããè€éãªéä¿¡ãã¿ãŒã³ãšããŒã¿å
±æãå¯èœã«ãªããŸãã ãã ããSharedArrayBuffer
ã䜿çšããã«ã¯ãç«¶åç¶æ
ãããŒã¿ã®ç Žæãåé¿ããããã«æ
éãªåæãå¿
èŠã§ãã å€ãã®å ŽåãAtomics
æäœã䜿çšããå¿
èŠããããŸãã
泚ïŒSharedArrayBuffer
ã䜿çšããã«ã¯ãïŒSpectreããã³Meltdownã®è匱æ§ã«ããïŒã»ãã¥ãªãã£äžã®æžå¿µãããé©åãªHTTPããããŒãèšå®ããå¿
èŠããããŸãã å
·äœçã«ã¯ãCross-Origin-Opener-Policy
ããã³Cross-Origin-Embedder-Policy
HTTPããããŒãèšå®ããå¿
èŠããããŸãã
ComlinkïŒã¯ãŒã«ãŒã®éä¿¡ã®ç°¡çŽ å
Comlinkã¯ãã¡ã€ã³ã¹ã¬ãããšã¯ãŒã«ãŒ ã¹ã¬ããéã®éä¿¡ãç°¡çŽ åããã©ã€ãã©ãªã§ãã ããã«ãããã¯ãŒã«ãŒ ã¹ã¬ããã§JavaScriptãªããžã§ã¯ããå ¬éããåãã³ã³ããã¹ãã§å®è¡ãããŠãããã®ããã«ãã¡ã€ã³ã¹ã¬ãããããããã®ã¡ãœãããçŽæ¥åŒã³åºãããšãã§ããŸãã ããã«ãããã¡ãã»ãŒãžã®åãæž¡ãã«å¿ èŠãªãã€ã©ãŒãã¬ãŒãã³ãŒããå€§å¹ ã«åæžãããŸãã
// ã¯ãŒã«ãŒ ã¹ã¬ãã (worker.js)
import * as Comlink from 'comlink';
const api = {
add(a, b) {
return a + b;
},
};
Comlink.expose(api);
// ã¡ã€ã³ã¹ã¬ãã
import * as Comlink from 'comlink';
async function main() {
const worker = new Worker('worker.js', { type: 'module' });
const api = Comlink.wrap(worker);
const result = await api.add(2, 3);
console.log(result); // åºåïŒ5
}
main();
ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã®ãŠãŒã¹ã±ãŒã¹
ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã¯ãç¹ã«æ¬¡ã®ãããªããã€ãã®ã¿ã¹ã¯ã«é©ããŠããŸãã
- ç»åããã³ãããªã®åŠçïŒãã£ã«ã¿ãªã³ã°ããµã€ãºå€æŽããšã³ã³ãŒããªã©ã®è€éãªç»åããã³ãããªåŠçã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ãã¹ã¬ããã«ãªãããŒãããŠãUIã®ããªãŒãºãé²ããŸãã ããšãã°ãåçç·šéã¢ããªã±ãŒã·ã§ã³ã¯ãã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã䜿çšããŠãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ããããã¯ããã«ç»åããã£ã«ã¿ãªã³ã°ã§ããŸãã
- ããŒã¿åæãšç§åŠèšç®ïŒçµ±èšåæãæ©æ¢°åŠç¿ã¢ãã«ã®ãã¬ãŒãã³ã°ãã·ãã¥ã¬ãŒã·ã§ã³ãªã©ãèšç®è² è·ã®é«ãããŒã¿åæãšç§åŠèšç®ã®ã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ãã§å®è¡ããŸãã ããšãã°ã財åã¢ããªã³ã°ã¢ããªã±ãŒã·ã§ã³ã¯ãã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã䜿çšããŠãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«åœ±é¿ãäžããããšãªãè€éãªã·ãã¥ã¬ãŒã·ã§ã³ãå®è¡ã§ããŸãã
- ã²ãŒã éçºïŒã²ãŒã ã®ããžãã¯ãç©çèšç®ãAIåŠçãããã¯ã°ã©ãŠã³ãã¹ã¬ããã§å®è¡ããããã«ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã䜿çšããã²ãŒã ã®ããã©ãŒãã³ã¹ãšå¿çæ§ãåäžãããŸãã ããšãã°ãè€éãªã¹ãã©ããžãŒã²ãŒã ã¯ãã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã䜿çšããŠè€æ°ã®ãŠãããã®AIèšç®ãåæã«åŠçã§ããŸãã
- ã³ãŒãã®ãã©ã³ã¹ãã€ã«ãšãã³ãã«ïŒã³ãŒãã®ãã©ã³ã¹ãã€ã«ãšãã³ãã«ã®ã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ãã¹ã¬ããã«ãªãããŒãããŠããã«ãæéãšéçºã¯ãŒã¯ãããŒãæ¹åããŸãã ããšãã°ãWebéçºããŒã«ã¯ãã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã䜿çšããŠãæ°ããããŒãžã§ã³ã®JavaScriptã³ãŒããå€ãããŒãžã§ã³ã®ãã©ãŠã¶ãŒãšã®äºææ§ã®ããã«å€ãããŒãžã§ã³ã«ãã©ã³ã¹ãã€ã«ã§ããŸãã
- æå·åæäœïŒæå·åããã³åŸ©å·åãªã©ã®æå·åæäœãããã¯ã°ã©ãŠã³ãã¹ã¬ããã§å®è¡ããŠãããã©ãŒãã³ã¹ã®ããã«ããã¯ãé²ããã»ãã¥ãªãã£ãåäžãããŸãã
- ãªã¢ã«ã¿ã€ã ããŒã¿åŠçïŒãªã¢ã«ã¿ã€ã ã®ã¹ããªãŒãã³ã° ããŒã¿ïŒã»ã³ãµãŒãéèãã£ãŒããªã©ïŒãåŠçããããã¯ã°ã©ãŠã³ãã§åæãå®è¡ããŸãã ããã«ã¯ãããŒã¿ã®ãã£ã«ã¿ãªã³ã°ãéèšããŸãã¯å€æãå«ãŸããå ŽåããããŸãã
ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
å¹ççã§ä¿å®å¯èœãªã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã®å®è£ ãä¿èšŒããããã«ã次ã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ããã
- ã¯ãŒã«ãŒ ã¹ã¯ãªããããªãŒã³ã«ä¿ã€ïŒã¯ãŒã«ãŒ ã¹ã¬ããã®èµ·åæéãççž®ããããã«ãã¯ãŒã«ãŒ ã¹ã¯ãªããã®ã³ãŒãéãæå°éã«æããŸãã ç¹å®ã®ã¿ã¹ã¯ãå®è¡ããããã«å¿ èŠãªã³ãŒãã®ã¿ãå«ããŸãã
- ããŒã¿è»¢éãæé©åããïŒäžèŠãªããŒã¿ã®ã³ããŒãåé¿ããããã«ã倧éã®ããŒã¿ã»ããã転éããã«ã¯Transferable Objectsã䜿çšããŸãã
- ãšã©ãŒåŠçãå®è£ ããïŒçºçããå¯èœæ§ã®ããäŸå€ããã£ããããŠåŠçããããã«ãã¡ã€ã³ã¹ã¬ãããšã¯ãŒã«ãŒ ã¹ã¬ããã®äž¡æ¹ã§å ç¢ãªãšã©ãŒåŠçãå®è£ ããŸãã
- ãããã°ããŒã«ã䜿çšããïŒãã©ãŠã¶ã®éçºè ããŒã«ã䜿çšããŠãã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã®ã³ãŒãããããã°ããŸãã ææ°ã®ãã©ãŠã¶ã®ã»ãšãã©ã¯ãWebã¯ãŒã«ãŒå°çšã®ãããã°ããŒã«ãæäŸããŠããŸãã
- Comlinkã®äœ¿çšãæ€èšããïŒã¡ãã»ãŒãžã®åãæž¡ããå€§å¹ ã«ç°¡çŽ åããã¡ã€ã³ã¹ã¬ãããšã¯ãŒã«ãŒ ã¹ã¬ããéã®ã€ã³ã¿ãŒãã§ã€ã¹ãããã¯ãªãŒã³ã«ããããã
- ããã©ãŒãã³ã¹ã枬å®ããïŒããã©ãŒãã³ã¹ãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠãã¢ãžã¥ãŒã«ã¯ãŒã«ãŒãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã«äžãã圱é¿ã枬å®ããŸãã ããã¯ããããªãæé©åã®ããã®é åãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
- å®äºãããã¯ãŒã«ãŒãçµäºããïŒãªãœãŒã¹ãè§£æŸããããã«ãäžèŠã«ãªã£ãã¯ãŒã«ãŒ ã¹ã¬ãããçµäºããŸãã
worker.terminate()
ã䜿çšããŠãã¯ãŒã«ãŒãçµäºããŸãã - å
±æã®å¯å€ç¶æ
ãåé¿ããïŒã¡ã€ã³ã¹ã¬ãããšã¯ãŒã«ãŒéã®å
±æã®å¯å€ç¶æ
ãæå°éã«æããŸãã ã¡ãã»ãŒãžã®åãæž¡ãã䜿çšããŠããŒã¿ãåæããç«¶åç¶æ
ãåé¿ããŸãã
SharedArrayBuffer
ã䜿çšããå Žåã¯ãAtomics
ã䜿çšããŠé©åãªåæã確ä¿ããŠãã ããã
ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒãšåŸæ¥ã®Webã¯ãŒã«ãŒ
ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒãšåŸæ¥ã®Webã¯ãŒã«ãŒã¯ã©ã¡ããããã¯ã°ã©ãŠã³ãåŠçæ©èœãæäŸããŸãããéèŠãªéãããããŸãã
æ©èœ | ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒ | åŸæ¥ã®Webã¯ãŒã«ãŒ |
---|---|---|
ESã¢ãžã¥ãŒã«ã®ãµããŒã | ã¯ã (import , export ) |
ããã (importScripts() ã®ãããªåé¿çãå¿
èŠ) |
ã³ãŒãã®ç·šæ | ESã¢ãžã¥ãŒã«ã䜿çšãããšããè¯ã | ããè€éã§ãå€ãã®å Žåãã³ãã«ãå¿ èŠ |
äŸåé¢ä¿ã®ç®¡ç | ESã¢ãžã¥ãŒã«ã§ç°¡çŽ å | ããå°é£ |
å šäœçãªéçºãšã¯ã¹ããªãšã³ã¹ | ããã¢ãã³ã§åçåãããŠãã | ããåé·ã§çŽæçã§ãªã |
æ¬è³ªçã«ãã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã¯ãESã¢ãžã¥ãŒã«ã®ãµããŒãã®ãããã§ãJavaScriptã§ã®ããã¯ã°ã©ãŠã³ãåŠçã«å¯ŸããŠããã¢ãã³ã§éçºè ãã¬ã³ããªãŒãªã¢ãããŒããæäŸããŸãã
ãã©ãŠã¶ã®äºææ§
ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã¯ãæ¬¡ã®ææ°ã®ãã©ãŠã¶å šäœã§åªãããã©ãŠã¶ã®ãµããŒããåããŠããŸãã
- Chrome
- Firefox
- Safari
- Edge
ææ°ã®ãã©ãŠã¶ã®äºææ§æ å ±ã«ã€ããŠã¯ãcaniuse.comã確èªããŠãã ããã
çµè«ïŒããã¯ã°ã©ãŠã³ãåŠçã®åãæŽ»çšãã
JavaScriptã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãšå¿çæ§ãåäžãããããã®åŒ·åãªããŒã«ã§ãã èšç®è² è·ã®é«ãã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ãã¹ã¬ããã«ãªãããŒãããããšã§ãã¡ã€ã³ã¹ã¬ãããè§£æŸããŠUIã®æŽæ°ãšãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãåŠçããããã¹ã ãŒãºã§æ¥œãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå®çŸã§ããŸãã ESã¢ãžã¥ãŒã«ã®ãµããŒãã«ãããã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã¯åŸæ¥ã®Webã¯ãŒã«ãŒãšæ¯èŒããŠãããã¯ã°ã©ãŠã³ãåŠçã«å¯ŸããŠããã¢ãã³ã§éçºè ãã¬ã³ããªãŒãªã¢ãããŒããæäŸããŸãã ã¢ãžã¥ãŒã«ã¯ãŒã«ãŒã®åãæŽ»çšããWebã¢ããªã±ãŒã·ã§ã³ã®å¯èœæ§ãæå€§éã«åŒãåºããŠãã ããïŒ