事例217
順次・分岐・反復構造は10連ガチャのシミュレーションで教えよう
神奈川県立茅ケ崎西浜高校 鎌田高徳先生
「情報Ⅰ」の第3章「コンピューターとプログラミング」の『基礎的プログラム』では、「順次」「分岐」「反復」の3つの制御構造を扱うことになっていますが、これを10連ガチャのシミュレーションを作ることで教えた、という事例をご紹介したいと思います。
私は神奈川県立茅ケ崎西浜高校に7年間勤務していますが、そのうち6年間は、神奈川県のプログラミング教育推進校としてプログラミング教育を行ってきました。
身近な「ガチャ」から学ぶ「順次」「分岐」「反復」構造
来年度から始まる「情報Ⅰ」では、「情報I」の「教員研修用教材」にも掲載されているように、『基本プログラム』のところで、「順次」「分岐」「反復」の三つの基本構造を教えることになっています。
これをどのように教えるか、ということですが、普通はフローチャートを書いたり、プログラムを書いたりされていると思います。ただ、こういったやり方では、なかなか身近なものに結びけられないのではないか、と思っていましたので、今回は生徒達にも身近なガチャのシミュレータを作る、という授業をやってみました。
※クリックすると拡大します
具体的には、1%の確率で当たる10連ガチャのシミュレータをPythonで作って、作ったシミュレータを100回した結果のデータを100人分集めたらどうなるか、というシミュレーションを授業の中でやってみることにしました。
今日のお題がこちらです。実は、乱数を発生させるだけであれば順次構造で作ることができますが、当たったか外れたかが分かるためには、分岐構造を使う必要があります。ですので、単発ガチャを作った後、「君たちがふだん使ってるガチャは単発ガチャだけじゃないよね(ソシャゲ[ソーシャルゲーム]はたいてい10連ガチャです)。だから今度は10連ガチャを作ってみよう」と持ち掛けて、次に反復構造を加えたプログラムで10連ガチャを作ります。
10連ガチャができたら、「当選確率1%のガチャを100回引いたら、約何%の確率で、1%でゲットできるウルトラレアキャラやレアキャラなどをゲットできるか」ということを授業の中でやってみました。
実は、このガチャのデータを取る活動は、今、南極に行かれている日出学園の武善紀之先生の「学校とICT」(SKY株式会社)の資料(※)を参考にしました。
私ももともとExcelでガチャのシミュレーションを作る授業は今までやってきましたが、Pythonでやるのは初めてでした。
武善先生は、ガチャを作るだけでなく、実際に引かせてデータを集めることをされていて、とても面白そうなので、私も取り入れてみることにしました。
※クリックすると拡大します
この10連ガチャのプログラムの中には、「順次」「分岐」「反復」の基本構造が全部入っています。そして、シミュレータを作った上で、生徒に「1人10回分やりなさい」と言うと、すごく盛り上がってやってくれます。
シミュレーションを作って終わりでなく、データ活用につなぐ
こちらがデータ収集の活動です。ガチャを100回引き、その際に「当たり」を引いたタイミングと回数について、記録を取ります。1クラスが40人ですので、「ガチャ100回分のデータを1人2回(余裕がある人は3回)集めよう」ということにして、実際にガチャを引いた結果がこちらです。レアキャラが当たる確率は約62%になります。
実際に100回引いて、1回以上当たりが出た人のデータをGoogleフォームなどで集めると、生徒たちは一生懸命プログラミングして、データ集めに協力してくれます。
※クリックすると拡大します
大切なのは、プログラム実行しておしまいにするのでなく、実行結果のデータを集めて、それをデータの活用の活動につなげていくことであると思います。皆さんも、ただプログラムを作らせるだけでなく、実行結果のデータを集めて、そこから次の活動につなげる、ということをやってみてはいかがでしょうか。
※鎌田先生の情報科の授業の資料はこちらをご参照ください。
https://sites.google.com/site/johoeportfolio/home
神奈川県高等学校教科研究会情報部会情報科実践事例報告会2021オンライン オンデマンド発表より