情報学基礎実習 「p5.js」(2025)
https://gyazo.com/d773bde7497431a88c6dc08b20c46204
授業の目的
コーディングによる画像/映像表現を学ぶ
参考
http://formandcode.com/code-examples/
http://www.bnn.co.jp/support/generativedesign_p5js/
次年度以降に学習する、ArduinoやProcessingの敷居を下げる
https://www.arduino.cc/
https://processing.org/
はじめに
OpenProcessingのアカウントを作る
https://openprocessing.org/
ユーザーネーム、プロフィール画像は匿名でも良い
作成したコードは、すべからくインターネット上に公開されるため
メールアドレスは大学のものでなくても構わない
教材
p5.js 基礎編
p5.js 基礎
p5.js 変数と繰り返し
p5.js 移動、回転、拡縮
p5.js 文字
p5.js 乱数
p5.js インタラクション
p5.js アニメーションと条件分岐
p5.js 発展編
p5.js 三角関数 1
p5.js 三角関数 2
p5.js 配列
p5.js 画像の入出力と加工
p5.js 外部データの入力
p5.js メモ
映像教材
https://tdu.box.com/s/yksg5tbspd789g0sfciin6ewn41nv07n
p5.js reference (関数一覧)
https://p5js.org/reference/
課題
p5.jsで時計を作る
サンプル
code: digital.js
function setup() {
createCanvas(400, 200);
textAlign(CENTER, CENTER);
textSize(48);
}
function draw() {
background(30);
fill(255);
let hr = nf(hour(), 2); // nfで2桁ゼロ埋め
let mn = nf(minute(), 2);
let sc = nf(second(), 2);
text(hr + ":" + mn + ":" + sc, width / 2, height / 2);
}
code:analog.js
function setup() {
createCanvas(400, 400);
angleMode(DEGREES); // 角度を度数法で扱う
}
function draw() {
background(240);
translate(width / 2, height / 2);
rotate(-90); // 12時を上に合わせる
let hr = hour();
let mn = minute();
let sc = second();
// 秒針
let scAngle = map(sc, 0, 60, 0, 360);
stroke(255, 0, 0);
strokeWeight(2);
line(0, 0, 120 * cos(scAngle), 120 * sin(scAngle));
// 分針
let mnAngle = map(mn, 0, 60, 0, 360);
stroke(0);
strokeWeight(4);
line(0, 0, 100 * cos(mnAngle), 100 * sin(mnAngle));
// 時針
let hrAngle = map(hr % 12 + mn / 60, 0, 12, 0, 360);
stroke(0);
strokeWeight(6);
line(0, 0, 70 * cos(hrAngle), 70 * sin(hrAngle));
// 時計の外枠
noFill();
stroke(0);
strokeWeight(8);
ellipse(0, 0, 300, 300);
}
ルール
コードは50行程度(多いぶんにはOKです)
キャンバスサイズは 400 x 400 のみ
加点条件
乱数を使用している
インタラクションがある
マウスのカーソル移動、キーボードの入力
ユニークである
https://openprocessing.org/browse/?q=isd2025&time=anytime&type=tags で眺めた時に際立っている
p5js_2024 課題まとめも参考にしてください
授業資料の内容を超越しても構いません
ただし参照したWEBや文献等がある場合は、出典をコード中にコメントしましょう
〆切は授業翌週の金曜日終日
ヒント
サンプルをカスタムするところから始めると楽
例) 色を変えてみる、フォントを変えてみる
うまくできたら乱数要素を入れてみる
例) 背景色が変化する、秒針のかたちがグネグネになる
うまくできたら、インタラクションをいれてみる
例) マウスをクリックすると12時間表示/24時間表示を切り替える
課題の提出方法
1. OpenProcessingでプロジェクトをSave->Submitする
必ずやる
サムネイルを作る
Tagsに isd2025 を入れる
https://gyazo.com/d1500da457fc4ced0c1adecfb78e1e8b
2. 自分のプロジェクトが表示されているか確認する
https://openprocessing.org/browse/?q=isd2025&time=anytime&type=tags
表示されていない作品は評価対象外になることがある
もし表示されていない場合は Tagsにisd2025が入っているか確認する
3. プロジェクトのURLとコードを提出する
https://forms.office.com/r/9Wg8JWLMEi
9月26日(金) 15時00分〜10月3日(金) 23時59分まで
留意事項
提出されたコードは第三者からも閲覧可能になる
成績が確定するまで、提出したコードをOpenProcessingから削除してはいけない
2026年4月1日以降は自由
#p5.js