事例74

プログラミングを(ぎちぎちに)詰め込んでみた年間授業計画と半期実施報告

東京都立神代高校 山本博之先生

1学期 その1:Progateの事前学習からJavaScriptの実習

1年間にプログラミング教育をぎちぎちに詰め込んだら、どのくらいのことができるのか、挑戦してみました。3学期はこれからですが、今の段階で終っているところまでと今後の計画を説明します。

 

今年からProgate(※1) というプログラミングのオンライン学習サービスのアカデミック版が無料になったので、これを授業の事前学習として、宿題という形で使ってみました。

 

具体的には、1年生が入学した時にアカウントを配布し、自宅での宿題として2ヵ月くらいでJavaScriptの学習コースをクリアすることに挑戦してもらいました。

 

※1 https://prog-8.com/

 

家にパソコンがない生徒は、パソコン室を開放するので好きに使っていい、と伝えました。何の知識もない新入生にできるのか……という感じで少し乱暴な挑戦でしたが、やはり、もともとそういうサービスを使った経験がほぼないので、「ログインってどうやるんですか? 」というレベルの質問が出てくるような状況でした。

 

このプログラミング学習サービスではスライドを見ながらできるようにはなっているのですが、予備知識なくプログラミングの課題を行うため、「難しい」「意味わかりません」という意見も出ました。全員がクリアできるか心配でしたが、5月ごろまでには全員課題を終えることができました。興味を持った生徒は何回もコースに挑戦し、レベルアップを目指していました。

 

そこから、中間テストを終えたあとの5月後半ごろから6月にかけて、JavaScriptを一緒にゆっくりやってみましょうということで、8時間分ほど授業を行いました。

 

こちらが、おおまかな授業の流れです。授業の最後には、並べ替えのプログラムを課題として提出させています。選択ソートやバブルソートを自分で作らせます。

 

授業アンケートを見ると、難しい・やや難しい、という声が9割ですが、楽しい・まあ楽しいというのも9割くらいいます。難しいけど楽しくて、達成感もある、ということです。また、将来に役立つ気がするという感想も9割を超えているので、やりがいはあったといえるでしょう。

 

1学期 その2: 実技テストを経て、夏休みの宿題としてScratchでゲーム作り

ところが、このソートプログラムの課題を提出して単元を終わりにすると、「それは不公平だ」という子が出てきました。要は、その子が一生懸命やったバブルソートの課題を、スマホでパシャパシャ撮って、それを見て写して提出してしまう人がいるというのです。このように課題をコピペして提出する者が後を絶たないので、今年は実技テストをやってみようと考えました。目の前でプログラム組ませる試験です。

 

Progateの課題に近い形で実技テストを作り、30分間の制限時間で行いました。「指定された変数を使って値を表示させなさい」とか、「for文を使って星を5個並べなさい」といった問題です。最後に少しだけ力試しの意味で、Fizz Buzzの問題を出しています。2で割り切れるならFizz。3で割り切れるならBuzz。2でも3でも割り切れるならFizz Buzzと表示するプログラムを1から10の間で出せという問題です。

 

変数の値を表示させる、変数同士を計算させる、for文、If文などは、ある程度できていますが、応用になって「指示された目的の計算をしなさい」となると、だんだん正解率が落ちてきて、Fizz Buzz では3%になってしまいました。

 

300人中7、8人くらいしか正解しないということになりますが、途中までできている子や、最後、少し時間が足りなかったという子もいたので、もう少し時間に余裕があればよかったのかもしれません。

 

実技テストは、かなり緊張感があったようで意外に面白かったです。来年もやってみようかと思います。

 

プログラミングの課題を宿題に出すのはなかなか難しいのですが、せっかく1学期を通してやってきたので、夏休みの宿題として、Scratch (※2) でのゲーム作りを課題として出すことにしました。期末考査後の短縮授業でScratchを体験させました。Scratchの初心者向けゲーム「猫逃げ」を15分ほど説明して、残りの時間は自由制作です。

 

