第5回となる今回のテーマは、「家族みんなのりんご管理」。
前回まで「ぼく」「兄」「妹」の3人でしたが、今回はついに「お父さん」「お母さん」も登場して、家族全員分のりんごを管理することになりました。
【第5回】では、第4回で学んだ「変数」の考え方をさらに深め、変数を使った計算や、時間の経過とともに変化する数字の更新を実践していきます。
今回の講座を通して、「変数を使いこなす技術」を磨きながら、同時に「変数だけで頑張る管理の限界」についても、身をもって感じてもらいたいと思います。
前回の宿題:答え合わせ
本題に入る前に、前回の宿題を覚えていますか?
自分のお小遣いを「おこづかい」という変数で管理し、
Aボタンで「100円もらう(加算)」、
Bボタンで「50円使う(減算)」、
A+Bボタンで「いま、いくら残っているか」を表示するチャレンジでしたね。
このプログラムでは、「変数(おこづかい)」をいかに正しく更新するかがポイントです。
プログラムの組み方
- 最初だけ: 変数「おこづかい」を「0」に初期化します。
- Aボタンが押されたとき:
おこづかい = おこづかい + 100(現在の値に100を足す) - Bボタンが押されたとき:
おこづかい = おこづかい - 50(現在の値から50を引く) - A+Bボタンが押されたとき:
数を表示 [おこづかい](今の残額を表示)

実際に動かしてみて、Bボタンを連打すると「おこづかい」がマイナスになってしまったはずです。
「0円の状態で50円使う」という命令を出したとき、コンピューターは「0 – 50 = -50」と正確に計算してしまいます。
「もし、おこづかいが0より小さくなろうとしたら、計算を実行しない」という工夫が今後の鍵になります。
これについては、また別の機会にじっくり攻略していきましょう。
今日のミッション:家族全員のりんごの数を管理しよう
今回も前回の「プログラム4」の続きから作ります。
「複製(コピー)」というテクニックを使って「プログラム5」を準備をしましょう。
プロジェクトを複製する手順は、【第4回】 【micro:bit講座 第4回】変数の応用:計算でりんごの数を変えてみよう!を参考にしてください。
ミッション1:新しい家族「お父さん」「お母さん」の登場とデータの追加
前回は「僕」と「兄」、「妹」のりんごを管理しました。
今回は、さらに「お父さん」「お母さん」を追加して、5人のデータを扱います。
1. 「おとうさんのりんご」と「おかあさんのりんご」変数を作る
まずは、ツールボックスの「変数」から「変数を追加する…」をクリックし、「おとうさんのりんご」「おかあさんのりんご」という新しい魔法のバッグを作りましょう。
2. 初期値をセットする(最初だけ)
「最初だけ」ブロックの中に、以下の設定を追加します。
- 変数「おとうさんのりんご」を [3] にする
- 変数「おかあさんのりんご」を [6] にする

3. ボタンで表示する?
次に、お父さんとお母さんのりんごの数を確認するボタンを作ります。
「入力」カテゴリーから「ボタン ? が押されたとき」というイベントブロックを配置し、その中に「数を表示 [おとうさんのりんご] 数を表示 [おかあさんのりんご] 」を入れればよかったですよね?
あれ、AボタンもBボタンもA+Bボタンも使って、あと二人分足りませんよね。
ミッション2:制約を「工夫」で乗り越えよう!
ボタンが足りないという制約を、皆さんのアイデアで解決してみましょう!
以下の3つのアプローチから、どれか一つ(あるいは複数)に挑戦してみてください。
1. 「イベント」を組み合わせる工夫
micro:bitにはA、B、A+B以外にも「入力」があります。これらを組み合わせて、家族全員の情報を表示する「入力メニュー」を作ってみましょう。
- 「ゆさぶられたとき」: 本体を振ると、お父さんの数が出る。
- 「ロゴをタッチしたとき」: ロゴを触ると、お母さんの数が出る。
これなら、ボタンを温存したまま家族全員の情報を呼び出せますね!
2. 表示の仕方を工夫する(シーケンス処理)
一つのボタン(例えばA+B)を押したときに、連続して全員の数を表示させる工夫です。
- 「お父さんの数」を表示
- 「一時停止(1秒)」
- 「お母さんの数」を表示
- 「一時停止(1秒)」 …とブロックを並べることで、ボタンを押し直さなくても、流れるように家族全員の情報を確認できます。
3. 「目的」を絞り込んで工夫する
「5人分をバラバラに見る」のではなく、「全員の合計」や「一番多いのは誰か?」というように、見るべき情報を整理するのも立派な工夫です。
「イベント」を組み合わせる方法
micro:bitの「入力」を見てみると「ロゴが短くタップされたとき」「端子P0が短くタップされたとき」があります。
これなら画面のエミュレータでも動作しそうなのでこの二つの入力動作で表示することにします。
- 「ロゴが短くタップされたとき」: お父さんの数が出る。
- 「端子P0が短くタップされたとき」: お母さんの数が出る。

