
p5.jsã§ã²ãŒã å¶äœïœæå°ã®é¿ãã²ãŒãäœã£ãŠåè¡ãèªã
p5.jsã®ã²ãŒã ã¯ãHTMLãã¡ã€ã«1ã€ïŒ70è¡ïŒã§åããŸãã
ä»åäœã£ãã®ã¯ãäžããèœã¡ãŠããåè§ãå·Šå³ã®ç¢å°ããŒã§é¿ãããé¿ãã²ãŒãã§ãããããã¯ã«åœãããšã²ãŒã ãªãŒããŒã«ãªããã¹ããŒã¹ããŒã§ããçŽããŸãã
ã³ãŒãã¯AIïŒClaudeïŒã«æžããŠããããæå ã®Chromeã§å®éã«ããŒå ¥åãéã£ãŠç¢ºãããŸããã宿ã³ãŒãã®å šæãšãåè¡ãäœãããŠãããã®å¯Ÿå¿è¡šãèŒããŸãã
äœã£ããã®ãšãé Œãã æ¡ä»¶
ã³ãŒããæžããšãã«åºããæ¡ä»¶ã¯ã次ã®5ã€ã§ãã
HTMLãã¡ã€ã«1ã€ã§åã
p5.jsã¯CDNããèªã¿èŸŒããããŒãžã§ã³ã¯åºå®ãã
å·Šå³ã®ç¢å°ããŒã§äžã®èªæ©ãåãã
äžããèœã¡ãŠããåè§ã«åœãã£ããã²ãŒã ãªãŒããŒ
ã¹ããŒã¹ããŒã§ããçŽãã
çµæã¯ãæåã«æžããã³ãŒãããã®ãŸãŸåããŸãããæžãçŽãã¯çºçããŠããŸããã確ãããå 容ã¯ãåŸãã®ãåãããŠç¢ºãããçµæãã«ãŸãšããŠããŸãã
p5.jsãšã¯äœããã©ãèªã¿èŸŒãã
p5.jsã¯ãçµµãæãããåããããããããã®JavaScriptã®ã©ã€ãã©ãªã§ããã²ãŒã çšã®å°çšããŒã«ã§ã¯ãªããç»é¢ã«åè§ãæããããŒã®ç¶æ ã調ã¹ãããšãã£ãéå ·ã®éãŸãã§ãã
HTMLã®äžã§p5.jsãèªã¿èŸŒããšãsetupãšdrawãšããååã®é¢æ°ãæžãã ãã§ãåãç»é¢ãäœããŸãã
èªã¿èŸŒã¿ã«ã¯ãå ¬åŒã®ããŠã³ããŒãããŒãžã«èŒã£ãŠããCDNã®URLã䜿ããŸããã2026幎10æ28æ¥ã«ç¢ºèªããæç¹ã§ãå ¬åŒã¯æ¬¡ã®URLããçŸåšã®ããŒãžã§ã³ããšããŠæ¡å ããŠããŸãã
https://cdn.jsdelivr.net/npm/p5@2.3.3/lib/p5.min.jsåãããŒãžã«ã¯ã2ç³»ã®ææ°ãåžžã«èªã¿èŸŒãURLïŒp5@2ïŒããããŸãããã ãããã ãšãåŸæ¥ããŒãžã§ã³ãå€ãã£ããšãã«ã³ãŒãã®åããå€ãããããããŸãããçªå·ãŸã§æžãã圢ã䜿ããŸããã
setupãšdrawã®åœ¹å²
å ¬åŒãªãã¡ã¬ã³ã¹ã®èª¬æãããã®èšäºã®èšãæ¹ã§ãŸãšããŸãã
setup()ã¯ãã¹ã±ãããå§ãŸããšãã«1åã ãåŒã°ããããã£ã³ãã¹ãäœãã倿°ãåæåãããšãã£ãæºåã«äœ¿ã
draw()ã¯ãã¹ã±ãããåããŠããéãç¹°ãè¿ãåŒã°ãããæšæºã§ã¯1ç§ã«60åå®è¡ããããšãã
createCanvas()ã¯ãsetup()ã®æåã«1åã ãåŒã¶ã2å以äžåŒã¶ãšåããäžå®å®ã«ãªããšå ¬åŒã«æžãããŠãã
ã²ãŒã ã§èšãã°ãsetupãç€é¢ãçšæããä¿ã§ãdrawã1ã³ããã€ç»é¢ãæãçŽãä¿ã§ãã
宿ã³ãŒãå šæ
次ã®ãã¡ã€ã«ã宿ã³ãŒãã§ããindex.htmlãšããååã§ä¿åããŠãã©ãŠã¶ã§éããšåããŸãããã¡ã€ã«ã®ä¿åã®ããããšéãæ¹ã¯ãHTML1ãã¡ã€ã«ã§åãã²ãŒã ã®äœãæ¹ãšä¿åã®ãããã§æé ãæžããŸããã
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>é¿ãã²ãŒ</title>
<script src="https://cdn.jsdelivr.net/npm/p5@2.3.3/lib/p5.min.js"></script>
</head>
<body>
<script>
let px;
let blocks;
let frames;
let over;
function setup() {
createCanvas(400, 500);
rectMode(CENTER);
textAlign(CENTER, CENTER);
startGame();
}
function startGame() {
px = width / 2;
blocks = [];
frames = 0;
over = false;
}
function draw() {
background(15, 37, 64);
if (!over) {
if (keyIsDown(LEFT_ARROW)) px -= 5;
if (keyIsDown(RIGHT_ARROW)) px += 5;
px = constrain(px, 20, width - 20);
if (frameCount % 30 === 0) {
blocks.push({ x: random(15, width - 15), y: -15 });
}
for (const b of blocks) {
b.y += 4 + frames / 300;
if (abs(b.x - px) < 35 && abs(b.y - 460) < 25) over = true;
}
blocks = blocks.filter(b => b.y < height + 20);
frames++;
}
fill(255, 159, 28);
for (const b of blocks) rect(b.x, b.y, 30, 30);
fill(46, 196, 182);
rect(px, 460, 40, 20);
fill(255);
textSize(20);
text(floor(frames / 60) + " ç§", width / 2, 24);
if (over) {
textSize(32);
text("ã²ãŒã ãªãŒããŒ", width / 2, 220);
textSize(18);
text("ã¹ããŒã¹ããŒã§ããäžåºŠ", width / 2, 262);
}
}
function keyPressed() {
if (over && key === " ") startGame();
return false;
}
</script>
</body>
</html>CDNã«å±ããªãç¶æ ã§éããšãp5.jsãèªã¿èŸŒããªãã®ã§ç»é¢ã¯çœããŸãŸã§ãããã®ç¹ã¯åŸãã§ç¢ºãããçµæãèŒããŸãã
åè¡ã®åœ¹å²ã®å¯Ÿå¿è¡š
è¡çªå·ã¯ãäžã®ã³ãŒããindex.htmlã«ä¿åãããšãã®è¡ã§ãããšãã£ã¿ãŒã§è¡çªå·ãåºããŠèŠæ¯ã¹ãŠãã ããã
衚ã®äžã§ãåããŠèŠããšåããã«ããè¡ã3ã€è£è¶³ããŸãã
33è¡ç®ãš34è¡ç®ïŒããŒãæŒããŠããéã ãåã
keyIsDown(LEFT_ARROW)ã¯ããã®ããŒã仿ŒãããŠãããã©ãããtrueãfalseã§è¿ããŸããå ¬åŒãªãã¡ã¬ã³ã¹ã«ã¯ãè€æ°ã®ããŒãåæã«èª¿ã¹ããšãã«äŸ¿å©ããšæžãããŠããŸããdrawã®äžã«æžããŠããã®ã§ãæŒããŠããéã¯ã1ãã¬ãŒã ããšã«pxã5ãã€æžã圢ã§ãã
å ¬åŒãªãã¡ã¬ã³ã¹ã«ãããšãp5.js 2.0以éã®keyIsDown()ã§ã¯ãããŒã®çªå·ïŒ88ã®ãããªæ°åïŒãæž¡ãæžãæ¹ãã§ããŸãããLEFT_ARROWã®ãããªååä»ãã®å®æ°ãã'x'ã®ãããªæåãæž¡ããŸãã以åã®è§£èª¬èšäºã®ã³ãŒãããã®ãŸãŸè²Œã£ãŠããŒãå¹ããªããšãã¯ããããçã£ãŠãã ããã
42è¡ç®ïŒåœããå€å®ã¯ãå·®ã®å€§ããããèŠãã ã
abs(b.x - px) < 35ã¯ããããã¯ã®äžå¿ãšèªæ©ã®äžå¿ã®æšªã®è·é¢ã35ããè¿ãããšããæå³ã§ãã35ã¯ããããã¯ã®å¹ 30ã®ååïŒ15ïŒãšèªæ©ã®å¹ 40ã®ååïŒ20ïŒãè¶³ããæ°ã§ãã瞊ã®25ãåãèãæ¹ã§ããããã¯ã®é«ã30ã®ååïŒ15ïŒãšèªæ©ã®é«ã20ã®ååïŒ10ïŒãè¶³ããŠããŸããæšªã瞊ãè¿ããã°ã2ã€ã®åè§ã¯éãªã£ãŠããŸãã
rectMode(CENTER)ïŒ17è¡ç®ïŒã§ãåè§ã®åº§æšãäžå¿ã«æããŸããããã®ãããã§ãã®èšç®ã§è¶³ããŸãã
64è¡ç®ãã67è¡ç®ïŒããŒãæŒããæã®åŠç
keyPressed()ã¯ãããŒãæŒããæç¹ã§1åã ãåŒã°ããŸããdrawã®äžã®keyIsDownãšã¯åœ¹å²ãéãããæŒããŠããéãã£ãšãã§ã¯ãªããæŒããåå³ããåãåããŸããããçŽãã¯1åæŒãã°è¶³ããã®ã§ããã¡ãã®æ åœã§ãã
æåŸã®return false;ã¯ããã©ãŠã¶ãå ã æã£ãŠããåããæ¢ããããã®1è¡ã§ããå ¬åŒãªãã¡ã¬ã³ã¹ã«ã¯ãã¹ããŒã¹ããŒã§ããŒãžã®äžãžç§»åãããã©ãŠã¶ãããã®ã§ãæ¢ããããšãã¯return false;ãæžãããšèª¬æããããŸãã
åãããŠç¢ºãããçµæ
2026幎10æ28æ¥ãæå ã®Windows 11 Homeã§Chrome 156ãç»é¢ãªãã®ç¶æ ïŒheadlessïŒã§èµ·åããå®éã®ããŒå ¥åãéã£ãŠç¢ºãããŸããã1å°ã®PCã§ã®çµæã§ãã
ãã¬ãŒäžãšãã²ãŒã ãªãŒããŒã®ç»é¢ãæ®ã£ãç»åã¯æ¬¡ã®ãšããã§ãã
çµæããèªã¿åããããšã䞊ã¹ãŸãã
å·ŠããŒã0.5ç§æŒããšãpxã¯200ãã45ã«ãªã£ãããã®ããã ã®ãã¬ãŒã æ°ã¯31ã§ã31Ã5=155ã200-155=45ãšèšç®ãåããã³ãŒãã®ã5ãããåãéããã®ãã®ã ãšåãã
å·Šå³ã«æŒãç¶ãããšã20ãš380ã§æ¢ãŸã£ãã35è¡ç®ã®constrainã®å¹æ
å ¥åããã«æŸçœ®ãããšã3åãšãçŽ2ã3ç§ã§ã²ãŒã ãªãŒããŒã«ãªã£ãããããã¯ã®äœçœ®ã¯æ¯åã©ã³ãã ãªã®ã§ãç§æ°ã¯å€ãã
çµäºåŸã«AããŒã§ã¯åéãããã¹ããŒã¹ããŒã§ã¯ç¶æ ãæåã«æ»ã£ã
ç¢å°ããŒãèªåã§æŒãç°¡åãªã¹ã¯ãªãããèªåã§æžããŠ3åèµ°ããããšããã22.9ç§ã§ã²ãŒã ãªãŒããŒã1åã25ç§ã§æã¡åã£ãŠçåã2åã ã£ããé¿ãç¶ããããšã¯ã§ããããéã¶ã»ã©éããªã
確ãããããã®ã¯ããããŸã§ã§ããæ¬¡ã®2ç¹ã¯ã確ãããçµæããåé¡ãããããåãããªããã§ããã
CDNã«å±ããªãç¶æ ïŒæ¥ç¶ãæåŠãããç¶æ ïŒã§ãã¡ã€ã«ãéããšããã£ã³ãã¹ãäœããããç»é¢ã¯çœããŸãŸã ã£ããã³ã³ãœãŒã«ã«ã¯ãp5.min.jsãèªã¿èŸŒããªãã£ããšããå 容ã®ãšã©ãŒãåºãããã¡ã€ã«ãå£ããŠããããã§ã¯ãªããèªã¿èŸŒã¿ã®å€±æã§ã
ã¹ããŒã¹ããŒãæŒããŠãããŒãžãäžãžåããªãããã¯ç¢ºãããããªãã£ããreturn false;ãå€ããå¯Ÿç §ã§ãåããªãã£ãã®ã§ããã®è©Šéšã§ã¯å·®ãåºãã倿ã«äœ¿ããªã
ããŒãžã§ã³è¡šç€ºã«ã€ããŠ
èªã¿èŸŒãã ã®ã¯p5@2.3.3ã§ããé åžç©ã®package.jsonã«ã¯"version": "2.3.3"ãšãããŸãããããã©ãŠã¶ã§p5.VERSIONã衚瀺ãããš2.3.1ãšåºãŸãããp5.min.jsã®äžã«æžãããããŒãžã§ã³æååã2.3.1ã«ãªã£ãŠããŸãããåäœã«ã¯åœ±é¿ããŸããã§ããããããŒãžã§ã³ãã¡ã¢ãããšãã¯ãèªã¿èŸŒãã URLã®çªå·ãæ§ããŠãããšééããŸããã
æ°åãå€ããŠéã¶
åãããããæ°åã1ã€ã ãå€ããŠãäœãå€ããããèŠãŸãã衚ã®è¡ãšç §ãããŠãèšç®ã§åããç¯å²ã䞊ã¹ãŸãã
33è¡ç®ãš34è¡ç®ã®5ã倧ãããããšãèªæ©ãéãåãã1ãã¬ãŒã ã®ç§»åéãªã®ã§ã10ãªã1ãã¬ãŒã ã®ç§»åéã2åã«ãªããåã0.5ç§ã§å·Šã®å£ïŒ20ïŒãŸã§çã
37è¡ç®ã®30ãå°ãããããšããããã¯ãå¢ããã15ãªããçŽ0.25ç§ããšã«1ã€è¶³ããã
41è¡ç®ã®4ã¯ãèœã¡ãéãã®æåã®å€ãframes / 300ã®300ãå°ãããããšãéããªãå¢ããå¢ã
ãã®3ã€ã¯ãã³ãŒãããèšç®ãã説æã§ãå€ããçãåãããŠç¢ºããããã®ã§ã¯ãããŸããã
ãããŸã§ã§ãé¿ãã²ãŒã®å šè¡ãèªããããã«ãªããŸãããAIãæžããå¥ã®ã³ãŒããèªããšãã®èŠæ¹ã¯ãJavaScriptã²ãŒã ã®ã³ãŒãã®èªã¿æ¹ã衚ã«ããèšäºã«ãŸãšããŠããŸããéã¶é¡æãå€ããããšãã¯ãã²ãŒã äœã åå¿è ã®ãžã£ã³ã«ã®éžã³æ¹ã§ããžã£ã³ã«ããšã®é£ãããåãåºæºã§äžŠã¹ãŸããã
p5.jsã®å ¬åŒãªãã¡ã¬ã³ã¹ãšãããŠã³ããŒãããŒãžã®å 容ã¯ã2026幎10æ28æ¥ã«ç¢ºèªããŸãããç»é¢ã®èª¬æãé åžããããŒãžã§ã³ã¯æŽæ°ãããããšãããã®ã§ãåããªããšãã¯å ¬åŒã®ææ°ãèŠãŠãã ããã
次ã«å€ãããªãããããã¯ã«ãåœãããšåŸç¹ãå¢ããçš®é¡ããè¶³ã圢ããããŸã®ã³ãŒãã®å»¶é·ã§äœããŸããblocksã®äžèº«ã«çš®é¡ã®å°ã1ã€è¶³ãã42è¡ç®ã®å€å®ã§åããŸãã




