JavaScriptã®äžŠè¡ã€ãã¬ãŒã¿ã«ãã䞊ååŠçã®åã§ãã¢ããªã®æ§èœãšå¿çæ§ãåäžãè€éãªã¿ã¹ã¯ã§ã®å®è£ ãšæé©åæ¹æ³ãåŠã³ãŸãã
JavaScriptã®äžŠè¡ã€ãã¬ãŒã¿ïŒçŸä»£ã®ã¢ããªã±ãŒã·ã§ã³ã«ããã䞊ååŠçã®è§£æŸ
çŸä»£ã®JavaScriptã¢ããªã±ãŒã·ã§ã³ã¯ãå€§èŠæš¡ãªããŒã¿ã»ãããèšç®éã®å€ãã¿ã¹ã¯ãæ±ãéã«ããã°ãã°ããã©ãŒãã³ã¹ã®ããã«ããã¯ã«çŽé¢ããŸããã·ã³ã°ã«ã¹ã¬ããã§ã®å®è¡ã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®äœäžãã¹ã±ãŒã©ããªãã£ã®æžå°ã«ã€ãªããå¯èœæ§ããããŸãã䞊è¡ã€ãã¬ãŒã¿ã¯ãJavaScriptç°å¢å ã§äžŠååŠçãå¯èœã«ããããšã§åŒ·åãªè§£æ±ºçãæäŸããéçºè ãè€æ°ã®éåææäœã«äœæ¥è² è·ã忣ãããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãå¯èœã«ããŸãã
䞊è¡ã€ãã¬ãŒã·ã§ã³ã®å¿ èŠæ§ãçè§£ãã
JavaScriptã®ã·ã³ã°ã«ã¹ã¬ãããšããæ§è³ªã¯ãåŸæ¥ãçã®äžŠååŠçãå®è¡ããèœåãå¶éããŠããŸãããWeb Workerã¯å¥ã®å®è¡ã³ã³ããã¹ããæäŸããŸãããéä¿¡ãããŒã¿å
±æã«è€éãã䌎ããŸããéåææäœã¯ãPromisesãšasync/await
ã«ãã£ãŠå®çŸããã䞊è¡åŠçã«å¯Ÿãããã管çããããã¢ãããŒããæäŸããŸãããå€§èŠæš¡ãªããŒã¿ã»ãããå埩åŠçããåèŠçŽ ã«å¯ŸããŠéåææäœãé æ¬¡å®è¡ããã®ã¯ãäŸç¶ãšããŠé
ããªãå¯èœæ§ããããŸãã
䞊è¡ã€ãã¬ãŒã·ã§ã³ãéåžžã«äŸ¡å€ãæã€ã·ããªãªãèããŠã¿ãŸãããïŒ
- ç»ååŠçïŒ å€§éã®ç»åã³ã¬ã¯ã·ã§ã³ã«ãã£ã«ã¿ãŒã倿ãé©çšããããã®ããã»ã¹ã䞊ååããããšã§ãç¹ã«èšç®éã®å€ããã£ã«ã¿ãŒã®å ŽåãåŠçæéãåçã«ççž®ã§ããŸãã
- ããŒã¿åæïŒ å€§èŠæš¡ãªããŒã¿ã»ãããåæããŠåŸåããã¿ãŒã³ãç¹å®ããã䞊è¡ã€ãã¬ãŒã·ã§ã³ã¯ãéèšçµ±èšã®èšç®ãæ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã®é©çšãé«éåã§ããŸãã
- APIãªã¯ãšã¹ãïŒ è€æ°ã®APIããããŒã¿ãååŸããçµæãéçŽããããããã®ãªã¯ãšã¹ãã䞊è¡ããŠè¡ãããšã§ãã¬ã€ãã³ã·ãæå°éã«æããå¿çæ§ãåäžãããããšãã§ããŸããäŸãã°ãç°ãªãå°åéã§ã®æ£ç¢ºãªé貚æç®ãä¿èšŒããããã«ãè€æ°ã®ãããã€ããŒããçºæ¿ã¬ãŒãïŒäŸïŒUSDããEURãJPYãGBPãžåæã«ïŒãååŸããå Žåãæ³åããŠã¿ãŠãã ããã
- ãã¡ã€ã«åŠçïŒ ãã°ãã¡ã€ã«ãããŒã¿ãã³ããªã©ã®å€§ããªãã¡ã€ã«ãèªã¿èŸŒãã§åŠçããã䞊è¡ã€ãã¬ãŒã·ã§ã³ã¯ããã¡ã€ã«å 容ã®è§£æãšåæãå éãããããšãã§ããŸããäŸãã°ãè€æ°ã®ãµãŒããŒã«ãããç°åžžãªã¢ã¯ãã£ããã£ãã¿ãŒã³ãç¹å®ããããã«ãµãŒããŒãã°ãåæã«åŠçããå Žåãªã©ã§ãã
䞊è¡ã€ãã¬ãŒã¿ãšã¯äœãïŒ
䞊è¡ã€ãã¬ãŒã¿ã¯ãã€ãã©ãã«ïŒäŸïŒé åãMapãSetïŒã®èŠçŽ ã䞊è¡ããŠåŠçããããã®ãã¿ãŒã³ã§ãããéåææäœã掻çšããŠäžŠååŠçãå®çŸããŸããããã«ã¯ä»¥äžã®èŠçŽ ãå«ãŸããŸãïŒ
- ã€ãã©ãã«ïŒ å埩åŠçãããããŒã¿æ§é ã
- éåææäœïŒ ã€ãã©ãã«ã®åèŠçŽ ã«å¯ŸããŠäœããã®ã¿ã¹ã¯ãå®è¡ããPromiseãè¿ã颿°ã
- äžŠè¡æ§å¶åŸ¡ïŒ ã·ã¹ãã ã®éè² è·ãé²ãããã«ãåæã«å®è¡ãããéåææäœã®æ°ãå¶éããã¡ã«ããºã ãããã¯ãªãœãŒã¹ã管çããããã©ãŒãã³ã¹ã®äœäžãé¿ããããã«éåžžã«éèŠã§ãã
- çµæã®éçŽïŒ éåææäœã®çµæãåéããåŠçããããšã
JavaScriptã§ã®äžŠè¡ã€ãã¬ãŒã¿ã®å®è£
以äžã«ãJavaScriptã§äžŠè¡ã€ãã¬ãŒã¿ãå®è£ ããããã®ã¹ããããã€ã¹ãããã¬ã€ããšã³ãŒãäŸã瀺ããŸãïŒ
1. éåææäœ
ãŸããã€ãã©ãã«ã®åèŠçŽ ã«å¯ŸããŠå®è¡ãããéåææäœãå®çŸ©ããŸãããã®é¢æ°ã¯Promiseãè¿ãå¿ èŠããããŸãã
async function processItem(item) {
// Simulate an asynchronous operation
await new Promise(resolve => setTimeout(resolve, Math.random() * 1000));
return `Processed: ${item}`; // Return the processed item
}
2. ã»ããã©ã«ããäžŠè¡æ§å¶åŸ¡
ã»ããã©ã¯ãåæã«å®è¡ãããæäœã®æ°ãå¶éããããã®å€å žçãªäžŠè¡æ§å¶åŸ¡ã¡ã«ããºã ã§ããç°¡åãªã»ããã©ã¯ã©ã¹ãäœæããŸãïŒ
class Semaphore {
constructor(maxConcurrent) {
this.maxConcurrent = maxConcurrent;
this.current = 0;
this.queue = [];
}
async acquire() {
if (this.current < this.maxConcurrent) {
this.current++;
return;
}
return new Promise(resolve => this.queue.push(resolve));
}
release() {
this.current--;
if (this.queue.length > 0) {
const resolve = this.queue.shift();
resolve();
this.current++;
}
}
}
3. 䞊è¡ã€ãã¬ãŒã¿é¢æ°
次ã«ãã»ããã©ã䜿çšããŠäžŠè¡ã¬ãã«ãå¶åŸ¡ããªãããã€ãã©ãã«ã䞊è¡ããŠå埩åŠçããã¡ã€ã³é¢æ°ãäœæããŸãããïŒ
async function concurrentIterator(iterable, operation, maxConcurrent) {
const semaphore = new Semaphore(maxConcurrent);
const results = [];
const errors = [];
await Promise.all(
Array.from(iterable).map(async (item, index) => {
await semaphore.acquire();
try {
const result = await operation(item, index);
results[index] = result; // Store results in the correct order
} catch (error) {
console.error(`Error processing item ${index}:`, error);
errors[index] = error;
} finally {
semaphore.release();
}
})
);
return { results, errors };
}
4. 䜿çšäŸ
以äžã¯ãconcurrentIterator
颿°ã®äœ¿ç𿹿³ã§ãïŒ
const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const maxConcurrency = 3; // Adjust this value based on your resources
async function main() {
const { results, errors } = await concurrentIterator(data, processItem, maxConcurrency);
console.log("Results:", results);
if (errors.length > 0) {
console.error("Errors:", errors);
}
}
main();
ã³ãŒãã®è§£èª¬
processItem
ïŒ ããã¯ã¢ã€ãã ã®åŠçãã·ãã¥ã¬ãŒãããéåææäœã§ããã©ã³ãã ãªæéïŒæå€§1ç§ïŒåŸ æ©ããã¢ã€ãã ãåŠçãããããšã瀺ãæååãè¿ããŸããSemaphore
ïŒ ãã®ã¯ã©ã¹ã¯åæã«å®è¡ãããæäœã®æ°ãå¶åŸ¡ããŸããacquire
ã¡ãœããã¯ã¹ããããå©çšå¯èœã«ãªããŸã§åŸ æ©ããrelease
ã¡ãœããã¯æäœãå®äºãããšãã«ã¹ããããè§£æŸããŸããconcurrentIterator
ïŒ ãã®é¢æ°ã¯ã€ãã©ãã«ãéåææäœãããã³æå€§äžŠè¡ã¬ãã«ãå ¥åãšããŠåãåããŸããã»ããã©ã䜿çšããŠåæã«å®è¡ãããæäœã®æ°ãå¶éããçµæã®é åãè¿ããŸãããŸããåŠçäžã«çºçãããšã©ãŒããã£ããã£ããŸããmain
ïŒ ãã®é¢æ°ã¯concurrentIterator
颿°ã®äœ¿ç𿹿³ã瀺ããŸããããŒã¿ã®é åãå®çŸ©ããæå€§äžŠè¡ã¬ãã«ãèšå®ããåŸãconcurrentIterator
ãåŒã³åºããŠããŒã¿ã䞊è¡ããŠåŠçããŸãã
䞊è¡ã€ãã¬ãŒã¿ã䜿çšããå©ç¹
- ããã©ãŒãã³ã¹ã®åäžïŒ èŠçŽ ã䞊è¡ããŠåŠçããããšã§ãç¹ã«å€§èŠæš¡ãªããŒã¿ã»ãããèšç®éã®å€ãã¿ã¹ã¯ã«ãããŠãå šäœã®åŠçæéãå€§å¹ ã«ççž®ã§ããŸãã
- å¿çæ§ã®åäžïŒ 䞊è¡ã€ãã¬ãŒã·ã§ã³ã¯ã¡ã€ã³ã¹ã¬ããããããã¯ãããã®ãé²ããããå¿çæ§ã®é«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãå®çŸããŸãã
- ã¹ã±ãŒã©ããªãã£ïŒ 䞊è¡ã€ãã¬ãŒã¿ã¯ãã¢ããªã±ãŒã·ã§ã³ãããå€ãã®ãªã¯ãšã¹ããåæã«åŠçã§ããããã«ããããšã§ãã¹ã±ãŒã©ããªãã£ãåäžãããããšãã§ããŸãã
- ãªãœãŒã¹ç®¡çïŒ ã»ããã©ã¡ã«ããºã ã¯äžŠè¡ã¬ãã«ãå¶åŸ¡ããã®ã«åœ¹ç«ã¡ãã·ã¹ãã ã®éè² è·ãé²ããå¹ççãªãªãœãŒã¹å©çšãä¿èšŒããŸãã
èæ ®äºé ãšãã¹ããã©ã¯ãã£ã¹
- 䞊è¡ã¬ãã«ïŒ é©åãªäžŠè¡ã¬ãã«ãéžæããããšãéèŠã§ããäœããããšäžŠååŠçã®å©ç¹ãååã«æŽ»çšã§ãããé«ããããšã³ã³ããã¹ãã¹ã€ããã³ã°ããªãœãŒã¹ç«¶åã«ããã·ã¹ãã ã«éè² è·ãããããããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸããç¹å®ã®ã¯ãŒã¯ããŒããšããŒããŠã§ã¢ã«æé©ãªå€ãèŠã€ããããã«å®éšããŠãã ãããCPUã³ã¢æ°ããããã¯ãŒã¯åž¯åå¹ ãã¡ã¢ãªã®å¯çšæ§ãªã©ã®èŠå ãèæ ®ããŠãã ããã
- ãšã©ãŒãã³ããªã³ã°ïŒ éåææäœã§ã®å€±æãé©åã«åŠçããããã«ãå ç¢ãªãšã©ãŒãã³ããªã³ã°ãå®è£ ããŠãã ããããµã³ãã«ã³ãŒãã«ã¯åºæ¬çãªãšã©ãŒãã³ããªã³ã°ãå«ãŸããŠããŸããããªãã©ã€ããµãŒããããã¬ãŒã«ãŒãªã©ãããé«åºŠãªãšã©ãŒãã³ããªã³ã°æŠç¥ãå®è£ ããå¿ èŠããããããããŸããã
- ããŒã¿äŸåæ§ïŒ éåææäœãäºãã«ç¬ç«ããŠããããšã確èªããŠãã ãããæäœéã«äŸåé¢ä¿ãããå Žåã¯ãæäœãæ£ããé åºã§å®è¡ãããããã«åæã¡ã«ããºã ã䜿çšããå¿ èŠããããããããŸããã
- ãªãœãŒã¹æ¶è²»ïŒ æœåšçãªããã«ããã¯ãç¹å®ããããã«ãã¢ããªã±ãŒã·ã§ã³ã®ãªãœãŒã¹æ¶è²»ãç£èŠããŠãã ããããããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠã䞊è¡ã€ãã¬ãŒã¿ã®ããã©ãŒãã³ã¹ãåæããæé©åã®äœå°ãããé åãç¹å®ããŸãã
- åªçæ§ïŒã¹ããšãããïŒïŒ æäœãå€éšAPIãåŒã³åºãå Žåãå®å šã«ãªãã©ã€ã§ããããã«åªçã§ããããšã確èªããŠãã ãããããã¯ãäœåºŠå®è¡ãããŠãåãçµæãçã¿åºãã¹ãã§ããããšãæå³ããŸãã
- ã³ã³ããã¹ãã¹ã€ããã³ã°ïŒ JavaScriptã¯ã·ã³ã°ã«ã¹ã¬ããã§ãããåºç€ãšãªãã©ã³ã¿ã€ã ç°å¢ïŒNode.jsããã©ãŠã¶ïŒã¯ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãã£ãŠåŠçãããéåæI/Oæäœã䜿çšããŸããéåææäœéã®é床ãªã³ã³ããã¹ãã¹ã€ããã³ã°ã¯ãäŸç¶ãšããŠããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸããäžŠè¡æ§ãšã³ã³ããã¹ãã¹ã€ããã³ã°ã®ãªãŒããŒããããæå°éã«æãããã©ã³ã¹ãç®æããŠãã ããã
䞊è¡ã€ãã¬ãŒã¿ã®ä»£æ¿ææ®µ
䞊è¡ã€ãã¬ãŒã¿ã¯JavaScriptã«ããã䞊ååŠçã«æè»ã§åŒ·åãªã¢ãããŒããæäŸããŸãããç¥ã£ãŠããã¹ã代æ¿ã¢ãããŒãããããŸãïŒ
- Web WorkerïŒ Web Workerã䜿çšãããšãå¥ã®ã¹ã¬ããã§JavaScriptã³ãŒããå®è¡ã§ããŸããããã¯ãã¡ã€ã³ã¹ã¬ããããããã¯ããããšãªãèšç®éã®å€ãã¿ã¹ã¯ãå®è¡ããã®ã«åœ¹ç«ã¡ãŸãããã ããWeb Workerã«ã¯ã¡ã€ã³ã¹ã¬ãããšã®éä¿¡ãããŒã¿å ±æã«é¢ããŠå¶éããããŸããã¯ãŒã«ãŒãšã¡ã€ã³ã¹ã¬ããéã§å€§éã®ããŒã¿ã転éããã®ã¯ã³ã¹ãããããå ŽåããããŸãã
- ã¯ã©ã¹ã¿ (Node.js)ïŒ Node.jsã§ã¯ã
cluster
ã¢ãžã¥ãŒã«ã䜿çšããŠãåããµãŒããŒããŒããå ±æããè€æ°ã®ããã»ã¹ãäœæã§ããŸããããã«ãããè€æ°ã®CPUã³ã¢ã掻çšããã¢ããªã±ãŒã·ã§ã³ã®ã¹ã±ãŒã©ããªãã£ãåäžãããããšãã§ããŸããããããè€æ°ã®ããã»ã¹ã®ç®¡çã¯ã䞊è¡ã€ãã¬ãŒã¿ã䜿çšãããããè€éã«ãªãããšããããŸãã - ã©ã€ãã©ãªïŒ RxJSãLodashãAsync.jsãªã©ãããã€ãã®JavaScriptã©ã€ãã©ãªã¯äžŠååŠçã®ããã®ãŠãŒãã£ãªãã£ãæäŸããŠããŸãããããã®ã©ã€ãã©ãªã¯ã䞊è¡ã€ãã¬ãŒã·ã§ã³ããã®ä»ã®äžŠååŠçãã¿ãŒã³ã®å®è£ ãç°¡çŽ åã§ããŸãã
- ãµãŒããŒã¬ã¹é¢æ°ïŒäŸïŒAWS LambdaãGoogle Cloud FunctionsãAzure FunctionsïŒïŒ èšç®éã®å€ãã¿ã¹ã¯ãã䞊åã§å®è¡ã§ãããµãŒããŒã¬ã¹é¢æ°ã«ãªãããŒãããŸããããã«ãããéèŠã«åºã¥ããŠåŠçèœåãåçã«ã¹ã±ãŒãªã³ã°ãããµãŒããŒç®¡çã®ãªãŒããŒããããåé¿ã§ããŸãã
é«åºŠãªãã¯ããã¯
ããã¯ãã¬ãã·ã£ãŒ
ããŒã¿ã®çæé床ãããŒã¿ã®æ¶è²»é床ãäžåãã·ããªãªã§ã¯ãã·ã¹ãã ã®éè² è·ãé²ãããã«ããã¯ãã¬ãã·ã£ãŒãéèŠãªãã¯ããã¯ã§ããããã¯ãã¬ãã·ã£ãŒã«ãããã³ã³ã·ã¥ãŒããŒã¯ãããã¥ãŒãµãŒã«å¯ŸããŠããŒã¿æŸåºã®é床ãèœãšãããä¿¡å·ãéãããšãã§ããŸããããã¯ã次ã®ãããªãã¯ããã¯ã䜿çšããŠå®è£ ã§ããŸãïŒ
- ã¬ãŒãå¶éïŒ åäœæéãããã«å€éšAPIã«éä¿¡ããããªã¯ãšã¹ãã®æ°ãå¶éããŸãã
- ãããã¡ãªã³ã°ïŒ åŠçã§ãããŸã§åä¿¡ããŒã¿ããããã¡ãªã³ã°ããŸãããã ããã¡ã¢ãªã®åé¡ãé¿ããããã«ãããã¡ãµã€ãºã«æ³šæããŠãã ããã
- ããããã³ã°ïŒç Žæ£ïŒïŒ ã·ã¹ãã ãéè² è·ã®å Žåãåä¿¡ããŒã¿ãç Žæ£ããŸããããã¯æåŸã®ææ®µã§ãããã·ã¹ãã ã®ã¯ã©ãã·ã¥ãé²ãããã«å¿ èŠã«ãªãå ŽåããããŸãã
- ã·ã°ãã«ïŒ ãããã¥ãŒãµãŒãšã³ã³ã·ã¥ãŒããŒéã§éä¿¡ããããŒã¿ã®æµãã調æŽããããã«ã·ã°ãã«ïŒäŸïŒã€ãã³ããã³ãŒã«ããã¯ïŒã䜿çšããŸãã
ãã£ã³ã»ã«åŠç
å Žåã«ãã£ãŠã¯ãé²è¡äžã®éåææäœããã£ã³ã»ã«ããå¿ èŠããããããããŸãããäŸãã°ããŠãŒã¶ãŒããªã¯ãšã¹ãããã£ã³ã»ã«ããå ŽåãäžèŠãªåŠçãé²ãããã«å¯Ÿå¿ããéåææäœããã£ã³ã»ã«ãããã§ãããããã£ã³ã»ã«åŠçã¯ã次ã®ãããªãã¯ããã¯ã䜿çšããŠå®è£ ã§ããŸãïŒ
- AbortController (Fetch API)ïŒ
AbortController
ã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšãããšãfetchãªã¯ãšã¹ããäžæ¢ã§ããŸãã - ãã£ã³ã»ã«ããŒã¯ã³ïŒ ãã£ã³ã»ã«ããŒã¯ã³ã䜿çšããŠãéåææäœã«ãã£ã³ã»ã«ãã¹ãã§ããããšãç¥ãããŸãã
- ãã£ã³ã»ã«ãµããŒãä»ãPromiseïŒ äžéšã®Promiseã©ã€ãã©ãªã¯ããã£ã³ã»ã«åŠçãçµã¿èŸŒã¿ã§ãµããŒãããŠããŸãã
å®äžçã®äŸ
- Eã³ããŒã¹ãã©ãããã©ãŒã ïŒ ãŠãŒã¶ãŒã®é²èЧ履æŽã«åºã¥ããŠååã®ãããããçæããã䞊è¡ã€ãã¬ãŒã·ã§ã³ã䜿çšããŠãè€æ°ã®ãœãŒã¹ïŒäŸïŒååã«ã¿ãã°ããŠãŒã¶ãŒãããã¡ã€ã«ãéå»ã®è³Œå ¥å±¥æŽïŒããããŒã¿ãååŸãã䞊è¡ããŠãããããèšç®ã§ããŸãã
- ãœãŒã·ã£ã«ã¡ãã£ã¢åæïŒ ãœãŒã·ã£ã«ã¡ãã£ã¢ã®ãã£ãŒããåæããŠãã¬ã³ãã®ãããã¯ãç¹å®ããã䞊è¡ã€ãã¬ãŒã·ã§ã³ã䜿çšããŠãè€æ°ã®ãœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ããããŒã¿ãååŸãã䞊è¡ããŠããŒã¿ãåæã§ããŸããæ©æ¢°ç¿»èš³ã䜿çšããŠç°ãªãèšèªã®æçš¿ãååŸããææ ãåæã«åæããããšãèããããŸãã
- éèã¢ããªã³ã°ïŒ ãªã¹ã¯ãè©äŸ¡ããããã«éèã·ããªãªãã·ãã¥ã¬ãŒã·ã§ã³ããã䞊è¡ã€ãã¬ãŒã·ã§ã³ã䜿çšããŠãè€æ°ã®ã·ãã¥ã¬ãŒã·ã§ã³ã䞊è¡ããŠå®è¡ããçµæãéçŽã§ããŸãã
- ç§åŠèšç®ïŒ ç§åŠç ç©¶ã«ãããã·ãã¥ã¬ãŒã·ã§ã³ãããŒã¿åæãå®è¡ããã䞊è¡ã€ãã¬ãŒã·ã§ã³ã䜿çšããŠãå€§èŠæš¡ãªããŒã¿ã»ãããåŠçããè€éãªã·ãã¥ã¬ãŒã·ã§ã³ã䞊è¡ããŠå®è¡ã§ããŸãã
- ã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯ïŒCDNïŒïŒ ãã°ãã¡ã€ã«ãåŠçããŠã³ã³ãã³ãã®ã¢ã¯ã»ã¹ãã¿ãŒã³ãç¹å®ãããã£ãã·ã³ã°ãšé ä¿¡ãæé©åããã䞊è¡ã€ãã¬ãŒã·ã§ã³ã¯ãè€æ°ã®ãµãŒããŒããã®å€§ããªãã¡ã€ã«ã䞊è¡ããŠåæã§ããããã«ããããšã§ãåæãé«éåã§ããŸãã
çµè«
䞊è¡ã€ãã¬ãŒã¿ã¯ãJavaScriptã«ããã䞊ååŠçã®ããã®åŒ·åã§æè»ãªã¢ãããŒããæäŸããŸããéåææäœãšäžŠè¡æ§å¶åŸ¡ã¡ã«ããºã ãæŽ»çšããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãå¿çæ§ãã¹ã±ãŒã©ããªãã£ãå€§å¹ ã«åäžãããããšãã§ããŸãã䞊è¡ã€ãã¬ãŒã·ã§ã³ã®ååãçè§£ãã广çã«é©çšããããšã¯ãçŸä»£ã®é«æ§èœãªJavaScriptã¢ããªã±ãŒã·ã§ã³ãéçºããäžã§ç«¶äºäžã®åªäœæ§ããããããŸããæé©ãªããã©ãŒãã³ã¹ãšå®å®æ§ã確ä¿ããããã«ã䞊è¡ã¬ãã«ããšã©ãŒãã³ããªã³ã°ããªãœãŒã¹æ¶è²»ãåžžã«æ éã«èæ ®ããããšãå¿ããªãã§ãã ããã䞊è¡ã€ãã¬ãŒã¿ã®åãæŽ»çšããŠã䞊ååŠçã«ãããJavaScriptã®æœåšèœåãæå€§éã«åŒãåºããŸãããã