JavaScriptã®äžŠåããŒã¿åŠçã«ããã䞊åãããã®åãæ¢æ±ããŸããè€éãªã¢ããªã±ãŒã·ã§ã³ã§ããã©ãŒãã³ã¹ãåäžãããããã«ã广çã«å®è£ ã䜿çšããæ¹æ³ãåŠã³ãŸãããã
JavaScript䞊åãããïŒäžŠåããŒã¿åŠçã®è§£ãæŸã¡
çŸä»£ã®ãŠã§ãéçºãšãµãŒããŒãµã€ãã¢ããªã±ãŒã·ã§ã³ã®äžçã§ã¯ãå¹ççãªããŒã¿åŠçãæéèŠèª²é¡ã§ãã äŒçµ±çã«ã·ã³ã°ã«ã¹ã¬ãããšããŠç¥ãããŠããJavaScriptã¯ãåæå®è¡ã䞊ååŠçãªã©ã®æè¡ãéããŠãé©ãã¹ãããã©ãŒãã³ã¹åäžãå®çŸã§ããŸãã ãã®åãçµã¿ã«åœ¹ç«ã€åŒ·åãªããŒã«ã®äžã€ãã䞊åãããã§ãã ããã¯ãè€æ°ã®ã¹ã¬ãããŸãã¯éåææäœéã§ãå®å šãã€å¹ççãªããŒã¿ã®ã¢ã¯ã»ã¹ãšæäœãè¡ãããã«èšèšãããããŒã¿æ§é ã§ãã
䞊åãããã®å¿ èŠæ§ã®çè§£
JavaScriptã®ã·ã³ã°ã«ã¹ã¬ããã€ãã³ãã«ãŒãã¯ãéåææäœã®åŠçã«åªããŠããŸãã ããããèšç®éã®å€ãã¿ã¹ã¯ãããŒã¿éã®å€ãæäœãæ±ãå Žåãã€ãã³ãã«ãŒãã ãã«é Œããšããã«ããã¯ã«ãªãå¯èœæ§ããããŸãã éèååŒãã©ãããã©ãŒã ãç§åŠã·ãã¥ã¬ãŒã·ã§ã³ãå ±åããã¥ã¡ã³ããšãã£ã¿ãŒãªã©ãå€§èŠæš¡ãªããŒã¿ã»ããããªã¢ã«ã¿ã€ã ã§åŠçããã¢ããªã±ãŒã·ã§ã³ãæ³åããŠã¿ãŠãã ããã ãããã®ã·ããªãªã§ã¯ãè€æ°ã®CPUã³ã¢ãŸãã¯éåæå®è¡ã³ã³ããã¹ãã®åãæŽ»çšããŠãæäœãåæå®è¡ã§ããèœåãæ±ããããŸãã
æšæºçãªJavaScriptãªããžã§ã¯ããšçµã¿èŸŒã¿ã®`Map`ããŒã¿æ§é ã¯ãæ¬è³ªçã«ã¹ã¬ããã»ãŒãã§ã¯ãããŸããã è€æ°ã®ã¹ã¬ãããŸãã¯éåææäœããæšæºã®`Map`ãåæã«å€æŽããããšãããšãç«¶åç¶æ ãããŒã¿ç Žæãããã³äºæž¬äžå¯èœãªåäœã«ã€ãªããå¯èœæ§ããããŸãã ããã§ã䞊åããããç»å Žããå ±æããŒã¿ãžã®å®å šãã€å¹ççãªåæã¢ã¯ã»ã¹ãå®çŸããããã®ã¡ã«ããºã ãæäŸããŸãã
䞊åããããšã¯ïŒ
䞊åãããã¯ãè€æ°ã®ã¹ã¬ãããŸãã¯éåææäœããäºãã«å¹²æžããããšãªããããŒã¿ãåæã«èªã¿æžãã§ããããŒã¿æ§é ã§ãã ããã¯ã以äžãå«ãããŸããŸãªæè¡ãéããŠå®çŸãããŸãã
- ã¢ãããã¯æäœïŒäžŠåãããã¯ãå®å šã«å®äºãããããŸã£ããå®äºããªãäžå¯åã®æäœã§ããã¢ãããã¯æäœã䜿çšããŸãã ããã«ãããè€æ°ã®æäœãåæã«çºçããå Žåã§ããããŒã¿å€æŽãäžè²«ããŠããããšãä¿èšŒãããŸãã
- ããã¯æ©æ§ïŒäžŠåãããã®äžéšã®å®è£ ã§ã¯ããã¥ãŒããã¯ã¹ãã»ããã©ãªã©ã®ããã¯æ©æ§ãæ¡çšããŠããããã®ç¹å®ã®éšåãžã®ã¢ã¯ã»ã¹ãå¶åŸ¡ããŸãã ããã«ãããè€æ°ã®ã¹ã¬ãããåãããŒã¿ãåæã«å€æŽããããšãé²ããŸãã
- ãªããã£ãã¹ãã£ãã¯ããã¯ïŒæä»çããã¯ãååŸãã代ããã«ããªããã£ãã¹ãã£ãã¯ããã¯ã¯ãç«¶åããŸãã§ãããšä»®å®ããŸãã 倿Žãã³ãããããåã«ãä»ã®ã¹ã¬ããã«ãã£ãŠè¡ããã倿Žã確èªããç«¶åãæ€åºãããå Žåã¯æäœãå詊è¡ããŸãã
- ã³ããŒãªã³ã©ã€ãïŒãã®ææ³ã¯ã倿Žãè¡ããããã³ã«ãããã®ã³ããŒãäœæããŸãã ããã«ããããªãŒããŒã¯åžžã«ããŒã¿ã®æŽåæ§ã®ããã¹ãããã·ã§ããã衚瀺ããã©ã€ã¿ãŒã¯å¥ã®ã³ããŒã§æäœãè¡ããŸãã
JavaScriptã§ã®äžŠåãããã®å®è£
JavaScriptã«ã¯çµã¿èŸŒã¿ã®äžŠåãããããŒã¿æ§é ã¯ãããŸããããããŸããŸãªã¢ãããŒãã䜿çšããŠå®è£ ã§ããŸãã ããã€ãã®äžè¬çãªæ¹æ³ã以äžã«ç€ºããŸãã
1. AtomicsãšSharedArrayBufferã®äœ¿çš
`Atomics` APIãš`SharedArrayBuffer`ã¯ãJavaScript Web Workersã§è€æ°ã®ã¹ã¬ããéã§ã¡ã¢ãªãå ±æããæ¹æ³ãæäŸããŸãã ããã«ãããè€æ°ã®ã¯ãŒã«ãŒãã¢ã¯ã»ã¹ããŠå€æŽã§ãã䞊åããããäœæã§ããŸãã
äŸïŒ
ãã®äŸã§ã¯ã`Atomics`ãš`SharedArrayBuffer`ã䜿çšããåºæ¬çãªäžŠåãããã瀺ããŸãã ããŒã¿ã®æŽåæ§ã確ä¿ããããã«ãåçŽãªããã¯æ©æ§ãå©çšããŠããŸãã ãã®ã¢ãããŒãã¯ãäžè¬çã«è€éã§ãWeb Workersã«ããçã®äžŠååŠçãå¿ èŠãªã·ããªãªã«é©ããŠããŸãã
class ConcurrentMap {
constructor(size) {
this.buffer = new SharedArrayBuffer(size * 8); // 8 bytes per number (64-bit Float64)
this.data = new Float64Array(this.buffer);
this.locks = new Int32Array(new SharedArrayBuffer(size * 4)); // 4 bytes per lock (32-bit Int32)
this.size = size;
}
acquireLock(index) {
while (Atomics.compareExchange(this.locks, index, 0, 1) !== 0) {
Atomics.wait(this.locks, index, 1, 100); // Wait with timeout
}
}
releaseLock(index) {
Atomics.store(this.locks, index, 0);
Atomics.notify(this.locks, index, 1);
}
set(key, value) {
const index = this.hash(key) % this.size;
this.acquireLock(index);
this.data[index] = value;
this.releaseLock(index);
}
get(key) {
const index = this.hash(key) % this.size;
this.acquireLock(index); // Still need a lock for safe read in some cases
const value = this.data[index];
this.releaseLock(index);
return value;
}
hash(key) {
// Simple hash function (replace with a better one for real-world use)
let hash = 0;
const keyString = String(key);
for (let i = 0; i < keyString.length; i++) {
hash = (hash << 5) - hash + keyString.charCodeAt(i);
hash |= 0; // Convert to 32bit integer
}
return Math.abs(hash);
}
}
// Example usage (in a Web Worker):
// Create a SharedArrayBuffer
const buffer = new SharedArrayBuffer(1024);
// Create a ConcurrentMap in each worker
const map = new ConcurrentMap(100);
// Set a value
map.set("key1", 123);
// Get a value
const value = map.get("key1");
console.log("Value:", value); // Output: Value: 123
éèŠãªèæ ®äºé ïŒ
- ããã·ã¥ïŒäŸã®`hash`颿°ã¯éåžžã«åºæ¬çãªãã®ã§ãããè¡çªãçºçãããããªã£ãŠããŸãã å®çšçãªäœ¿çšã«ã¯ãMurmurHash3ãªã©ã®å ç¢ãªããã·ã¥ã¢ã«ãŽãªãºã ãäžå¯æ¬ ã§ãã
- è¡çªåŠçïŒãã®äŸã§ã¯ãè¡çªã¯åŠçãããŸããã å®éã®å®è£ ã§ã¯ãé£éããªãŒãã³ã¢ãã¬ãã·ã³ã°ãªã©ã®ææ³ã䜿çšããŠãè¡çªã解決ããå¿ èŠããããŸãã
- Web WorkersïŒãã®ã¢ãããŒãã§ã¯ãçã®äžŠååŠçãå®çŸããããã«Web Workersã䜿çšããå¿ èŠããããŸãã ã¡ã€ã³ã¹ã¬ãããšã¯ãŒã«ãŒ ã¹ã¬ããã¯ã`SharedArrayBuffer`ãå ±æã§ããŸãã
- ããŒã¿åïŒäŸã®`Float64Array`ã¯æ°å€ããŒã¿ã«éå®ãããŠããŸãã ä»»æã®ããŒã¿åãæ ŒçŽããã«ã¯ãå€ãèšå®ããã³ååŸãããšãã«ããŒã¿ãã·ãªã¢ã«åããã³éã·ãªã¢ã«åããå¿ èŠããããŸããããã«ãããè€éããå¢ããŸãã
2. éåææäœãšåäžã¹ã¬ããã®äœ¿çš
åäžã¹ã¬ããå ã§ãã£ãŠããéåææäœïŒäŸïŒ`async/await`ã`Promises`ïŒã䜿çšããŠåæå®è¡ãã·ãã¥ã¬ãŒãã§ããŸãã ãã®ã¢ãããŒãã¯çã®äžŠååŠçãæäŸããŸããããããããã³ã°æäœãåé¿ããããšã§å¿çæ§ãåäžãããããšãã§ããŸãã ãã®ã·ããªãªã§ã¯ãéåžžã®JavaScript `Map`ãããã¥ãŒããã¯ã¹ïŒPromiseã䜿çšããŠå®è£ ïŒãªã©ã®ææ³ã䜿çšããæ³šææ·±ãåæãšçµã¿åãããããšã§ãããçšåºŠã®åæå®è¡ãæäŸã§ããŸãã
äŸïŒ
class AsyncMutex {
constructor() {
this.locked = false;
this.queue = [];
}
lock() {
return new Promise((resolve) => {
if (!this.locked) {
this.locked = true;
resolve();
} else {
this.queue.push(resolve);
}
});
}
unlock() {
if (this.queue.length > 0) {
const next = this.queue.shift();
next();
} else {
this.locked = false;
}
}
}
class ConcurrentMap {
constructor() {
this.map = new Map();
this.mutex = new AsyncMutex();
}
async set(key, value) {
await this.mutex.lock();
try {
this.map.set(key, value);
} finally {
this.mutex.unlock();
}
}
async get(key) {
await this.mutex.lock();
try {
return this.map.get(key);
} finally {
this.mutex.unlock();
}
}
}
// Example Usage:
async function example() {
const map = new ConcurrentMap();
// Simulate concurrent operations
const promises = [
map.set("key1", 123),
map.set("key2", 456),
map.get("key1"),
];
const results = await Promise.all(promises);
console.log("Results:", results); // Results: [undefined, undefined, 123]
}
example();
説æïŒ
- AsyncMutexïŒãã®ã¯ã©ã¹ã¯ãPromiseã䜿çšããŠåçŽãªéåæãã¥ãŒããã¯ã¹ãå®è£ ããŸãã äžåºŠã«1ã€ã®æäœã®ã¿ã`Map`ã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãã
- ConcurrentMapïŒãã®ã¯ã©ã¹ã¯ãæšæºã®JavaScript `Map`ãã©ãããã`AsyncMutex`ã䜿çšããŠãããžã®ã¢ã¯ã»ã¹ãåæããŸãã `set`ã¡ãœãããš`get`ã¡ãœããã¯éåæã§ããããããã«ã¢ã¯ã»ã¹ããåã«ãã¥ãŒããã¯ã¹ãååŸããŸãã
- äŸã®äœ¿çšæ³ïŒãã®äŸã¯ãéåææäœã§`ConcurrentMap`ã䜿çšããæ¹æ³ã瀺ããŠããŸãã `Promise.all`颿°ã¯ãåææäœãã·ãã¥ã¬ãŒãããŸãã
3. ã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯
ããã€ãã®JavaScriptã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ã¯ãåæå®è¡ãšäžŠååŠçã®çµã¿èŸŒã¿ãŸãã¯ã¢ããªã³ãµããŒããæäŸããŸãã ãããã®ã©ã€ãã©ãªã¯ãå€ãã®å Žåã䞊åãããããã³é¢é£ããŒã¿æ§é ã®ããé«åºŠãªæœè±¡åãšæé©åãããå®è£ ãæäŸããŸãã
- Immutable.jsïŒå³å¯ã«ã¯äžŠåãããã§ã¯ãããŸããããImmutable.jsã¯ã€ãã¥ãŒã¿ãã«ãªããŒã¿æ§é ãæäŸããŸãã ã€ãã¥ãŒã¿ãã«ãªããŒã¿æ§é ã¯ã倿ŽãããŒã¿ã®æ°ããç¬ç«ããã³ããŒãäœæãããããæç€ºçãªããã¯ã®å¿ èŠæ§ãåé¿ããŸãã ããã«ãããåæå®è¡ããã°ã©ãã³ã°ãç°¡çŽ åãããå¯èœæ§ããããŸãã
- RxJSïŒJavaScriptã®ãªã¢ã¯ãã£ãæ¡åŒµïŒïŒRxJSã¯ãObservablesã䜿çšãããªã¢ã¯ãã£ãããã°ã©ãã³ã°çšã®ã©ã€ãã©ãªã§ãã ããŒã¿ã¹ããªãŒã ã®åæå®è¡ããã³äžŠååŠççšã®æŒç®åãæäŸããŸãã
- Node.js Clusterã¢ãžã¥ãŒã«ïŒNode.jsã®`cluster`ã¢ãžã¥ãŒã«ã䜿çšãããšããµãŒããŒããŒããå ±æããè€æ°ã®Node.jsããã»ã¹ãäœæã§ããŸãã ããã䜿çšããŠãã¯ãŒã¯ããŒããè€æ°ã®CPUã³ã¢ã«åæ£ã§ããŸãã `cluster`ã¢ãžã¥ãŒã«ã䜿çšããå Žåãããã»ã¹éã§ããŒã¿ãå ±æããã«ã¯ãéåžžãããã»ã¹ééä¿¡ïŒIPCïŒãå¿ èŠã§ãããç¬èªã®ããã©ãŒãã³ã¹ã«é¢ããèæ ®äºé ããããŸãã IPCãä»ããŠå ±æããã«ã¯ãããŒã¿ãã·ãªã¢ã«å/éã·ãªã¢ã«åããå¿ èŠãããå¯èœæ§ããããŸãã
䞊åãããã®ãŠãŒã¹ã±ãŒã¹
䞊åãããã¯ãåæããŒã¿ã¢ã¯ã»ã¹ãšæäœãå¿ èŠãªå¹ åºãã¢ããªã±ãŒã·ã§ã³ã§åœ¹ç«ã¡ãŸãã
- ãªã¢ã«ã¿ã€ã ããŒã¿åŠçïŒéèååŒãã©ãããã©ãŒã ãIoTã»ã³ãµãŒãããã¯ãŒã¯ããœãŒã·ã£ã«ã¡ãã£ã¢ãã£ãŒããªã©ããªã¢ã«ã¿ã€ã ããŒã¿ã¹ããªãŒã ãåŠçããã¢ããªã±ãŒã·ã§ã³ã¯ã䞊åãããã䜿çšããŠåææŽæ°ãšã¯ãšãªãåŠçããããšã§ã¡ãªãããåŸãããšãã§ããŸãã
- ç§åŠã·ãã¥ã¬ãŒã·ã§ã³ïŒè€éãªèšç®ãšããŒã¿äŸåé¢ä¿ãå«ãã·ãã¥ã¬ãŒã·ã§ã³ã§ã¯ã䞊åãããã䜿çšããŠãã¯ãŒã¯ããŒããè€æ°ã®ã¹ã¬ãããŸãã¯ããã»ã¹ã«åæ£ã§ããŸãã ããšãã°ã倩æ°äºå ±ã¢ãã«ãåååååŠã·ãã¥ã¬ãŒã·ã§ã³ãèšç®æµäœååŠãœã«ããŒãªã©ã§ãã
- å ±åã¢ããªã±ãŒã·ã§ã³ïŒå ±åããã¥ã¡ã³ããšãã£ã¿ãŒããªã³ã©ã€ã³ã²ãŒã ãã©ãããã©ãŒã ããããžã§ã¯ã管çããŒã«ã¯ã䞊åãããã䜿çšããŠå ±æããŒã¿ã管çããè€æ°ã®ãŠãŒã¶ãŒéã§äžè²«æ§ã確ä¿ã§ããŸãã
- ãã£ãã·ã³ã°ã·ã¹ãã ïŒãã£ãã·ã³ã°ã·ã¹ãã ã¯ã䞊åãããã䜿çšããŠããã£ãã·ã¥ãããããŒã¿ãåæã«ä¿åããã³ååŸã§ããŸãã ããã«ãããåãããŒã¿ã«é »ç¹ã«ã¢ã¯ã»ã¹ããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžããå¯èœæ§ããããŸãã
- WebãµãŒããŒãšAPIïŒãã©ãã£ãã¯éã®å€ãWebãµãŒããŒãšAPIã¯ã䞊åãããã䜿çšããŠãã»ãã·ã§ã³ããŒã¿ããŠãŒã¶ãŒãããã¡ã€ã«ãããã³ãã®ä»ã®å ±æãªãœãŒã¹ãåæã«ç®¡çã§ããŸãã ããã«ãããããã©ãŒãã³ã¹ãäœäžãããããšãªãã倿°ã®åæãªã¯ãšã¹ããåŠçã§ããŸãã
䞊åãããã䜿çšããããšã®å©ç¹
䞊åãããã䜿çšãããšãåæå®è¡ç°å¢ã§åŸæ¥ã®ããŒã¿æ§é ãããããã€ãã®å©ç¹ããããŸãã
- ããã©ãŒãã³ã¹ã®åäžïŒäžŠåãããã¯äžŠååŠçãå¯èœã«ããå€§èŠæš¡ãªããŒã¿ã»ãããŸãã¯è€éãªèšç®ãåŠçããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã
- æ¡åŒµæ§ã®åäžïŒäžŠåãããã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ã¯ã¯ãŒã¯ããŒããè€æ°ã®ã¹ã¬ãããŸãã¯ããã»ã¹ã«åæ£ããããšã§ãããç°¡åã«æ¡åŒµã§ããŸãã
- ããŒã¿ã®æŽåæ§ïŒäžŠåãããã¯ãç«¶åç¶æ ãããŒã¿ç Žæãé²ãããšã§ããŒã¿ã®æŽåæ§ã確ä¿ããŸãã
- å¿çæ§ã®åäžïŒäžŠåãããã¯ãããããã³ã°æäœã鲿¢ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ãåäžãããããšãã§ããŸãã
- åæå®è¡ç®¡çã®ç°¡çŽ åïŒäžŠåãããã¯ãåæå®è¡ã管çããããã®ããé«åºŠãªæœè±¡åãæäŸããåæå®è¡ããã°ã©ãã³ã°ã®è€éãã軜æžããŸãã
課é¡ãšèæ ®äºé
䞊åãããã¯å€§ããªã¡ãªããããããããŸãããç¹å®ã®èª²é¡ãšèæ ®äºé ãå°å ¥ããŸãã
- è€éãïŒäžŠåãããã®å®è£ ãšäœ¿çšã¯ãåŸæ¥ã®ããŒã¿æ§é ã䜿çšãããããè€éã«ãªãå¯èœæ§ããããŸãã
- ãªãŒããŒãããïŒäžŠåãããã¯ãåæã¡ã«ããºã ã«ãããããçšåºŠã®ãªãŒããŒããããå°å ¥ããŸãã ãã®ãªãŒããŒãããã¯ãæ éã«ç®¡çããªããšãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
- ãããã°ïŒåæå®è¡ã³ãŒãã®ãããã°ã¯ãã·ã³ã°ã«ã¹ã¬ããã³ãŒãã®ãããã°ãããå°é£ã«ãªãå¯èœæ§ããããŸãã
- é©åãªå®è£ ã®éžæïŒå®è£ ã®éžæã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®èŠä»¶ã«ãã£ãŠç°ãªããŸãã èæ ®ãã¹ãèŠçŽ ã«ã¯ãåæå®è¡ã®ã¬ãã«ãããŒã¿ã®ãµã€ãºãããã³ããã©ãŒãã³ã¹èŠä»¶ãå«ãŸããŸãã
- ãããããã¯ïŒããã¯æ©æ§ã䜿çšããå Žåãã¹ã¬ãããäºãã«ããã¯ã®è§£æŸãåŸ æ©ããŠãããšããããããã¯ã®ãªã¹ã¯ããããŸãã ãããããã¯ãåé¿ããã«ã¯ãæ éãªèšèšãšããã¯ã®é åºä»ããäžå¯æ¬ ã§ãã
䞊åãããã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
䞊åãããã广çã«äœ¿çšããã«ã¯ã次ã®ãã¹ããã©ã¯ãã£ã¹ãæ€èšããŠãã ããã
- é©åãªå®è£ ã®éžæïŒç¹å®ã®ãŠãŒã¹ã±ãŒã¹ãšããã©ãŒãã³ã¹èŠä»¶ã«é©ããå®è£ ãéžæããŸãã ããŸããŸãªåæææ³éã®ãã¬ãŒããªããèæ ®ããŠãã ããã
- ããã¯ç«¶åãæå°éã«æããïŒãã现ããããã¯ãŸãã¯ããã¯ããªãŒããŒã¿æ§é ã䜿çšããŠãããã¯ç«¶åãæå°éã«æããããã«ã¢ããªã±ãŒã·ã§ã³ãèšèšããŸãã
- ãããããã¯ãåé¿ããïŒé©åãªããã¯ã®é åºä»ããšã¿ã€ã ã¢ãŠãã¡ã«ããºã ãå®è£ ããŠããããããã¯ã鲿¢ããŸãã
- 培åºçã«ãã¹ãããïŒåæå®è¡ã³ãŒãã培åºçã«ãã¹ãããŠãç«¶åç¶æ ããã®ä»ã®åæå®è¡é¢é£ã®åé¡ãç¹å®ããŠä¿®æ£ããŸãã ã¹ã¬ãããµãã¿ã€ã¶ãŒãåæå®è¡ãã¹ããã¬ãŒã ã¯ãŒã¯ãªã©ã®ããŒã«ã䜿çšããŠããããã®åé¡ãæ€åºããã®ã«åœ¹ç«ãŠãŠãã ããã
- ããã©ãŒãã³ã¹ãç£èŠããïŒåæå®è¡ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãç£èŠããŠãããã«ããã¯ãç¹å®ãããªãœãŒã¹ã®äœ¿çšãæé©åããŸãã
- ã¢ãããã¯æäœãè³¢ã䜿çšããïŒã¢ãããã¯æäœã¯äžå¯æ¬ ã§ããã䜿ãããããšãªãŒããŒããããçºçããå¯èœæ§ããããŸãã ããŒã¿ã®æŽåæ§ã確ä¿ããããã«ãå¿ èŠãªå Žæã§æŠç¥çã«äœ¿çšããŠãã ããã
- ã€ãã¥ãŒã¿ãã«ãªããŒã¿æ§é ãæ€èšããïŒé©åãªå Žåã¯ãæç€ºçãªããã¯ã®ä»£ããã«ã€ãã¥ãŒã¿ãã«ãªããŒã¿æ§é ã䜿çšããããšãæ€èšããŠãã ããã ã€ãã¥ãŒã¿ãã«ãªããŒã¿æ§é ã¯ãåæå®è¡ããã°ã©ãã³ã°ãç°¡çŽ åããããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
䞊åãããã®äœ¿çšäŸïŒã°ããŒãã«ïŒ
䞊åããããå«ã䞊åããŒã¿æ§é ã®äœ¿çšã¯ãäžçäžã®ããŸããŸãªæ¥çãå°åã§æ®åããŠããŸãã ããã€ãã®äŸã次ã«ç€ºããŸãã
- éèååŒãã©ãããã©ãŒã ïŒã°ããŒãã«ïŒïŒé«é »åºŠååŒã·ã¹ãã ã«ã¯ãéåžžã«äœãã¬ã€ãã³ã·ãšé«ãã¹ã«ãŒããããå¿ èŠã§ãã 䞊åãããã¯ãæ³šææ¿ãåžå ŽããŒã¿ãããã³ããŒããã©ãªãªæ å ±ãåæå®è¡ã§ç®¡çããããã«äœ¿çšãããè¿ éãªæææ±ºå®ãšå®è¡ãå¯èœã«ããŸãã ãã¥ãŒãšãŒã¯ããã³ãã³ãæ±äº¬ãã·ã³ã¬ããŒã«ãªã©ã®éèã®äžå¿å°ã«ããäŒæ¥ã¯ããããã®ææ³ã«å€§ããäŸåããŠããŸãã
- ãªã³ã©ã€ã³ã²ãŒã ïŒã°ããŒãã«ïŒïŒå€§èŠæš¡ãã«ããã¬ã€ã€ãŒãªã³ã©ã€ã³ã²ãŒã ïŒMMORPGïŒã¯ãæ°å人ãŸãã¯æ°çŸäžäººã®ãã¬ã€ã€ãŒã®ç¶æ ãåæã«ç®¡çããå¿ èŠããããŸãã 䞊åãããã¯ããã¬ã€ã€ãŒããŒã¿ãã²ãŒã ã¯ãŒã«ãæ å ±ãããã³ãã®ä»ã®å ±æãªãœãŒã¹ãæ ŒçŽããããã«äœ¿çšãããäžçäžã®ãã¬ã€ã€ãŒã«ã¹ã ãŒãºã§å¿çæ§ã®é«ãã²ãŒã äœéšãä¿èšŒããŸãã äŸã«ã¯ãéåœãç±³åœãäžåœãªã©ã®åœã§éçºãããã²ãŒã ãå«ãŸããŸãã
- ãœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ïŒã°ããŒãã«ïŒïŒãœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ã¯ãæçš¿ãã³ã¡ã³ãããããïŒãªã©ã倧éã®ãŠãŒã¶ãŒçæã³ã³ãã³ããåŠçããŸãã 䞊åãããã¯ããŠãŒã¶ãŒãããã¡ã€ã«ããã¥ãŒã¹ãã£ãŒããããã³ãã®ä»ã®å ±æããŒã¿ãåæå®è¡ã§ç®¡çããããã«äœ¿çšãããäžçäžã®ãŠãŒã¶ãŒã«ãªã¢ã«ã¿ã€ã ã®æŽæ°ãšããŒãœãã©ã€ãºããããšã¯ã¹ããªãšã³ã¹ãå¯èœã«ããŸãã
- Eã³ããŒã¹ãã©ãããã©ãŒã ïŒã°ããŒãã«ïŒïŒå€§èŠæš¡ãªeã³ããŒã¹ãã©ãããã©ãŒã ã§ã¯ãåšåº«ã泚æåŠçããŠãŒã¶ãŒã»ãã·ã§ã³ãåæã«ç®¡çããå¿ èŠããããŸãã 䞊åãããã䜿çšããŠããããã®ã¿ã¹ã¯ãå¹ççã«åŠçããäžçäžã®ã客æ§ã«ã¹ã ãŒãºãªã·ã§ããã³ã°äœéšãä¿èšŒã§ããŸãã AmazonïŒç±³åœïŒãAlibabaïŒäžåœïŒãFlipkartïŒã€ã³ãïŒãªã©ã®äŒæ¥ã¯ãè«å€§ãªååŒéãåŠçããŠããŸãã
- ç§åŠèšç®ïŒåœéç ç©¶ååïŒïŒå ±åç ç©¶ãããžã§ã¯ãã§ã¯ãäžçäžã®è€æ°ã®ç ç©¶æ©é¢ãšã³ã³ãã¥ãŒãã£ã³ã°ãªãœãŒã¹ã«ããã£ãŠèšç®ã¿ã¹ã¯ã忣ããããšããããããŸãã 䞊åããŒã¿æ§é ã¯ãå ±æããŒã¿ã»ãããšçµæã管çããããã«æ¡çšãããç ç©¶è ãè€éãªç§åŠçåé¡ã广çã«å ±åäœæ¥ã§ããããã«ããŸãã äŸã«ã¯ãã²ããã¯ã¹ãæ°åã¢ããªã³ã°ãããã³ç²åç©çåŠã®ãããžã§ã¯ããå«ãŸããŸãã
çµè«
䞊åãããã¯ã髿§èœã§ã¹ã±ãŒã©ãã«ã§ä¿¡é Œæ§ã®é«ãJavaScriptã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®åŒ·åãªããŒã«ã§ãã 䞊åããŒã¿ã¢ã¯ã»ã¹ãšæäœãå¯èœã«ããããšã«ããã䞊åãããã¯ãå€§èŠæš¡ãªããŒã¿ã»ãããŸãã¯è€éãªèšç®ãåŠçããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã 䞊åãããã®å®è£ ãšäœ¿çšã¯ãåŸæ¥ã®ããŒã¿æ§é ã䜿çšãããããè€éã«ãªãå¯èœæ§ããããŸãããããã©ãŒãã³ã¹ãæ¡åŒµæ§ãããã³ããŒã¿ã®æŽåæ§ã«é¢ããŠæäŸãããå©ç¹ã¯ãåæå®è¡ã¢ããªã±ãŒã·ã§ã³ã«åãçµãJavaScriptéçºè ã«ãšã£ãŠè²Žéãªè³ç£ã«ãªããŸãã ãã®èšäºã§èª¬æãããŠãããã¬ãŒããªããšãã¹ããã©ã¯ãã£ã¹ãçè§£ããããšã§ã䞊åãããã®åã广çã«æŽ»çšã§ããŸãã