
JavaScriptã²ãŒã ã®äœãæ¹ åå¿è åãïœAIã®ã³ãŒãã®èªã¿æ¹
JavaScriptã§ã²ãŒã ãäœããªããæåã«èŠããã®ã¯æžãæ¹ã§ã¯ãªããã³ãŒãã®ã©ããèŠãŠãã©ããªãè§Šã£ãŠããããã§ãã
AIã«é Œãã°æ°åè¡ã®ã²ãŒã ã¯ããåºãŠããŸãããã ãåºãŠããã³ãŒãã¯èªããªããšçŽããŸããã
59è¡ã®æ°åœãŠã²ãŒã ãå šæèŒããè¡ã®å¡ããšã®èªã¿æ¹è¡šãšãå®éã«æ°ãå€ããŠåãããçµæã䞊ã¹ãŸãã
æ°åœãŠã²ãŒã ã®å šæïŒHTML1ãã¡ã€ã«ïŒ
顿ã¯ã1ãã100ãŸã§ã®æ°ã7å以å ã«åœãŠãæ°åœãŠã²ãŒã ã§ããHTMLãšJavaScriptã1ã€ã®ãã¡ã€ã«ã«å ¥ã£ãŠããŸããæ¬¡ã®ã³ãŒãããã®ãŸãŸäœ¿ããŸãã
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>æ°åœãŠã²ãŒã </title>
<style>
body { font-family: sans-serif; text-align: center; margin-top: 40px; }
#msg { font-size: 24px; min-height: 36px; }
input { font-size: 20px; width: 80px; }
button { font-size: 20px; }
</style>
</head>
<body>
<h1>æ°åœãŠã²ãŒã </h1>
<p id="rule"></p>
<input id="guess" type="number">
<button id="btn">äºæ³ãã</button>
<p id="msg"></p>
<p id="left"></p>
<script>
const MAX_NUMBER = 100;
const MAX_TRIES = 7;
let answer = Math.floor(Math.random() * MAX_NUMBER) + 1;
let tries = 0;
let finished = false;
document.getElementById("rule").textContent =
"1ãã" + MAX_NUMBER + "ãŸã§ã®æ°ã" + MAX_TRIES + "å以å
ã«åœãŠãŠãã ãã";
function show(text) {
document.getElementById("msg").textContent = text;
}
function check() {
if (finished) return;
const value = parseInt(document.getElementById("guess").value);
if (isNaN(value)) {
show("æ°ãå
¥ããŠãã ãã");
return;
}
tries = tries + 1;
if (value === answer) {
show("æ£è§£ã§ãïŒ" + tries + "åã§åœãããŸãã");
finished = true;
} else if (tries >= MAX_TRIES) {
show("æ®å¿µãçãã¯" + answer + "ã§ãã");
finished = true;
} else if (value < answer) {
show("ãã£ãšå€§ããæ°ã§ã");
} else {
show("ãã£ãšå°ããæ°ã§ã");
}
document.getElementById("left").textContent = "æ®ã" + (MAX_TRIES - tries) + "å";
}
document.getElementById("btn").addEventListener("click", check);
</script>
</body>
</html>ãã¡ã€ã«ãšããŠä¿åããŠãã©ãŠã¶ã§éãæé ã¯ãHTML1ãã¡ã€ã«ã§åãã²ãŒã ã®äœãæ¹ãšä¿åã®ãããã«ãŸãšããŠãããŸããããã¯éããåæã§è©±ãé²ããŸãã
ã³ãŒãã®èªã¿æ¹è¡šãèŠã
ã³ãŒãã¯äžããé ã«å šéšèªãå¿ èŠããããŸããã圹å²ããšã«7ã€ã®å¡ã«åãããšãèŠãå Žæã決ãŸããŸããæ¬¡ã®å³ããå¡ããšã®åœ¹å²ãšãè§Šã£ãŠãããã®ç®å®ã§ããè¡çªå·ã¯ãäžã®ã³ãŒãã®1è¡ç®ããæ°ãããã®ã§ãã

æŒãããç¹ã¯2ã€ãããŸãã
1ã€ç®ã¯ã21ã22è¡ã®2ã€ã®æ°åã ãããéã³ã®èšå®ãã ãšããããšã§ããã²ãŒã ã®é£ãããå€ããããšãã¯ãããã ããèŠãŸãã
2ã€ç®ã¯ãåãååã2ãæä»¥äžã«åºãŠããå Žæãã察ã«ãªã£ãŠãããããšã§ããããšãã° id="guess" ã¯16è¡ç®ãš36è¡ç®ã«åºãŸããçæ¹ã ãå€ãããšãããçæ¹ãçžæãèŠå€±ããŸãã
è§Šã£ãŠããå Žæã®èŠåãæ¹3ã€
è¡ã®æå³ãåãããªãå ŽåããèŠãç®ã§è§Šã£ãŠãããã®èŠåœã¯ã€ããŸããæ¬¡ã®3ã€ã§ãã
å šéšå€§æåã®ååïŒMAX_NUMBERãMAX_TRIESïŒã¯ãæ°ã ãæžãæããŠããèšå®ã§ãã宿ž¬ããã®ã¯3ãš10ã®2éãã§ã0ãè² ã®æ°ã¯è©ŠããŠããŸããã1以äžã®æŽæ°ã«ããŠããã®ãç¡é£ã§ã
åŒçšç¬ŠïŒ"ïŒã§å²ãŸããæ¥æ¬èªã¯ãç»é¢ã«åºãæèšã§ããåŒçšç¬Šã®å€åŽãå€ããªããã°å®å šã§ã
===ã<ã>=ãparseIntãid ã®ååã颿°ã®ååã¯ãä»ã®è¡ãšå¯Ÿã«ãªã£ãŠããã®ã§è§ŠããŸãããå€ããããšãã¯ãèªåã§æžãæããã«AIã«é Œã¿ãŸã
ãã®3ã€ã®èŠæ¹ã¯ããã®æ°åœãŠã²ãŒã ã§ã¯éçšããŸãããAIãæžãã³ãŒãã¯ååã®ä»ãæ¹ãéãããšãããããã®å Žåã¯åœãŠã¯ãŸããªãããšããããŸããã»ãã®ã³ãŒãã§ã¯ç¢ºãããŠããŸããã
æ°ãå€ããŠåããïŒè§Šã£ãŠããå Žæã®å®æž¬ïŒ
èªã¿æ¹è¡šã®ãšããã«å€ããŠãNode.jsã®ä»®éšåãã€ããŠåãããŸãããæ¡ä»¶ã¯æ¬¡ã®ãšããã§ãã
æ¥ä»ãšç°å¢ã¯ã2026幎10æ19æ¥ãWindows 11ãNode.js v24.14.0
ãã©ãŠã¶ã®ä»£ããã«ãgetElementByIdãštextContentãšaddEventListenerã ããæã€ä»®éšåãã€ããŠãäžã®JavaScriptãåããã
ä¹±æ°ã¯åºå®å€ã«å·®ãæ¿ããã0.4ã®ãšãã¯çãã41ã«ãªã
ãã©ãŠã¶ã®ç»é¢è¡šç€ºãšã¯ãªãã¯æäœã¯ããã®å®æž¬ã§ã¯èŠãŠããªããheadless Chromeã§ã¯ããã¡ã€ã«ãéããããšã«ã«ãŒã«æãã1ãã100ãŸã§ã®æ°ã7å以å ã«åœãŠãŠãã ããããšåºãããšã ã確ããã

MAX_TRIESã3ã«ãããšã3åç®ã§çµãããŸãããMAX_NUMBERã10ã«ãããšãã«ãŒã«æã®æ°åãèªåã§å€ãããŸãããå€ããã®ã¯MAX_TRIESã®3ãšMAX_NUMBERã®10ã ãã§ããã«ãŒã«æã¯MAX_NUMBERãã€ãªãã§æžããŠããã®ã§ãæ°åã1ãæå€ããã°è¶³ããŸãããAIãåºããã³ãŒãã«åãæ°ãäœãæãçŽæ¥æžããŠããã°ããã®åã®æžãæããèŠããŸãã
49è¡ç®ã®ããã£ãšå€§ããæ°ã§ããããäžã§ããã«å€ããäŸã§ã¯ã衚瀺ã ããå€ãããå€å®ã«ã¯åœ±é¿ããŸããã§ãããç»é¢ã«åºãæåãå€ãããã ããªããåŒçšç¬Šã®äžã ããè§ŠããŸãã
è§Šã£ãŠã¯ãããªãå Žæãå€ãããšäœãèµ·ããã
次ã«ãèªã¿æ¹è¡šã§ãÃãããâ³ãã«ããå Žæãããããšå€ããŸãããåãæ¡ä»¶ã§åãããçµæã§ãã

8ã€ã®å€æŽã®çµæã¯3éãã«åãããŸããã
ãšã©ãŒãåºã倿Žã3ã€ïŒ=== ã = ã«ãJavaScriptåŽã ãidãå€ããã倿°åã®æã¡ééãïŒ
ãšã©ãŒãåºãªãã®ã«ãåããçã倿Žã4ã€ããã³ããéã«ãªããçãã0ã99ã«ãªãïŒä¹±æ°0ã®ãšã0ïŒãåæ°ã1åå¢ãããparseIntãæ¶ããšæ£è§£ã«ãªããªãããšãããã®ã§ã
ãšã©ãŒãåºããäœãèµ·ããªã倿Žã1ã€ïŒaddEventListenerã®è¡ãæ¶ãïŒ
ä»åã®å®æž¬ã¯ä»®éšåã§ãšã©ãŒãçŽæ¥èŠãŠããŸãããã©ãŠã¶ã®ç»é¢ã§ã¯ãšã©ãŒæãåºããäœãèµ·ããªãããã«èŠããå ŽåããããŸãïŒæªç¢ºèªïŒãç»é¢ã ãã§ã¯èŠåãã«ããã®ã§ãã«ãŒã«æã§ã¯ã1ããããšèšã£ãŠããã®ã«çãã0ã«ãªãããšãã£ãé£ãéãã¯ãéãã§åããŠåãããŸããè§Šã£ãŠããå Žæã決ããŠãããšãããããé£ãéããèªåã§äœããã«æžã¿ãŸãã
=== ã = ã«ãã倿Žã§TypeErrorãåºãã®ã¯ãvalueãconstã ããã§ããletã§æžãããã³ãŒããªãããšã©ãŒãªãã§åžžã«æ£è§£ã«ãªãå¯èœæ§ããããŸãïŒæªå®æž¬ïŒã
parseIntãæ¶ããšæ£è§£ã«ãªããªãã®ã¯ãå ¥åæ¬ã®å€ãæååã®ãŸãŸã§ãæ°ã®41ãšæåã®41ã === ã§äžèŽããªãããã§ãã
addEventListener ã®è¡ãæ¶ããå Žåã¯ããã¿ã³ãæŒããŠãäœãèµ·ããŸããã§ãããç»é¢ã«å€åããªããšãã®åå ã¯ããã®è¡ã®æã以å€ã«ããããŸãã
ãã®ã³ãŒãã§äœ¿ã£ãŠããéšåã®æå³
èªã¿æ¹è¡šã«åºãŠããéšåã®ãã¡ã仿§ã決ãŸã£ãŠãããã®ã¯ãå ¬åŒã®MDN Web Docsã§ç¢ºèªããŸããã
Math.random()ïŒMDNã«ãããšã0以äž1æªæºã®ç¯å²ã§æµ®åå°æ°ç¹ã®æ¬äŒŒä¹±æ°ãè¿ããŸãã1ã¯å«ãŸããŸããã23è¡ç®ã§MAX_NUMBERãæããŠMath.floorã§åãæšãŠã1ãè¶³ããŠããã®ã¯ãçµæã1ããMAX_NUMBERã®ç¯å²ã®æŽæ°ã«ããããã§ã
Math.floor()ïŒäžããããæ°å€ä»¥äžã®æå€§ã®æŽæ°ãè¿ããŸã
parseInt()ïŒMDNã«ãããšã第1åŒæ°ãæååã«å€æããŠè§£éããæŽæ°ãŸãã¯NaNãè¿ããŸããå ¥åæ¬ã®å€ãæ°ã«ããŠæ¯ã¹ãããã«36è¡ç®ã§äœ¿ã£ãŠããŸã
getElementById()ïŒidãäžèŽããèŠçŽ ãè¿ããŸããäžèŽããèŠçŽ ããªããã°nullãè¿ããŸãã宿ž¬ã§JavaScriptåŽã ãidãå€ãããšãã«ãCannot read properties of nullããšåºãã®ã¯ããã®nullãèªãããšããããã§ã
textContentïŒããŒããšãã®åå«ã®ããã¹ãã®å 容ã衚ããŸããèšå®ãããšãäžã®åããã¹ãŠåãé€ãããæå®ããæåã«çœ®ãæãããŸã
addEventListener()ïŒå¯Ÿè±¡ã«ç¹å®ã®ã€ãã³ããå±ããã³ã«åŒã°ãã颿°ãèšå®ããŸãã56è¡ç®ã§ã¯ããã¿ã³ã®ã¯ãªãã¯ã§checkãåŒã¶çŽæã«ãªã£ãŠããŸã
AIã«å€æŽãé Œããšãã®äžèš
èªåã§è§Šãå Žæã決ããããé Œã¿æ¹ãå ·äœçã«ããŸããæ¬¡ã®äŸé Œæãããã®ãŸãŸè²Œã£ãŠäœ¿ããŸãã
æ·»ä»ã®HTMLã® MAX_TRIES ã5ã«å€ããŠãã ããããã以å€ã®è¡ã¯å€ããªãã§ãã ãããå€ããè¡ã ããæããŠãã ãããããã以å€ã¯å€ããªãããå€ããè¡ã ããæãããã®2ã€ãå ¥ããŠããã°ãè¿ã£ãŠããã³ãŒãã§ç¢ºèªããå Žæã¯1ãæã«ãªããŸããå€ããåã«ãå ã®ãã¡ã€ã«ãå¥åã§ã³ããŒããŠæ®ããŠãããšãããŸããããªãã£ããšãã«æ»ããŸãã
AIã®äœ¿ãæ¹ãã®ãã®ã¯ãClaude Codeã®äœ¿ãæ¹ãåå¿è åãã«ãŸãšããèšäºã«ãŸãšããŠããŸããã©ããªãžã£ã³ã«ããäœããè¿·ãå Žåã¯ãã²ãŒã äœã åå¿è ã®ãžã£ã³ã«ã®éžã³æ¹ãåãããŠèªãã§ãã ããã
次ã«ããããš
æ°åœãŠã²ãŒã ã®22è¡ç®ã®MAX_TRIESã5ã«å€ããŠä¿åãããã©ãŠã¶ãåèªã¿èŸŒã¿ããŠãã«ãŒã«æãã5å以å ãã«å€ãããã確ãããŸãã