エンジニアからの問いかけ:制約があるからこそ面白い!
もしボタンが無限にあったら、プログラムはただ「作業を並べるだけ」の退屈なものになってしまうかもしれません。
でも、「ボタンが足りない」「画面が小さい」「変数が多すぎる」という制約があるからこそ、私たちは「どうすれば一番使いやすいかな?」と知恵を絞ります。
- どうすれば、もっと楽に情報を確認できるだろう?
- どうすれば、ボタンを間違えずに済むだろう?
こうした「工夫」の積み重ねが、便利なアプリやゲームを作ります。
さあ、皆さんのmicro:bitを、限られたボタンをフル活用して「最高の家族管理システム」に改造してみましょう。
どんな工夫を思いつきましたか?ぜひ教えてください!
ミッション3:りんごをあげる「やり取り」をプログラムする
ここからが今回のレッスンのハイライトです。
前回「僕が1個、兄が1個、それぞれ妹にりんごをあげた」という状況をプログラムで表現しました。
今回はさらに「お父さんが1個食べる、お母さんがみんなにりんごを1つずつあげる」という状況をプログラムで表現します。
1. 「あげる数」「たべる数」も変数にする
将来的にすぐ変更できるように、「誰が何個あげるか」を管理するための新しいバッグを2つ作ります。
- 変数「おとうさんがたべるりんご」を [1] にする
- 変数「おかあさんがあげるりんご」を [1] にする
これらを「最初だけ」ブロックに追加しましょう。
2. 家族全員のりんごを計算する
いよいよメインイベントです。
「ロゴが短くタップされたとき」「端子P0が短くタップされたとき」の処理を追加しましょう。
合計を計算して、家族全員のバッグを最新の状態に更新します。

