バーチャル情報入試シンポジウム2020春 on YouTube Live(ニューシン2020)

プログラミング教育に向けての中学・高校でのオンライン授業の実践事例

青山学院中等部・高等部 安藤昇先生

オンラインでふだんの対面型以上の授業を実現するために

私からは、学校現場で実際に先駆け的にどのようなプログラミング教育を行っているか、ということをお話ししたいと思います。

 

簡単に自己紹介しますと、私はもともとメディアや放送が大好きで、今この放送をしているスタジオも私の自宅にあります。BSやHuluでブログラミングの番組を持っていますし、オンラインの学校であるN中学校のカリキュラムアドバイザーも行っています。

 

YouTubeチャンネルもたくさん運営しており、今1400本ほど授業の動画をあげています。

 

現在、青山学院中等部ではYouTubeを使ってオンライン授業を行っています。

 

 

私は、オンラインで普通の対面授業以上の授業をしたいので、スタジオの背面はブルーバックにして、iPadやパソコンの前に立って授業を行うようにしています。要するに、オンライン授業が得意で、自分でスタジオを持つほど好きなので、やりたくてしかたがない、というところです。

 

生徒の側にはサブスクリーンがあると非常に見やすいので、パソコンとスマートフォンを併用して、下図のような環境を作ってもらっています。

 

 

そして、私の方はライブストリーミングソフトウエアをバーチャルカメラとして利用し、配信することで、生徒にはUI(ユーザ・インターフェース)を統一して配信することができるようにしました。画面を切り替えたときにきちんと映っているかどうか確認をしなくてはいけないので、常に画面が自分の後ろに映るようにしています。

 

 

授業の中でどのような工夫をしているかについてご紹介していきます。私のスタジオがどのような仕組みでできているかというのは、以下のnoteの記事に載せています。低予算で、手軽に、本格的な遠隔授業を始めるためのノウハウがまとめてあります。こちらを使っていただくと、誰でも手軽にクオリティーの高い授業ができるようになります。

 

低予算で手軽に本格的な遠隔授業を始める①

低予算で手軽に本格的な遠隔授業を始める Windows PC編②

低予算で手軽に本格的な遠隔授業を始める Windows PC & iPad編②

 

教育版マインクラフトでコンピュータサイエンスの基礎を楽しみながら学ぶ

青山学院中等部のプログラミング授業では、教育版マインクラフト(※1)を使っています。今年度は、小学校で4月からプログラミング教育が始まることになっていました。新型コロナウィルスの影響で、まだできていないと思いますが、私は先駆けて、ネット上でまず中学校からやってみました。

 


この教育版マインクラフトの良いところは、コンピュータサイエンスの基礎であるブール代数、論理和、論理積、論理回路などをゲームの世界の中で簡単に学べるということで、単にプログラミングの知識だけではなくて、その根幹にあるものを遊びながら学べるということで、初心者にもうってつけの教材であると思います。

 

※1 https://miraino-manabi.jp/content/376

 

これはマインクラフトのレッドストーン回路を使って排他的論理和を構成する、というものです。このように、自動ドアを作ったり、電気を点けたりということを通して、遊びながらコンピュータサイエンスの基礎的な知識を身に付けられるというのが気に入って使っています。

 


 

オンライン授業で一番難しいのは、共同で学び合いをさせることです。ですから、私はAzure上にマインクラフトのサーバーを立てて、その中で生徒にグループワークの形でワイワイと話し合いながら考えさせています。

 

中等部の生徒は、この授業で初めてプログラミングを学ぶことになります。最初は、プログラミングはどのようなものか、ということを理解するためには、コマンドラインよりもビジュアル型言語の方がわかりやすいので、このような形で画面で説明しています。

 

基礎的な事項は反転授業で事前に学んでおいてから

このプログラムの結果をマインクラフトの世界で実行させると、実際の動きを視覚的に実感することができます。今、小学校ではScratchなどを使って、こういったプログラミングの導入的な活動を行っていますが、今私が教えている中学生は、プログラミングはこれが初めてです。サーバーの中で、自分が作ったプログラムでロボットが実際にどんな動きをするかをサーバーの中で動かしてみますが、サーバーには1クラス約30人の生徒だけでなく、他のクラスの生徒が見に来たりもしています。このとき、生徒の質問や意見をチャットで受け付けて、リタイムで生徒と会話できるような環境も作っています。

 

私はオンライン授業を反転授業形式で行っています。生徒がオンラインでいきなり難しいことをしようとしてもなかなか定着しないので、事前にYouTubeチャンネル(※2)でプログラミングの基礎的な関数や繰り返しの解説を学んでおき、それを見てから授業を受ける、という形です。

 

※2 https://www.youtube.com/watch?v=J-QXYhmJDKk

 

マインクラフトではPythonとJavaScriptも学べる