※2 https://scratch.mit.edu/

 

夏休みの提出課題の条件は、以下の3点としました。

1. 得点が出る

2. マウスやキーボードからの入力機能がある

3. ゲームオーバー ( またはクリア ) がある

 

授業だけだとわかりづらいという生徒には、夏期講習を開催してフォローしました。「講座は半日くらい、3日間同じ内容をやるから好きなところに来てやればいいよ」という形で実施しました。参加生徒は1日20人程度で、合計60人といったところです。

 

 

2学期~Scratch発表会、ドリトルでマルチゲーム作成、再びJavaScript

夏休み明けの最初の授業で行ったのが、Scratchで作ったゲームの発表会です。それぞれのパソコンを、ゲームができる状態にしておいて、自分の席を離れて、他の人のゲームで自由に遊び、よかったものに付箋を貼って投票するという形式です。よかった生徒は、付箋でディスプレイがいっぱいになります。

 

付箋には、○○君よかったよ、とコメントが書いてあります。最終的に、1位は付箋何枚、2位は何枚……という形で表彰し、付箋がたくさんついた子は、やはりうれしそうにしていました。

 

10月から11月にかけては、日本語でプログラムができる「ドリトル」を使って、情報システムを自分で作ってみよう、という授業をやりました。1回目、2回目の授業でドリトルに慣れてもらい、3回目、4回目でネットワークを意識したプログラミングをしていきます。ドリトルでは、チャットプログラムが有名なのですが、今回はマルチゲームを作ってみました。最近の子は、よくスマートフォンでマルチゲームをするので、そちらの方がなじみ深いかなと考えたからです。

 

マルチゲームと言ってもさほど複雑なものではなく、左のコンピュータの亀と、右のコンピュータの亀がマルチで行き来するというものです。そこには、サーバーが絡んでいて、サーバーを通じて位置情報をやり取りすれば、マルチゲームができる、ということが理解できるわけです。

 

実際にやってみると、「ゲームというのはこうやって作られているんだ」「IPアドレスを使って通信するのか」といった意見が多く聞かれました。

この授業までに、座学でネットワークの学習はすでにしていますが、やはり座学の知識と実際に見たこと、さらにプログラミングの技能が噛み合ってくるという体験をすることで、生徒たちの理解はより深まったようです。

 

「ぎちぎちに詰め込むこと」で深まった、プログラミングへの理解

冬休みの宿題として、もう一回Progateを課題に出しました。授業で、再度IDを配ってトライさせると1学期に初めて取り組んだときは、「難しい」「わけがわからない」という子が多かったのですが、今回は2回目のProgateだったので、1コースに90分くらいかかっていたのが20分くらいでできるようになっていました。1つの授業の中で2コースくらい、早い子になると3コースくらい終らせていました。こうして、しつこいくらいに体験させていると、だんだん意味がわかるようになってくるものだということを実感しています。

 

パスワードを忘れてしまうという生徒も、パソコン室で使っているものと同じパスワードに変えたことで、パスワード忘れによる未提出の問題も解決しました。

 

3学期は、青山学院大学が、micro:bit(マイクロビット:※3)を40台貸してくださるということになっていて、こちらを使って授業を進める予定です。

 

単に、使いこなすだけではなく、最終的には自由制作をして、自分でこういう作品を作りました、というレポートを提出させるところまでやりたいと思っています。

 

micro:bitでの授業の進め方や、プログミングに関する学年末考査の内容などは、現在検討中で、試験に関しては、ビーバーチャレンジ(※4)や大学の情報入試の利用など、現在いろいろと模索しているところです。

 

※3 http://microbit.org/ja/guide/

イギリスのBBCが主体となって作った教育向けのマイコンボード。イギリスでは11歳〜12歳の子ども全員に無償配布されており、授業の中で活用が進んでいる。

※4 http://bebras.eplang.jp/