1日目のゴールと今日のテーマ
1日目のテーマは
「ランダムに1つ選んで表示する感覚をつかむ」 ことです。
目指すのは、とてもシンプルなランダム表示アプリ。
ボタンを押すと
「今日の運勢」や「おみくじ結果」が
ランダムで1つだけ表示される。
そのために、今日はこの2つを使います。
Math(特に Math.random)
配列操作(配列から1つ取り出す)
「運勢アプリ」という“遊び”の中で、
ランダムと配列の超基本を体に入れていきます。
ランダムの入口:Math.random を理解する
Math.random は「0以上1未満のランダムな数」をくれる
まずは JavaScript のランダムの出発点。
Math.random()
JavaScriptこれは、実行するたびに
0以上1未満の小数(0〜0.9999…) を返します。
例えば、こんな値が返ってきます(イメージです)。
0.123456
0.789012
0.005432
実際のコード例:
console.log(Math.random());
console.log(Math.random());
console.log(Math.random());
JavaScript実行するたびに、違う数が表示されます。
ここで大事なのは、
Math.random だけだと、
「0〜1の間の小数」しかくれない。
ということです。
でも、運勢アプリで欲しいのは
「配列の中からの1つ」なので、
このランダムな小数を「インデックス」に変換していきます。
配列で「候補」をまとめて持つ感覚
おみくじ候補を配列で用意する
例えば、おみくじの結果を
こうやって配列で持ちます。
const fortunes = [
"大吉",
"中吉",
"小吉",
"吉",
"末吉",
"凶"
];
JavaScriptここでのポイントは、
複数の候補(文字)を
1つの配列にまとめて管理していることです。
fortunes[0] → “大吉”fortunes[1] → “中吉”fortunes[2] → “小吉”
…というふうに、数字でアクセスできます。
配列の長さ(要素数)は fortunes.length で分かります。
console.log(fortunes.length); // 6
JavaScript「6種類の結果があるおみくじ」だ、とわかります。
ランダムな配列の要素を選ぶまでの流れ
ステップを日本語で整理する
やりたいことはこうです。
fortunesの中から- ランダムに1つインデックスを決めて
- そのインデックスの要素を取り出す
つまり、
「0〜(配列の長さ − 1)のどれか」を
ランダムに選べればOKです。
fortunes.length は 6 なので、
0〜5 のどれかをランダムに選びたい。
これを Math.random で作ります。
Math.random から「0〜配列長−1の整数」を作る
まずは「0以上 length 未満」の小数を作る
Math.random() は 0〜1未満なので、
Math.random() * fortunes.length
とすると、
0 以上 6 未満 の小数になります。
例(イメージ):
Math.random() → 0.2 → 0.2 * 6 = 1.2Math.random() → 0.8 → 0.8 * 6 = 4.8
ここまでで、「範囲の拡大」はできました。
次は“小数を整数にする”です。
Math.floor で「小数点以下を切り捨てる」
JavaScript には、
「小数点以下を切り捨てる」関数があります。
Math.floor(1.2); // 1
Math.floor(4.8); // 4
Math.floor(0.0); // 0
JavaScriptこれを組み合わせると、
const index = Math.floor(Math.random() * fortunes.length);
JavaScriptで、
0〜5 のいずれかの整数が手に入ります。
ここが今日の超重要ポイントです。
「配列のランダム要素を取る =
Math.floor(Math.random() * 配列.length) をインデックスにする」
この形は、何度も何度も使います。
実際にランダムおみくじを1回実行するコード
コンソールで動かす一番小さい例
ここまでを使って、
「おみくじ結果を1回表示するだけ」のコードを書いてみます。
const fortunes = [
"大吉",
"中吉",
"小吉",
"吉",
"末吉",
"凶"
];
const index = Math.floor(Math.random() * fortunes.length);
const result = fortunes[index];
console.log("今日の運勢は……");
console.log(result + "です!");
JavaScript流れを日本語にすると:
fortunes配列に全部の結果を入れるMath.random()で 0〜1 の小数を得る- それに
fortunes.length(6)を掛けて 0〜6未満に広げる Math.floorで 0〜5 のどれかの整数を作る- その整数をインデックスとして
fortunes[index]を取り出す - 「今日の運勢は……」「◯◯です!」と表示する
頭の中で動きを追ってみてください。
HTMLと組み合わせて「ボタン付きおみくじ」にするイメージ
超シンプルな画面の形
1日目はイメージレベルでOKですが、
HTML と組み合わせるとこんな感じになります。
<button id="omikuji-button">おみくじをひく</button>
<div id="result"></div>
JavaScript 側ではこう。
const fortunes = [
"大吉",
"中吉",
"小吉",
"吉",
"末吉",
"凶"
];
const buttonEl = document.getElementById("omikuji-button");
const resultEl = document.getElementById("result");
buttonEl.addEventListener("click", () => {
const index = Math.floor(Math.random() * fortunes.length);
const result = fortunes[index];
resultEl.textContent = "今日の運勢: " + result;
});
JavaScriptボタンを押すたびに、
インデックスをランダムに作る
配列からその要素を取り出す
画面の <div> に表示する
という流れになります。
今日は「こうつながるんだな」と
ざっくりイメージできれば十分です。
1日目で特に深掘りしておきたいポイント
1つ目:Math.random と配列.length の組み合わせ
ここは本当に大事なので、もう一度式だけ整理します。
const index = Math.floor(Math.random() * fortunes.length);
JavaScriptMath.random() → 0〜1未満
Math.random() * fortunes.length → 0〜 length 未満
Math.floor(…) → 0〜 length-1 の整数
配列のインデックスは 0 から始まります。
要素数が 6 のとき、
インデックスは 0〜5 です。
だから、
0〜(length−1) の整数を作る
→ その値をインデックスに使う
という流れが、配列とランダムをつなぐ“橋”になります。
2つ目:候補を配列にまとめると「増やすのが楽」になる
もし fortunes を配列ではなく
バラバラの変数で持っていたらどうでしょう。
const f1 = "大吉";
const f2 = "中吉";
// ...
JavaScriptランダムに選ぶ処理が一気に面倒になります。
配列にしておくと、
候補を増やしたくなったら、
const fortunes = [
"大吉",
"中吉",
"小吉",
"吉",
"末吉",
"凶",
"大凶" // ← こうやって足すだけ
];
JavaScriptと追加するだけでOK。
ランダムの式は fortunes.length を使っているので、
要素数が増えても勝手に対応してくれます。
「候補の一覧は配列にまとめる」
この癖をつけておくと、
ランダム系のアプリがぐっと作りやすくなります。
1日目のまとめと、2日目へのつなぎ
今日やったことを整理すると、こうなります。
Math.random が「0以上1未満の小数」を返すことを知った。
配列に「おみくじの候補」(大吉〜凶)をまとめて持つ形を学んだ。Math.floor(Math.random() * 配列.length) で、0〜length−1のランダムな整数を作れるようになった。
その整数をインデックスにして、fortunes[index] でランダムな要素を取り出す流れを理解した。
コンソール表示、およびボタン+表示エリアのイメージで、ランダムおみくじアプリの全体像を掴んだ。
2日目からは、ここに
運勢にメッセージをつける(「ラッキーカラー」など)
配列の中身をもう少し構造的にする
ボタンを押すたびに見た目をちょっと工夫する
などを足しながら、
「ランダム表示アプリ」を少しずつ“アプリらしく”育てていきます。
最後にひとつだけ。
今日の中で、「あ、これランダムっぽくて面白いな」と感じたのはどこでしたか?
Math.random の数字の変わり方か、fortunes[index] で毎回違う結果が出るところか。
その「面白い」と感じた瞬間が、
あなたとランダムアプリの一番大事な接点です。
そこを意識しながら、2日目も一緒に育てていきましょう。