マインクラフトの教育の良いところは、レッドストーン回路で基礎的なブール代数を学んだ後、そこから直結してMake CodeでPythonを学習できることです。今、学生がよく学んでいるプログラミング言語が、AIに使えるということでPython、あとはブラウザーがあれば動くJavaScriptですね。マインクラフトは、ゲームのプログラミングをするためにこの二つの言語がサポートされています。

 

 

YouTubeチャンネルに、プリントを載せています。私がどのような教材で授業をしているかを無料で公開しています。こちらから(※3)もご覧ください。

 

※3

https://docs.google.com/document/d/1HOdvI8IGcp_MYuqjcnOV66pktwPQsrwbNqaqPSfk2aE/edit?usp=sharing

 

最初は変数の型の説明をしています。「型」と言われても生徒にはなかなかイメージがわかないですが、実際にロボットを動かす時に、変数の型が違うとロボットが動かない、という形で視覚的にすぐ反映されるので、生徒には非常に好評な教材です。

 

 

プログラミング自体を目的とするのでなく、目的を達成するための手段として活用する

中学生の段階でのプログラミング教育で留意していることがこちらです。現段階では、まだほぼ全員が初めてなので、いきなりプログラミングを覚えさせることをやったら、皆が嫌いになってしまいます。過去の経験でもそうでした。

 

ですから、「ゲームの世界で建築物を造る」という明確な目的を持たせ、プログラミング自体を目的とするのでなく、目的を達成するための手段として活用するという意味を身に付けさせ、教育のプログラミングの底上げ的な意味合いで授業をデザインしています。

 

そうすると、毎時間が楽しくて、50分の授業が終わっても生徒が1時間ぐらい残るといった、オンラインでは非常に珍しい光景が見られます。高校の授業でも同様で、授業後も議論をするということを心掛けて行うようにしています。

 

 

実際にプログラムを作ったことがない人がプログラミング教育をすると、どうしても言語を覚えさせたり、順次処理とか繰り返しとか条件分岐といった論理的なことを教えようとしたりして、プログラムを教えることを目的となってしまいがちです。

 

私の授業では、プログラミングを「目的を達成するための手段として行う」ということを、中学生のうちに(小学生ももちろんですが)身に付けさせることを意識しています。そして、そもそもプログラミングは楽しいものだと。「プログラミングは暗記科目だ」とおっしゃる方もいますが、ソースコードにしても基本的に検索すればいくらでも出て来るので、わざわざ暗記するものではありません。それよりも、その組み合わせで目的を達成するものだということに留意して教えています。

 

高校では、アダプティブな授業でできる生徒をさらに伸ばす

次に高校の授業です。高校では、中学校で学んできて、ある程度プログラミングのスキルがある人達ですから、より一人ひとりに対応したアダプティブなものが必要です。

 

現在、オンラインプログラミング講座のpaizaラーニングが無償で全国の高校生に配布されているので、休校による自宅学習中の生徒にはこれに登録するよう紹介して、基礎的なことはここで全部教えています。1本3分ほどの動画で学びやすいものです。月600円からの有料プランもありますが、ここで基礎的なPythonとJavaScript、web系に興味のある人はweb関係の講座も受講してもらいます。

 


生徒からのコメントはチャットで受け付けますが、一度に20人、30人の生徒を教える時はチャットを読む余裕がありません。そこで、コメントスクリーンとして、自分の背景に生徒のコメントを流します。有名なのはパパパコメンというのがありますが、こんな感じになります。これはちょっと流れ過ぎですが(笑)、こんなものも使って、リアルタイムの授業を行っています。

 


私の授業は青山学院のドメイン内で行っているので、外からは見えませんが、他のクラスの生徒も相当入ってきているようです。いろいろコメントが流れてきて、それにその都度答えながら進めていて、授業が終わってもなかなか生徒が帰らないという状況です。このようなリアルタイムのアダプティブな対応が、これからのオンライン授業やプログラミングの授業には必要なのかなと思っています。

 

 

最後に今後のプログラミング教育に向けての課題をまとめます。高校ではプログラミングスキルの差が顕著に出てくるので、一斉授業で行うことはまず不可能になると思われます。

 

現在の課題は、いろいろな学校を見てきた感想ですが、情報を、WordやExcel、PowerPointを身に付けるための授業と思っている先生がまだ多いことです。目的を持ったプログラムを組んだ経験がない先生がいらっしゃるのです。また、他の教科との掛け持ちの先生が多いのですね。そこが問題かと思います。

 

 

あとは、先生自身が横並びを非常に好む傾向にあるので、『ギフテッド』というか、非常に優れた才能を持つ子どもを大事にしないところがあるのですね。駆けっこが得意な人が「速く走ってはダメ」と言われないのに、勉強はなぜ横並びにしないといけないのか。教える側も、この意識を変えないとこれから難しいのかなと思っています。