今日のまとめ:変数と工夫のコンビネーション
今回のレッスンでは、以下の重要なポイントを学びました。
- 変数の大規模管理: 大量に変数を扱うことの難しさを体験しました。
- 制約を乗り越える工夫: 新しい入力を活用し、操作性を最適化する方法を学びました。
- 複雑なやり取りの再現: 日常の動きを、変数の値を正しく「更新」することで再現しました。
- 変数の管理限界: なぜもっと賢い管理方法が必要なのかを身をもって理解しました。
今日のあなたは、「変数地獄」とも言える複雑なプログラムを自分の手で組み上げました。
もし明日、家族が100人になったらどうすればいいでしょうか?
その「大変さ」こそが、後に学ぶ「配列(リスト)」という魔法の棚を理解するための、何にも代えがたい最高の準備になります。
【宿題】お母さんのりんご配りゲームを作ってみよう
実際のプログラミング現場では、ただプログラムを動かすだけでなく、「もしものハプニング」に備えるルール作りが非常に重要です。
今回は、あなたが「プログラムの管理者」となって、お母さんのりんごを賢く配るための管理システムを作ってみましょう。
ただし、一つだけ注意点があります。「ルールを無視して操作すると、プログラムは正直にバグを起こします」。
あえてルールを破って、コンピューターがどう反応するか、その目で確かめてみてください。
お母さんは今、りんごを5個持っています。でも、むやみに配るとすぐに在庫がなくなってしまいますよね。そこで、今回は「りんごの在庫管理ゲーム」を作ります!
「残数を調べる」「配る」「補充する」という3つのアクションを駆使して、家族みんなを満足させましょう。さあ、あなたはバグを起こさずに、完璧な管理ができるかな?
お母さんはりんごを5個持っています。下のルールに従ってりんごを配るプログラムをつくってください。
<ルール>
1.りんごを配る前には必ずAボタンを押して、残りのりんごの数を調べて(目で見て)ください。
2.残りのりんごが3個以上あればBボタンを押して、3個配ることができます。
3.残りのりんごが3個なければA+Bボタンを押して、3個補充することができます。
これまで、計算はすべてコンピューター(micro:bit)任せでしたが、今回は「人間」と「コンピューター」で役割分担をしてみましょう。
「在庫が3個未満なら配らない」というルールを、まずはプログラムではなく、あなたの「操作の工夫」で守ってみてください。
実際に動かしてみて、「もし守らなかったらどうなるか?」を体験することが、次回学ぶ「IF文(条件分岐)」という最強の魔法への一番の近道です。
次回の予告
次回の第6回テーマは「【第6回】 【micro:bit講座 第6回】条件分岐の基本:IF文で「もし〜なら」をプログラミングしよう!」です。
今日のレッスンが役に立った、面白かったという方は、ぜひコメントをお願いします!
あなたの応援が、次のエネルギーになります。
それでは、また次のレッスンでお会いしましょう。
ありがとうございました!
カリキュラム一覧(進捗マップ)
- 【第0回】 【micro:bit講座 第0回】準備編:MakeCodeでプログラミングの第一歩を踏み出そう!
- 【番外編】保護者の皆様へ:中学生のプログラミング教育、親として大切にしたい「失敗の教え方」
- 【第1回】 【micro:bit講座 第1回】基本の操作:MakeCodeでmicro:bitを動かそう!
- 【第2回】 【micro:bit講座 第2回】計算の基本:計算ブロックで電卓を作ろう!
- 【第3回】 【micro:bit講座 第3回】変数の仕組み:変数という「魔法のバッグ」を使いこなそう!
- 【第4回】 【micro:bit講座 第4回】変数の応用:計算でりんごの数を変えてみよう!
- 【第5回】 【micro:bit講座 第5回】変数の実践:もっと便利に!変数で計算を自動化しよう!
- 【第6回】 【micro:bit講座 第6回】条件分岐の基本:IF文で「もし〜なら」をプログラミングしよう!
- 【第7回】 【micro:bit講座 第7回】IF文のネスト(入れ子):条件の中に条件を入れ、より緻密な判断をしよう!
- 【第8回】 【micro:bit講座 第8回】論理演算(AND / OR / NOT):複数の条件をスマートにまとめよう!
- 【第9回】 【micro:bit講座 第9回】配列の基本:変数がいっぱいで大変!「整理棚(配列)」でデータをまとめよう!
- 【第10回】 【micro:bit講座 第10回】配列の応用:棚の番号と中身の入れ替えをマスターしよう!
- 【第11回】 【micro:bit講座 第11回】ループ処理:繰り返しを使って効率よく動かそう!
- 【第12回】 【micro:bit講座 第12回】配列とループの最強コンボ(「リストの要素数だけ繰り返す」)(8/19 10時公開予定!)
- 【第13回】 【micro:bit講座 実践編 第1回】マイクロビットで数当てゲームを作ってみよう!ゲームの仕様・設計からはじめよう! (仮)(公開予定!)
- 【第14回】 【micro:bit講座 実践編 第2回】マイクロビットで数当てゲームを作ってみよう!制約をクリアする設計変更 (仮)(公開予定!)
- 以降



コメント