JavaScriptãžã§ãã¬ãŒã¿ãŒé¢æ°ãšã€ãã¬ãŒã¿ãŒãããã³ã«ã®å æ¬çãªã¬ã€ããã«ã¹ã¿ã ã€ãã¬ãŒã¿ãŒãäœæããJavaScriptã¢ããªã±ãŒã·ã§ã³ã匷åããæ¹æ³ãåŠã³ãŸãã
JavaScriptãžã§ãã¬ãŒã¿ãŒé¢æ°ïŒã€ãã¬ãŒã¿ãŒãããã³ã«ã®ç¿åŸ
JavaScriptãžã§ãã¬ãŒã¿ãŒé¢æ°ã¯ãECMAScript 6ïŒES6ïŒã§å°å ¥ãããã€ãã¬ãŒã¿ãŒãããç°¡æœã§èªã¿ãããæ¹æ³ã§äœæããããã®åŒ·åãªã¡ã«ããºã ãæäŸããŸãããããã¯ã€ãã¬ãŒã¿ãŒãããã³ã«ãšã·ãŒã ã¬ã¹ã«çµ±åãããè€éãªããŒã¿æ§é ãéåææäœãç°¡åã«åŠçã§ããã«ã¹ã¿ã ã€ãã¬ãŒã¿ãŒãæ§ç¯ã§ããŸãããã®èšäºã§ã¯ããžã§ãã¬ãŒã¿ãŒé¢æ°ãã€ãã¬ãŒã¿ãŒãããã³ã«ãããã³ãããã®ã¢ããªã±ãŒã·ã§ã³ã瀺ãå®çšçãªäŸã®è€éããæãäžããŸãã
ã€ãã¬ãŒã¿ãŒãããã³ã«ã®çè§£
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã«å ¥ãåã«ãJavaScriptã®å埩å¯èœãªããŒã¿æ§é ã®åºç€ãšãªãã€ãã¬ãŒã¿ãŒãããã³ã«ãçè§£ããããšãéèŠã§ããã€ãã¬ãŒã¿ãŒãããã³ã«ã¯ããªããžã§ã¯ããå埩åŠçããæ¹æ³ãå®çŸ©ããŸããã€ãŸãããã®èŠçŽ ã«é çªã«ã¢ã¯ã»ã¹ã§ããŸãã
å埩å¯èœãããã³ã«
ãªããžã§ã¯ãã¯ã@@iteratorã¡ãœããïŒSymbol.iteratorïŒãå®è£
ããŠããå Žåãå埩å¯èœãšèŠãªãããŸãããã®ã¡ãœããã¯ãã€ãã¬ãŒã¿ãŒãªããžã§ã¯ããè¿ãå¿
èŠããããŸãã
åçŽãªå埩å¯èœãªããžã§ã¯ãã®äŸïŒ
const myIterable = {
data: [1, 2, 3],
[Symbol.iterator]() {
let index = 0;
return {
next() {
if (index < myIterable.data.length) {
return { value: myIterable.data[index++], done: false };
} else {
return { value: undefined, done: true };
}
}
};
}
};
for (const item of myIterable) {
console.log(item); // åºåïŒ1ã2ã3
}
ã€ãã¬ãŒã¿ãŒãããã³ã«
ã€ãã¬ãŒã¿ãŒãªããžã§ã¯ãã«ã¯ãnext()ã¡ãœãããå¿
èŠã§ããnext()ã¡ãœããã¯ã次ã®2ã€ã®ããããã£ãæã€ãªããžã§ã¯ããè¿ããŸãã
valueïŒã·ãŒã±ã³ã¹å ã®æ¬¡ã®å€ãdoneïŒã€ãã¬ãŒã¿ãŒãã·ãŒã±ã³ã¹ã®æåŸã«å°éãããã©ããã瀺ãããŒã«å€ãtrueã¯çµäºãæå³ããŸããfalseã¯ãååŸããå€ããŸã ããããšãæå³ããŸãã
ã€ãã¬ãŒã¿ãŒãããã³ã«ã䜿çšãããšãfor...ofã«ãŒããã¹ãã¬ããæŒç®åïŒ...ïŒãªã©ã®çµã¿èŸŒã¿JavaScriptæ©èœããã«ã¹ã¿ã ããŒã¿æ§é ã§ã·ãŒã ã¬ã¹ã«åäœããŸãã
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã®ç޹ä»
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã¯ãã€ãã¬ãŒã¿ãŒãäœæããããã®ããããšã¬ã¬ã³ãã§ç°¡æœãªæ¹æ³ãæäŸããŸãããããã¯ãfunction*æ§æã䜿çšããŠå®£èšãããŸãã
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã®æ§æ
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã®åºæ¬çãªæ§æã¯æ¬¡ã®ãšããã§ãã
function* myGenerator() {
yield 1;
yield 2;
yield 3;
}
const iterator = myGenerator();
console.log(iterator.next()); // åºåïŒ{ value: 1, done: false }
console.log(iterator.next()); // åºåïŒ{ value: 2, done: false }
console.log(iterator.next()); // åºåïŒ{ value: 3, done: false }
console.log(iterator.next()); // åºåïŒ{ value: undefined, done: true }
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã®äž»ãªç¹åŸŽïŒ
- ãããã¯
functionã®ä»£ããã«function*ã§å®£èšãããŸãã - ãããã¯ã
yieldããŒã¯ãŒãã䜿çšããŠãå®è¡ãäžæåæ¢ããå€ãè¿ããŸãã next()ãã€ãã¬ãŒã¿ãŒã§åŒã³åºããããã³ã«ããžã§ãã¬ãŒã¿ãŒé¢æ°ã¯ã次ã®yieldã¹ããŒãã¡ã³ããçºçãããã颿°ãè¿ããããŸã§ãäžæããå Žæããå®è¡ãåéããŸãã- ãžã§ãã¬ãŒã¿ãŒé¢æ°ãïŒæåŸã«å°éãããã
returnã¹ããŒãã¡ã³ããçºçããŠïŒå®è¡ãçµäºãããšãè¿ããããªããžã§ã¯ãã®doneããããã£ãtrueã«ãªããŸãã
ãžã§ãã¬ãŒã¿ãŒé¢æ°ãã€ãã¬ãŒã¿ãŒãããã³ã«ãå®è£ ããæ¹æ³
ãžã§ãã¬ãŒã¿ãŒé¢æ°ãåŒã³åºããšãããã«å®è¡ãããããã§ã¯ãããŸããã代ããã«ãã€ãã¬ãŒã¿ãŒãªããžã§ã¯ããè¿ããŸãããã®ã€ãã¬ãŒã¿ãŒãªããžã§ã¯ãã¯ãã€ãã¬ãŒã¿ãŒãããã³ã«ãèªåçã«å®è£
ããŸããåyieldã¹ããŒãã¡ã³ãã¯ãã€ãã¬ãŒã¿ãŒã®next()ã¡ãœããã®å€ãçæããŸãããžã§ãã¬ãŒã¿ãŒé¢æ°ã¯ãå
éšç¶æ
ã管çãããã®é²è¡ç¶æ³ã远跡ããŠãã«ã¹ã¿ã ã€ãã¬ãŒã¿ãŒã®äœæãç°¡çŽ åããŸãã
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã®å®è·µçãªäŸ
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã®åãšå€æ§æ§ã瀺ãããã€ãã®å®è·µçãªäŸãèŠãŠã¿ãŸãããã
1.æ°å€ã®ã·ãŒã±ã³ã¹ã®çæ
ãã®äŸã§ã¯ãæå®ãããç¯å²å ã®æ°å€ã®ã·ãŒã±ã³ã¹ãçæãããžã§ãã¬ãŒã¿ãŒé¢æ°ãäœæããæ¹æ³ã瀺ããŸãã
function* numberSequence(start, end) {
for (let i = start; i <= end; i++) {
yield i;
}
}
const sequence = numberSequence(10, 15);
for (const num of sequence) {
console.log(num); // åºåïŒ10ã11ã12ã13ã14ã15
}
2.ããªãŒæ§é ã®å埩åŠç
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã¯ãããªãŒã®ãããªè€éãªããŒã¿æ§é ããã©ããŒã¹ããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãããã®äŸã¯ããã€ããªããªãŒã®ããŒããå埩åŠçããæ¹æ³ã瀺ããŠããŸãã
class TreeNode {
constructor(value) {
this.value = value;
this.left = null;
this.right = null;
}
}
function* treeTraversal(node) {
if (node) {
yield* treeTraversal(node.left); // å·ŠåŽã®ãµãããªãŒã®ååž°åŒã³åºã
yield node.value; // çŸåšã®ããŒãã®å€ãçæ
yield* treeTraversal(node.right); // å³åŽã®ãµãããªãŒã®ååž°åŒã³åºã
}
}
// ãµã³ãã«ã®ãã€ããªããªãŒãäœæãã
const root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
// ãžã§ãã¬ãŒã¿ãŒé¢æ°ã䜿çšããŠããªãŒãå埩åŠçãã
const treeIterator = treeTraversal(root);
for (const value of treeIterator) {
console.log(value); // åºåïŒ4ã2ã5ã1ã3ïŒäžéé ãã©ããŒã¹ïŒ
}
ãã®äŸã§ã¯ãyield*ã䜿çšããŠå¥ã®ã€ãã¬ãŒã¿ãŒã«å§è²ããŸããããã¯ååž°å埩ã«äžå¯æ¬ ã§ããããžã§ãã¬ãŒã¿ãŒãããªãŒæ§é å
šäœããã©ããŒã¹ã§ããããã«ããŸãã
3.éåææäœã®åŠç
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã¯Promiseãšçµã¿åãããŠãéåææäœãããã·ãŒã±ã³ã·ã£ã«ã§èªã¿ãããæ¹æ³ã§åŠçã§ããŸããããã¯ãAPIããããŒã¿ããã§ãããããããªã¿ã¹ã¯ã«ç¹ã«åœ¹ç«ã¡ãŸãã
async function fetchData(url) {
const response = await fetch(url);
const data = await response.json();
return data;
}
function* dataFetcher(urls) {
for (const url of urls) {
try {
const data = yield fetchData(url);
yield data;
} catch (error) {
console.error("ããŒã¿ã®ãã§ããäžã«ãšã©ãŒãçºçããŸãã", url, error);
yield null; // ãŸãã¯ãå¿
èŠã«å¿ããŠãšã©ãŒãåŠçãã
}
}
}
async function runDataFetcher() {
const urls = [
"https://jsonplaceholder.typicode.com/todos/1",
"https://jsonplaceholder.typicode.com/posts/1",
"https://jsonplaceholder.typicode.com/users/1"
];
const dataIterator = dataFetcher(urls);
for (const promise of dataIterator) {
const data = await promise; // yieldã«ãã£ãŠè¿ãããPromiseãåŸ
æ©ãã
if (data) {
console.log("ãã§ãããããããŒã¿ïŒ", data);
} else {
console.log("ããŒã¿ã®ãã§ããã«å€±æããŸããã");
}
}
}
runDataFetcher();
ãã®äŸã¯ãéåæå埩ã瀺ããŠããŸããdataFetcherãžã§ãã¬ãŒã¿ãŒé¢æ°ã¯ããã§ãããããããŒã¿ã«è§£æ±ºãããPromiseãçæããŸããæ¬¡ã«ãrunDataFetcher颿°ã¯ãããã®Promiseãå埩åŠçããããŒã¿ãåŠçããåã«åPromiseãåŸ
æ©ããŸãããã®ã¢ãããŒãã¯ãéåæã³ãŒããããåæçã«èŠããããã«ããããšã§ãéåæã³ãŒããç°¡çŽ åããŸãã
4.ç¡éã·ãŒã±ã³ã¹
ãžã§ãã¬ãŒã¿ãŒã¯ã決ããŠçµãããªãã·ãŒã±ã³ã¹ã§ããç¡éã·ãŒã±ã³ã¹ã衚ãã®ã«æé©ã§ããèŠæ±ããããšãã«ã®ã¿å€ãçæãããããéå°ãªã¡ã¢ãªãæ¶è²»ããããšãªããç¡éã«é·ãã·ãŒã±ã³ã¹ãåŠçã§ããŸãã
function* fibonacciSequence() {
let a = 0, b = 1;
while (true) {
yield a;
[a, b] = [b, a + b];
}
}
const fibonacci = fibonacciSequence();
// æåã®10åã®ãã£ããããæ°ãååŸãã
for (let i = 0; i < 10; i++) {
console.log(fibonacci.next().value); // åºåïŒ0ã1ã1ã2ã3ã5ã8ã13ã21ã34
}
ãã®äŸã§ã¯ãç¡éãã£ããããæ°åãäœæããæ¹æ³ã瀺ããŠããŸãããžã§ãã¬ãŒã¿ãŒé¢æ°ã¯ããã£ããããæ°ãç¡æéã«çæãç¶ããŸããå®éã«ã¯ãç¡éã«ãŒããã¡ã¢ãªã®æ¯æžãé¿ããããã«ãååŸããå€ã®æ°ãå¶éããã®ãäžè¬çã§ãã
5.ã«ã¹ã¿ã ç¯å²é¢æ°ã®å®è£
ãžã§ãã¬ãŒã¿ãŒã䜿çšããŠãPythonã®çµã¿èŸŒã¿ã®range颿°ãšåæ§ã®ã«ã¹ã¿ã ç¯å²é¢æ°ãäœæããŸãã
function* range(start, end, step = 1) {
if (step > 0) {
for (let i = start; i < end; i += step) {
yield i;
}
} else if (step < 0) {
for (let i = start; i > end; i += step) {
yield i;
}
}
}
// 0ãã5ãŸã§ã®æ°å€ãçæããïŒæä»çïŒ
for (const num of range(0, 5)) {
console.log(num); // åºåïŒ0ã1ã2ã3ã4
}
// 10ãã0ãŸã§ã®æ°å€ãéé ã«çæããïŒæä»çïŒ
for (const num of range(10, 0, -2)) {
console.log(num); // åºåïŒ10ã8ã6ã4ã2
}
é«åºŠãªãžã§ãã¬ãŒã¿ãŒé¢æ°ãã¯ããã¯
1.ãžã§ãã¬ãŒã¿ãŒé¢æ°ã§ã®`return`ã®äœ¿çš
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã®returnã¹ããŒãã¡ã³ãã¯ãå埩ã®çµäºã瀺ããŸããreturnã¹ããŒãã¡ã³ããçºçãããšãã€ãã¬ãŒã¿ãŒã®next()ã¡ãœããã®doneããããã£ãtrueã«èšå®ãããvalueããããã£ãreturnã¹ããŒãã¡ã³ãã«ãã£ãŠè¿ãããå€ã«èšå®ãããŸãïŒããå ŽåïŒã
function* myGenerator() {
yield 1;
yield 2;
return 3; // å埩ã®çµäº
yield 4; // ããã¯å®è¡ãããŸãã
}
const iterator = myGenerator();
console.log(iterator.next()); // åºåïŒ{ value: 1, done: false }
console.log(iterator.next()); // åºåïŒ{ value: 2, done: false }
console.log(iterator.next()); // åºåïŒ{ value: 3, done: true }
console.log(iterator.next()); // åºåïŒ{ value: undefined, done: true }
2.ãžã§ãã¬ãŒã¿ãŒé¢æ°ã§ã®`throw`ã®äœ¿çš
ã€ãã¬ãŒã¿ãŒãªããžã§ã¯ãã®throwã¡ãœããã䜿çšãããšãäŸå€ããžã§ãã¬ãŒã¿ãŒé¢æ°ã«æ¿å
¥ã§ããŸããããã¯ããšã©ãŒãåŠçãããããžã§ãã¬ãŒã¿ãŒå
ã®ç¹å®ã®æ¡ä»¶ãéç¥ãããããã®ã«åœ¹ç«ã¡ãŸãã
function* myGenerator() {
try {
yield 1;
yield 2;
} catch (error) {
console.error("ãšã©ãŒãçºçããŸããïŒ", error);
}
yield 3;
}
const iterator = myGenerator();
console.log(iterator.next()); // åºåïŒ{ value: 1, done: false }
iterator.throw(new Error("äœããããŸããããŸããã§ããïŒ")); // ãšã©ãŒãæ¿å
¥ãã
console.log(iterator.next()); // åºåïŒ{ value: 3, done: false }
console.log(iterator.next()); // åºåïŒ{ value: undefined, done: true }
3.`yield*`ã䜿çšããå¥ã®å埩å¯èœãªããžã§ã¯ããžã®å§è²
ããªãŒãã©ããŒã¹ã®äŸã§èŠãããã«ãyield*æ§æã䜿çšãããšãå¥ã®å埩å¯èœãªããžã§ã¯ãïŒãŸãã¯å¥ã®ãžã§ãã¬ãŒã¿ãŒé¢æ°ïŒã«å§è²ã§ããŸããããã¯ãã€ãã¬ãŒã¿ãŒãæ§æããè€éãªå埩ããžãã¯ãç°¡çŽ åããããã®åŒ·åãªæ©èœã§ãã
function* generator1() {
yield 1;
yield 2;
}
function* generator2() {
yield* generator1(); // generator1ã«å§è²ãã
yield 3;
yield 4;
}
const iterator = generator2();
for (const value of iterator) {
console.log(value); // åºåïŒ1ã2ã3ã4
}
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã䜿çšããå©ç¹
- å¯èªæ§ã®åäžïŒãžã§ãã¬ãŒã¿ãŒé¢æ°ã䜿çšãããšãæåã®ã€ãã¬ãŒã¿ãŒå®è£ ãšæ¯èŒããŠãã€ãã¬ãŒã¿ãŒã³ãŒããããç°¡æœã«ãªããçè§£ãããããªããŸãã
- éåæããã°ã©ãã³ã°ã®ç°¡çŽ åïŒéåææäœãããåæçãªã¹ã¿ã€ã«ã§èšè¿°ã§ããããã«ããããšã§ãéåæã³ãŒããåçåããŸãã
- ã¡ã¢ãªå¹çïŒãžã§ãã¬ãŒã¿ãŒé¢æ°ã¯ãªã³ããã³ãã§å€ãçæããŸããããã¯ã倧ããªããŒã¿ã»ãããç¡éã·ãŒã±ã³ã¹ã«ç¹ã«åœ¹ç«ã¡ãŸããããŒã¿ã»ããå šäœãäžåºŠã«ã¡ã¢ãªã«ããŒãããããšãåé¿ããŸãã
- ã³ãŒãã®åå©çšæ§ïŒã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªéšåã§äœ¿çšã§ãããåå©çšå¯èœãªãžã§ãã¬ãŒã¿ãŒé¢æ°ãäœæã§ããŸãã
- æè»æ§ïŒãžã§ãã¬ãŒã¿ãŒé¢æ°ã¯ãããŸããŸãªããŒã¿æ§é ãšå埩ãã¿ãŒã³ãåŠçã§ããã«ã¹ã¿ã ã€ãã¬ãŒã¿ãŒãäœæããããã®æè»ãªæ¹æ³ãæäŸããŸãã
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
- ããããããååã䜿çšããïŒã³ãŒãã®å¯èªæ§ãåäžãããããã«ããžã§ãã¬ãŒã¿ãŒé¢æ°ãšå€æ°ã«æå³ã®ããååãéžæããŸãã
- ãšã©ãŒãé©åã«åŠçããïŒäºæããªãåäœãé²ãããã«ããžã§ãã¬ãŒã¿ãŒé¢æ°å ã«ãšã©ãŒåŠçãå®è£ ããŸãã
- ç¡éã·ãŒã±ã³ã¹ãå¶éããïŒç¡éã·ãŒã±ã³ã¹ãæ±ãå Žåã¯ãç¡éã«ãŒããã¡ã¢ãªã®æ¯æžãé¿ããããã«ãååŸããå€ã®æ°ãå¶éããã¡ã«ããºã ãããããšã確èªããŠãã ããã
- ããã©ãŒãã³ã¹ãèæ ®ããïŒãžã§ãã¬ãŒã¿ãŒé¢æ°ã¯äžè¬ã«å¹ççã§ãããç¹ã«èšç®è² è·ã®é«ãæäœãæ±ãå Žåã¯ãããã©ãŒãã³ã¹ãžã®åœ±é¿ã«æ³šæããŠãã ããã
- ã³ãŒããããã¥ã¡ã³ãåããïŒä»ã®éçºè ããžã§ãã¬ãŒã¿ãŒé¢æ°ã®äœ¿ç𿹿³ãçè§£ã§ããããã«ããžã§ãã¬ãŒã¿ãŒé¢æ°ã®æç¢ºã§ç°¡æœãªããã¥ã¡ã³ããæäŸããŸãã
JavaScript以å€ã®ãŠãŒã¹ã±ãŒã¹
ãžã§ãã¬ãŒã¿ãŒãšã€ãã¬ãŒã¿ãŒã®æŠå¿µã¯JavaScriptãè¶ ããŠæ¡åŒµãããããŸããŸãªããã°ã©ãã³ã°èšèªãã·ããªãªã§å¿çšãããŠããŸãã äŸïŒ
- PythonïŒ Pythonã¯ãJavaScriptãšéåžžã«ãã䌌ã
yieldããŒã¯ãŒãã䜿çšããŠããžã§ãã¬ãŒã¿ãŒã®çµã¿èŸŒã¿ãµããŒããåããŠããŸãã ãããã¯ãå¹ççãªããŒã¿åŠçãšã¡ã¢ãªç®¡çã«åºã䜿çšãããŠããŸãã - C#ïŒ C#ã¯ãã€ãã¬ãŒã¿ãŒãš
yield returnã¹ããŒãã¡ã³ããå©çšããŠãã«ã¹ã¿ã ã³ã¬ã¯ã·ã§ã³ã®å埩åŠçãå®è£ ããŸãã - ããŒã¿ã¹ããªãŒãã³ã°ïŒããŒã¿åŠçãã€ãã©ã€ã³ã§ã¯ããžã§ãã¬ãŒã¿ãŒã䜿çšããŠå€§éã®ããŒã¿ã¹ããªãŒã ããã£ã³ã¯åäœã§åŠçããå¹çãåäžãããã¡ã¢ãªæ¶è²»éãåæžã§ããŸãã ããã¯ãã»ã³ãµãŒãéèåžå ŽããœãŒã·ã£ã«ã¡ãã£ã¢ããã®ãªã¢ã«ã¿ã€ã ããŒã¿ãæ±ãå Žåã«ç¹ã«éèŠã§ãã
- ã²ãŒã éçºïŒãžã§ãã¬ãŒã¿ãŒã䜿çšããŠãå°åœ¢çæãã¢ãã¡ãŒã·ã§ã³ã·ãŒã±ã³ã¹ãªã©ã®ããã·ãŒãžã£ã«ã³ã³ãã³ãããã³ã³ãã³ãå šäœãäºåã«èšç®ããŠã¡ã¢ãªã«æ ŒçŽããããšãªãäœæã§ããŸãã
çµè«
JavaScriptãžã§ãã¬ãŒã¿ãŒé¢æ°ã¯ãã€ãã¬ãŒã¿ãŒãäœæããéåææäœããããšã¬ã¬ã³ããã€å¹ççãªæ¹æ³ã§åŠçããããã®åŒ·åãªããŒã«ã§ããã€ãã¬ãŒã¿ãŒãããã³ã«ãçè§£ããyieldããŒã¯ãŒããç¿åŸããããšã§ããžã§ãã¬ãŒã¿ãŒé¢æ°ã掻çšããŠãããèªã¿ããããä¿å®ãããããããã©ãŒãã³ã¹ã®é«ãJavaScriptã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸããäžé£ã®æ°å€ã®çæãããè€éãªããŒã¿æ§é ã®èµ°æ»ãéåæã¿ã¹ã¯ã®åŠçãŸã§ããžã§ãã¬ãŒã¿ãŒé¢æ°ã¯ãå¹
åºãããã°ã©ãã³ã°ã®èª²é¡ã«å¯Ÿããæ±çšæ§ã®é«ããœãªã¥ãŒã·ã§ã³ãæäŸããŸãããžã§ãã¬ãŒã¿ãŒé¢æ°ã掻çšããŠãJavaScriptéçºã¯ãŒã¯ãããŒã®æ°ããªå¯èœæ§ãè§£ãæŸã¡ãŸãããã