事例364
プログラミングの分野はどのように展開していますか
東京都立小平高校 小松一智先生
Pythonの動作環境はJupyter NotebookとGoogle Colaboratoryをいいところ取りで併用

プログラミングの分野は、皆さんもいろいろ悩まれながら授業をされていると思います。私も自身も実際悩みながら授業をしているのですが、今日はそういった内容を紹介させていただきます。
「情報I」になって、内容が非常に盛りだくさんになりました。内容をどこまでやればいいのか、授業だけで理解できるのか、どうしても時間が足りない、定着させるには家でもできるような環境が必要になる、共通テストへの対応をどうするのか…といったところが非常に悩ましいと思っています。

そういったところが全て解決できるかというと、そういうわけではありません。
小平高校の環境では、プログラミング環境として、Pythonを使っています。東京都のCALL教室はWindows環境なので、Anacondaをインストールして、Jupyter Notebookを使っています。これはAnacondaをインストールすると入ってくるものです。生徒はWindowsの一人1台端末を使っています。家で続きをする場合は、わざわざAnacondaをインストールするのはハードルが高いので、Google Colaboratoryを推奨しています。

Jupyter Notebookを使っているのは、Google Colaboratoryを意識しています。見た目も同じで、基本的にJupyter Notebook で動作することは、Google Colaboratory でもできます。
また、ローカルにインストールしているので、ネットワークが不調であっても問題なく動作できる、というところがありがたいところですし、課題のファイルの配布が非常に簡単です。

夏休みにpaizaで課題に取り組み、その復習の形で基礎事項を押さえる
今年のプログラミング分野は、すでに終了していますが、このような進め方で行ったということをご紹介します。
基本的にプログラミングは2学期に行いましたが、いきなり始めると内容を全て理解するのはなかなか厳しいところがあるので、夏休みに外部サービスのpaiza(※1)で課題を出しておきました。paizaは、ここ数年学校フリーパスを利用しており、今年もこちらを利用させてもらいました。
プログラミングの内容を、paizaだけで全て理解することは難しいので、paizaで学習した上で3時間ほど復習を兼ねて基礎的な部分を学習しました。さらに、アルゴリズムについてもしっかり学ばせたいので、バブルソートを1時間と、乱数の活用を1時間行って、単元としてのプログラミングは基本的におしまい、ということにしました。

シミュレーションも引き続きPythonを使い、最後にオリジナルのゲームを作る
このあとのシミュレーションもPythonを使って、ガチャのシミュレーション(乱数を使う)や、教科書に載っている円周率を求めるシミュレーションを行うことで、引き続きプログラミングに触れていきました。
そして、最後に総まとめとしてオリジナルのゲームを作成しました。総まとめにゲームの作成を入れたことで、単に基礎的な内容と、アルゴリズムと、シミュレーションをやるだけよりも、生徒の食いつきが非常に良かったと思います。
そして、できたゲームについて最後に相互評価を行うことで、お互いの理解度の違いも見えてくるので、それもなかなかおもしろかったです。
基礎編はなるべくスモールステップで
ここからは、それぞれの段階の進め方について説明します。
基礎編では、ある程度paizaで経験してプログラムをいじることはできるようになっていますが、一応paizaを使っていなかった時と同様にプリントを配布して。課題ごとに実行環境を変えながら進めています。
ご覧いただいてわかると思いますが、非常にスモールステップで進めています。これは、Jupyter Notebookを使うと、スモールステップの進め方がやりやすいということがあります。
※クリックすると拡大します
paizaを使うようになって、このように授業スライドの中に「今日わからかったことは、paizaのココを見ると理解できますよ」と示すようにしています。
※クリックすると拡大します
ゲームの作成では分岐構造と反復構造を必ず入れる。While文が使いたかったら、自分で学ぶ!
プログラミングの総まとめ編では、オリジナルのゲームを作成します。基本的には、授業で学んだことを組み合わせて何かしらオリジナルのゲームを作るのですが、分岐構造と反復構造を必ず使うことを条件にしました。さらにwhile文を使うと、ゲームらしい動きができるので、使える人は取り入れてみよう、ということにしました。
ここはpaizaの課題では課していない部分になるので、やりたい人は新たに自分で学んで取れ入れることになります。
この活動は、クラスや生徒個人の理解度を見て、1人でするのか、グループで取り組ませるかを決めています。グループで取り組めば、皆で盛り上がりますし、個人で取り組む場合は、周りの人に聞いたり、自分で調べたりするので、定着の度合いはけっこう上がります。
※クリックすると拡大します
このように、ゲーム制作は学んだ内容をフル活用する形で行いました。生徒には毎時間振り返りを書いてもらっていますが、「とてもおもしろかった」「実際に作ってみると難しくて驚いた」という感想が見られますし、「自分なりに工夫できるところは工夫した」というというコメントもあり、ゼロから全てを作るというより、組み合わせて考えたら、それでもおもしろいものができたというところに落ち着いてくるので、やってみてよかったなと思いました。
※クリックすると拡大します
中には「ずっとエラーが続いて、どこが間違っているかわからなかった」という人もいましたが、「1回やってみて面白かったので、他のゲームを作れるようになりたい」という人もあり、様々な意見が出て来るのがおもしろいと思いました。
最後に総まとめ的に何かを作らせるというのは非常に大事であると思いますので、それを目標にすることで、自分で一つのもの作ることができたという経験は、結果的に共通テストにもつながってくると思います。
※クリックすると拡大します
このように、今年のプログラミング分野は、生徒の復習を兼ねた基礎の部分と、総まとめのゲーム制作という流れで進めてみました、というお話でした。参考にしていただけたらと思います。

神奈川県情報部会実践事例報告会2024オンライン オンデマンド発表より