情報科#4_プログラミングは楽しみながら学ぼう
情報科の辻誠一です。
私事で恐縮ですが、私はとても夏が大好きです。猛暑、酷暑とまでなると、話は別問題ですが、夏自体は、暑い中で様々な方と話をして交流する機会が増えるため、とても大好きです。
(えっ、そろそろ秋だし、冬に近づいているって?ウソーーーーー!!!)
はい、とんだ茶番を読ませてしまい、誠に申し訳ございませんでした。本校でも多くの教員の方々がnoteを書き始められて、それが好評らしいので、私は書かなくていいか?と思っていたわけではないんですが、もう私の前回投稿から4カ月以上も経っているんですね。ネタは山ほどあるのですが、私の怠慢により滞っていました。大変申し訳ございませんでした。
ということで今回はリハビリを兼ねてやはり情報科の内容についてです。そして、前回はプログラミングでも共通テストにも関連する話をしました。
今回は少し毛並みを変えて、楽しくプログラミングを学ぶところを紹介していこうと考えています。
◆まずは触れてみよう
プログラミングを学ぶ意義や養いたい力については、情報科#2で書きました。まあ、それはそれとして素晴らしいわけですが、とにかく実践から進まなければ、理屈だけでは面白くありません。
昨年までは、Google Colaboratoryを用いてPythonという言語で最初からプログラミングを文字通り言語から取り組んでいました。しかし、それでは少しとっつきにくいのではということが懸念されます。そのため、通常プログラミングの授業は生徒たちがある程度、情報のことについてわかってきた3学期に行うことが通例でした。
これが本年、新しいクラス編成がスタートし、1年時よりSGクラスとSPクラスに分かれることになりました。SPクラスは「国公立大学・難関私立大学を目指す」ことが掲げられてるため、共通テスト科目でもある情報もテンポアップする必要があります。これを契機にSPクラスにおいては1学期にプログラミングの授業をすることに決めました。そして、Google Colaboratoryを用いたPythonから始めるのではなく、micro:bitといわれるプログラミングで色々操作できる道具を用いて授業することにしました。小中学生の皆さん方にもなじみがある「Scratch」のようなブロックを重ねることによってできるブロックプログラミングのため、皆にプログラミングが浸透しやすくなるのではと思ったからです。
年度当初にmicro:bitの機械をクラス分購入して、プログラミングツールをMicrosoft MakeCodeというものを使用しました。初歩的な使い方、プログラミングの方法を生徒にスライドで配信して、あとは実際にプログラミングに取り組んでもらうだけでしたが、MakeCodeでもある程度micro:bitのシミュレーターが起動するため、生徒はとても楽しそうにプログラムをしていたと思います。昔懐かしいゲーム音みたいなものも教室内に響き渡りますが、それはそれで、プログラミングの授業なので、全く問題ありません。
(「ゲーム音がしている…誰か遊んでるいるのか!」とお叱りにあうかもしれないと少しだけビクビクしていましたが、逆にそんなゲーム音の鳴るゲームは珍しい昨今です。)
特に問題なく進み、スムーズにGoogle Colaboratoryを用いたPythonのプログラムに移ったかに見えました。
◆やはり文字で入力するプログラミングは難しい?
生徒たちには文字だけでプログラミングするということは少し高度なことかもしれないため、教え合いながら、課題を進めていくことを提案していました。生徒たちは教え合いながら多くの生徒がこちらの出した課題の大半を終わらせることができました。
しかし、期末考査では、プログラミングのテストを出題したものの、成績自体は芳しいものではありませんでした。いざ、プログラミングのテストとなると、あまり理解が進んでいないという所が現状だと感じました。
(まあ、そもそもプログラミングって筆記テストになじむものかどうかの議論もありますが…)
◆しょーもないゲーム、いわゆる「クソゲー」を作ってもらおう
そこで、このままでは良くないと思い、夏休みにもプログラミングの宿題を出そうと考えました。ただしこのままの同じやり方では結果が伴わない可能性があります。そんな時、他校の情報科の先生と話す機会があり、その中で話題となった「クソゲーを作らせてみたらどうか」と言う話を思い出しました。
ご存じの方もいらっしゃるかもしれませんが、かつてのゲームはクリアが劇的に難しいと思われるゲームも、ちょっとした隠しコマンドを一つ入力すれば、劇的に簡単になってしまうものがいくつか存在していました。私はこれを「クソゲー」と定義して、夏休みの宿題としてそのようなゲームを作るよう、生徒たちにミッションを与えました。
ポイントは以下2つ、個人的にハードルを非常に低く設定することができたと思います。
・素晴らしいゲーム、皆から賛嘆されるゲームを作らなくてよい
・つまらなくてもそれはクソゲーの一つ
ゲームは3人までの共同編集を認め、さらに自作レビューも書いてもらうことにしました。クソゲーを作るために生徒たちは頑張って順次・分岐・反復のそれぞれの構造を学んでいきました。
◆クソゲー品評会
先ほど書いたように、夏休みの宿題は「クソゲー」を作ることでした。宿題の提出となると、教員が全てチェック・採点をしますが、今回は提出物はゲームです。私だけが一人で楽しむというのはもったいない。そこで、夏休み明けの最初の授業を、作成したゲームをプレイしあい、どの作品が良かったか自由に話し合うような授業にすることにしました。名付けて「クソゲー品評会」。「クソゲーとして面白い」と思った作品を一人4票まで投票することができます。多少、高校生の作る作品としてはいかがなものか、またAIを駆使して作成したようなものもありましたが、中には非常に凝った作品もあり、熱狂的にハマる生徒たちが出現したり、どういうプログラムでこのゲームが実行されているのかを真剣に確認する生徒も現れ、単に楽しいだけでない有意義な時間を過ごすことができました。
◆クソゲー品評会で好評だったプログラムをそのままテストに
せっかくいい作品が出てきたにもかかわらず、「投票の結果、○○さんの作品が良かったでーす。おめでとうございます!」だけで終わるのは、これまたもったいない話です。
皆が投票してくれた上位4作品の概要を私なりにフローチャートにまとめ、簡略化したプログラムを生徒に配布。そして「この中から一つ、中間テストに出すからね」と伝えました。
プログラムを自分ごととすることはとても大変なことだと思います。ただ、自分が授業で触れたものであれば、プログラミングであっても生徒たちは自分ごととして捉えて、テストでもそこそこ良い結果を出してくれるのではないかと期待しました。
結果は概ね予想通り、選択肢だけの問題でしたが、どの問題も一番生徒が多く選んだ選択肢がそのまま正解になっていました。期末考査では空欄が目立った中、今回の中間考査では非常に好成績であったと思います。
今回はクソゲーということでプログラミングを楽しみながら生徒たちは取り組んでくれました。SPクラスの生徒たちは、こういった経験が生きる形で「共通テスト」にもつながればいいなと思います。
ちょっと真面目過ぎましたかね?笑
今後も探り探り書いていきますのでよろしくお願いします。