第3回 アルゴリズム概論
2026.04.23
今日の土台を整えます
algorithm2026/ フォルダを開く(前回作った場所)03_20260423_data.zip をダウンロードalgorithm2026/ の中で解凍して配置03_20260423_data フォルダを開くlesson/index.html を Live Server で表示先生のハンズオン or チューターとのレスキュー、どちらかに合わせてこの6つを揃えます。次のスライドで進め方を選びます。
質問はひとつだけ。答えに応じて進め方が変わります。
現象を「雰囲気」や「感覚」だけで捉えるのではなく、
構造でとらえ直して、「どうすればできるか」の思考に繋げる。
頭の中のイメージを、世界に出せるもの にする。
「欲しい」「困った」を、自分で解決できる形 に変えていく。
自分のカードが…
高めだけど、最高じゃない
自分のカードが…
明らかに低い
数字が大きいほど「大切」の度合いが強い、というイメージで
自分のカードを "言葉" にしてみよう
目安 — 15分
さっき遊んだ ITO を、スマホだけで遊べるようにアプリを作るなら?
今日のゴールは、これを 自分の手で動くアプリに仕立てる こと。
このブレインストーミングは、その 設計図づくりです。
デジタル版Itoゲーム(これから作る)の、遊び方の流れを 時系列で 書き出してみよう!
仕組みはまだ気にしないで、アナログでやった体験を思い出しながら、普通の言葉で
OK。
例 — 早押しクイズの場合
Aで書いた遊び方を実現するために、アプリ画面に何の情報があればいいかを考えて書き出そう
(数字の番号は絶対に必要だと思います。笑)
例 — 早押しクイズの画面イメージ
brainstorm.md に書いていってください。※ 指定されたブレイクアウトルームに移動してくださいね!
設計図ができた。ここからは、動くものに仕立てていく
index.html を開いて、カードの見た目を確認しよう
↑ こう見えれば OK
配布データの中の lesson/index.html を
Chromeで開いてみよう。
左のような "カード" が 画面に1枚 現れるはず。
数字 "72" は表示できている。でも — もう一度遊ぶには、どうする?
そこで JavaScript を使うと —
自動で繰り返し遊べる仕組み がコードの中に作れる。
→ 今日これから触るのが、その JavaScript
"画面に必要なもの" を、タグに書き起こす
ブレインストーミングで書いた 「B. 画面に必要なもの」 を見ながら、
自分の手でアプリに必要な HTMLタグを書いてみよう。
やること
| 見えているもの | 対応するタグ |
|---|---|
| アップロードアイコン | <img> |
| 課題提出フォーム | <h1> |
| 以下のフォーム…(説明文) | <p> |
| 基本情報 | <h2> |
| 氏名を入力してください ★ | <label> |
| 入力欄 ★ | <input> |
★ = 初登場
いきなり「〇〇を教えて」と聞かない。順番はこの通り。
brainstorm.md から貼る)
index.html を丸ごとコピペ。途中でも OK
→ 次のスライドに、3 つ全部を含んだ「聞き方のテンプレ」があります
以下のようなものを作りたいと思っています。
[作りたいアプリの概要をここに貼る] ← 手順 1
必要な要素は 以下のように整理しました —
[ブレインストーミングのB のリストをここに貼る] ← 手順 1
いま書いている HTML はこうです —
[index.html の内容] ← 手順 2
このうち、「〇〇」がわからず、何のHTMLを使えばいいのか相談したいです。 ← 手順 3
(大学の講義で今日初めてHTMLに触れています)
※ 修正が必要な箇所だけ教えてください(index.html 全文は不要です)
■ 貼る場所
表示したい内容は必ず<body> 〜 </body> の間に
<body>
画面に表示したい情報は
全てこのエリアに書く!
</body>
■ 貼ってみて違ったら
もう一度 AI に相談して OK。
やりとりで仕上げていく。
・「こう変えたい」と伝える
・AI は修正版を
ピンポイントで返してくれる
→ 1回で完璧じゃなくていい
往復して仕上げる
コードの中の /* ... */ や <!-- ... --> はコメント(メモ書き)。触らなくてOK
AIも活用しながらデザインを作り上げていく
指示書には、こんなことが書かれている
style.css を開いてみよう
lesson/style.css を開くと、既にこんなコードが書かれている。これ、全部デザインの指示
body {
background: #f7f8fc;
...
}
.card {
background: #fff;
width: 240px;
...
}
.card-title {
font-size: 20px;
...
}
.card-number {
font-size: 48px;
...
}
class で目印 をつければ、 CSS で その目印を指定して別々にデザインできる。
■ HTML に名前をつける
<p class="theme">
あなたにとって大切なもの
</p>
<p class="body">
ヒントを入力してください
</p>
■ CSS は名前を指定して書く
.theme {
font-size: 24px;
color: navy;
}
.body {
font-size: 14px;
color: gray;
}
「この <p> だけ」「このボタンだけ」を作るための道具 → class
配布ファイルの .card-number(数字)を使って、2つの実験。
■ 実験 1 — CSS を書き換える
style.css の .card-number に color: red; を1行追加
.card-number {
font-size: 48px;
color: red; ← 追加
}
→ 数字が赤くなる
■ 実験 2 — HTML の class 名を変える
index.html の class="card-number" を
別の名前にしてみる
<p class="card-number">
↓
<p class="card-xxx">
→ 数字の指定が効かなくなる
HTML の class 名と CSS の .xxx が同じときだけ、見た目が繋がる
HTML の骨組みに、CSS で色・サイズ・余白をつけて、
"自分たちのアプリらしい見た目" に仕上げる。
やること
style.css の下に追記 → Live Server で確認■ 追記する場所
style.css の 下に積み重ねる
/* style.css */
body { ... }
.card { ... } ← 配布の class
.card-title { ... }
← ここに追加していく
(配布の class は壊さない)
■ 違ったらもう一度相談して OK
「こう変えたい」と伝えれば、
ピンポイントで返してくれる。
・「配布の class を壊さず、
〇〇風に整えて欲しい」
→ 1回で完璧じゃなくていい
往復して仕上げる
同じ名前のルールを上書きすると、後から書いた方が勝つのが基本。壊したら Cmd + Z
触って、変えて、"あれ、動いた" を積み重ねる
Webアプリは 3つの指示書 でできている。役割を整理すると —
表示内容の指示書
何を画面に
並べるか
デザインの指示書
どこを
どんな感じに
機能の指示書
いつ・何が
起きるか
→ 今日これから触るのが JavaScript。Itoカードに "動き" を加えていく
各ステップで、手を動かす → 少し変えてみて、何が起きるかを確かめる
「画面の数字を変えて」「ボタンを押したら動いて」—
そういう 頼みごと を、
コンピューターが読める形で書いていく。
ただし、コンピューターはあいまいなお願いだと言うこときいてくれない
だから、ちゃんと 分解して 伝える必要がある。
JavaScript でコードを書く前に、日本語で やりたいことを3つに分解する。
やりたいこと → 分解 → コード の順で考える。
いきなりコードから書かない。
日本語で言うと —「ページを開いたら、画面の数字を '85' に書き換える」
3つに分解すると
class="card-number" に表示されている文字'85' に書き換えるdocument.querySelector('.card-number').innerHTML = '85';
querySelector('.card-number') → What の "どこ"(. は class の目印).innerHTML → What の "何"(中身)= '85' → How試してみる
'.card-number' の部分を、HTML に書いた別の class 名に書き換えてみる。
→ 書き換わる場所が変わるはず。
Step 1 との違いは When。自動ではなく、ボタンが押された瞬間に動かしたい。
3つに分解すると
class="card-number" の文字'42' に書き換えるclass="deal-btn" がクリックされた瞬間addEventListenerdocument.querySelector('.deal-btn').addEventListener('click', function() {
document.querySelector('.card-number').innerHTML = '42';
});
addEventListener('click', …) → When{ … } は、Step 1 と同じ What + How の組試してみる
'.deal-btn' の部分を、HTML に無い class 名に書き換える。
→ ボタンを押しても何も起きないはず。
Step 2 との違いは How。固定の '42' から、毎回違う数字になる。
document.querySelector('.deal-btn').addEventListener('click', function() {
document.querySelector('.card-number').innerHTML = Math.ceil(Math.random() * 100);
});
Math.ceil(Math.random() * 100) は 1〜100 のランダムな整数 を返す型。
深く考えずに、まずコピペして動かしてみよう。
Step 3 のコードを、変数 を使って書き直す。
document.querySelector('.deal-btn').addEventListener('click', function() {
let card = Math.ceil(Math.random() * 100);
document.querySelector('.card-number').innerHTML = card;
});
card という "箱" に数字を入れて、そのあとで card を使う。これが 変数。
試してみる
card を別の名前(例 — number)に変える → 動く?let card = …; と innerHTML = card; の順番を入れ替える → 動く?名前は自由に決められる。でも 使う前に "箱を作っておく" 順番 は守らないといけない。
チームで考えた仕様を、自分の手で仕上げる
チームで出した「遊び方」と「画面に必要なもの」を土台に、
自分の手で動くアプリを完成させる。
ポイント
まずはブレインストーミングで相談した内容を実現しよう!
できる人は、いろいろなものを勝手に加えてもらってOK!
以下一式を、03_20260423_data フォルダごと提出
一式の中身
brainstorm.md — チームで作った仕様書(今日書いたもの)index.html — HTML 一式style.css — CSS 一式script.js — JavaScript 一式(もしくは index.html 内の <script>)
最後の30分は、課題に着手する時間。この時間内で担当チューターが、各グループを巡回してチェックする。
時間の使い方
チューターのチェック時は、今の状態と 自分の工夫として何を足そうとしているかを伝えよう。