Now

5年生授業編①【プロプロ☆プログラミング~初等部プログラミング教室を追え~episode 3】

プログラミング教育第二章

2021年度から本格的に始まった青山学院初等部のプログラミング教育。

民間のプログラミング教室を運営する株式会社CA Tech Kids(シーエーテックキッズ)とタッグを組み、プログラミング教育を本格的に導入した3年間のプログラムだ。

2022年度——いよいよその2年目が始まった。

徐々に難しくなっていくプログラミングの技術(スキル)学習に新5年生たちはついていけるのか? 本格的なプログラミングに触れて1年にも満たないが、来年度には最終目標である「問題解決にプログラミングを用いた総合的な学び」の修得を目指す。

そんな青山学院初等部5年生、今回は梅組の授業を取材した。

いざ5年梅組の教室へ

「今日から内容が一気に高度になります」
そう井村裕先生から予告を受けて向かった初等部。
梅雨らしい雲が重く垂れさがる空の下、校舎に入ろうとするところで、
大学教育人間科学部教育学科教授・杉本卓先生に出くわした。
杉本先生も同じ5年梅組の授業を観にいらしたのだ。
そんな杉本先生に初等部の先生方が気さくに声をかけてくる。
杉本先生は「初等部にはICT教育戦略委員会で何度も来ていたので」と、ほほ笑んだ。

論理演算子のきほんの”き”

5年梅組の教室に到着すると、既に児童たちが着席していた。
慣れたもので、机の上にはタブレット、その画面にはScratch(学習プログラミングツール言語)を立ち上げている。黒板の前で授業準備をする井村先生の一挙手一投足を、お行儀よく見つめている。その黒板の脇に置かれた電子黒板には1名の児童が映っていて、オンラインで自宅から授業を受ける子がいることがうかがえる。
場所を選ばず学べる、このスタイル(ハイフレックス型の授業)は初等部では当たり前になっているらしい。

 

井村先生が電子黒板の画面をScratchのゲーム画面に切り変えた。
「今日はネコが左右に動けるようにする。ひらひら動くユーレイに猫が当たったらダメ。ユーレイに当たらないよう、ネコはジャンプ出来るようにもするよ」
デモンストレーションに児童たちの目が輝く。

 

次いで、今日の教材となるプリントを配りながら、井村先生が指示する。
「ネコが左右に動くように作ってみて。左右の矢印で10ずつ動くように、Xが10ずつ変わるように条件を設定してみて」
全員が、いとも簡単にプログラムを作っていく。
机の上のファイル(今まで配布された教材のプリントが、ファイリングされている)を見返す子は一人もいない。

 

「じゃあ電子黒板に、さっきの答えを書くよ。ここが出来ないと次にいけないから。必ず確認するように。これが出来たら、次はネコがジャンプ出来るようにして」
ネコがジャンプする方法――その答えは電子黒板にないらしく、みんなタブレットに目を移し必死に指を動かしている。

 

すると1~2分も経たないうちに
「出来た」
という声が教室のあちらこちらから上がり始めた。
そんな中、手が止まっている子が気になり、その子の画面を覗くと、
「固まったから、再起動中なんだ」
冷静に説明してくれた。トラブルが起きても騒がず、投げ出さず、自力で解決しようとしている。

しばらくすると井村先生が声をかけた。
「みんな出来たようだね。それじゃあネコをマイナス5ずつ落ちるようにして」
ここで初めて教室がざわめいた。
「おかしいよ!」
手を動かしていた児童が慌てたような声を上げる。
「ネコがどんどん下がっていっちゃう!」
児童たちの大多数の画面は、ネコがひょこっと下から顔を出しているようなものに変わった。

ネコがどんどん下がっていっちゃう!
ネコが下画面にのめり込む(イメージ)

 

すると井村先生がほほ笑んだ。
「おかしくないよ。それで今は正しいんだ。マイナス5ずつネコが落ちるようにすると、ネコは画面下にのめり込む」
“ネコが画面下にのめり込む”、教室の背後から見ているその画面は愉快だった。

教室の背後から見た画面。細胞分裂を思わせる(イメージ)

 

背景をサッカー場や宇宙空間に変えている児童も

 

面白そうに指を動かす児童に、井村先生が電子黒板を見るよう促す。
「これからNotを使って”~ではない”という状態を作るよ。まずSprite(キャラクターを表示するページ)からLineを出して」

 

「”(ネコが)Lineにふれる”これはプログラム組めるよね? それをNotでくくってみて」
井村先生がチョークを握ると、今度は黒板に「Not Lineにふれる」と書いた。


 

「今、Touching Lineという命令で、“ネコがLineにふれる”という状態を作っているよね。それを今度は“ネコがLineにふれていない”状態にしたい。そのために“Not”<~ではない>で全体の命令をくくるんだ。そうすると、全体が否定され、“ネコがLineにふれる”から“ネコがLineにふれていない”という命令になるんだね」

命令全体をNotでくくった結果(イメージ)

 

「change y by -5(縦を下マイナス5だけ移動する状態)を一度外して、touching Lineと上手く組み合わせて、(ネコが)Lineにふれていない時に、-5(移動する)としたい。Operatorsの中にNotという命令があるから入れて。そうすると(ネコが)Lineにふれた時に止まるようになる」
英語混じり、かつ、XY関数の知識も駆使しなくてはならない状態に、こんがらがるのは取材班だけ。
児童たちは日頃の英語学習のおかげか、英単語に戸惑うことなく、みんな普通に手を動かしている。
すぐに数名の児童から感嘆の声が挙がる。
「すごい、本当だ! (ネコが)止まった(※画面下にのめり込まない)」
「すごい気持ちいい!!」

 

緑の旗をクリックし、猫を上まで持ってきてください。
重力に引っ張られるごとく落ちていき、赤いLineで止まります
Scratch is a project of the Scratch Foundation, in collaboration with the Lifelong Kindergarten Group at the MIT Media Lab. It is available for free at https://scratch.mit.edu

 

そんな中、ちょっとイライラした声も混じる。
「あれ? なんで上手くいかないの」
すると上手くプログラムが組めた児童たちが素早く駆けつける。
「ここを入れていないからだよ」
井村先生と1名のアシスタント学生に交じって、児童たちが、あちらこちらで教え合う姿が見られる。

 

先生がまた、もう一枚のプリントを配ると、黒板を見るよう促した。
「今、ネコはどこででもジャンプ出来る状態だよね。それをネコが地面に触れ、かつスペースキーを押した時だけ、ジャンプ出来るようにしてみよう。<~かつ>という意味がある”And”を上手く使って、作ってみて。プリントの一番上にヒントが書いてあるよ」
“And”の文字を先生が黒板に書いていく。
児童たちは、プリントと画面を交互に見ながら懸命に操作していく。
相当難しいのか、今までとは違い、数名の児童しか成功していないらしい。
「何かが違う」
「どこかがおかしい」
という声や頭を抱えている児童の姿が多く見られる。
しかし、分からないながらも、児童たちがあちらこちらで集まって、考え始めている。
「ここが変なんじゃない」
「あっ、”And”じゃなくて”Or”になっているよ」
喧々諤々、額を突き合わすように考える児童たち。

 

やがて晴れやかな成功の声が上がり始めると、井村先生が口を開いた。
「ネコを上手く動かせたら、またSprite(キャラクターを表示するページ)から今度はランダムに移動するブロックを作るよ。まずブロックとなるButton3を追加して、そのButton3をランダムに動かす。ここまでやってみよう」

Button3を追加し、ランダムに動くようにする(イメージ)

 

井村先生が心配そうに声をかけた。
「みんな一緒に考えていくよ。まずButton3を追加するでしょ。Go to xyを使って、ランダムを使う。それで3秒待つように”wait 3 seconds”を入れる。ここまで出来たらブロックにも着地できるようにして。”or”<または>を上手く使って欲しい」
先生は黒板に大きく
Not Lineに触れる or ボタン3に触れる
と書いた。

 

「こういう時(change y by -5が発動している時)にyが-5になるよ。ブロックに着地できるようにして。”Touching Line”ってあるよね? そこへOperatorsから”or”を持ってきます。そして”Touching Button3”をその後に入れて。この全体を”Not”で否定する。最後はボタン3の上でジャンプできるように。結構長くなるからね。それが出来たらユーレイを作って」
児童たちの真剣な指が動く。

 

「ユーレイかわいい」
「先生、ゲームオーバーまで作らないんですか?」
と余裕な子までいる。
「今回、ゲームオーバーは作らない」
井村先生が苦笑しながら答え、集中している児童たちを見回した。
「今日はここまでにするよ。今書いているプログラムを保存して」
と先生の声。
「もっとやりたい」
そんな声が次々に上がる中、40分間の授業が終わった。

今日習ったこと
  • “not”<ではない>:条件を否定する
  • “and”<かつ>:2つ以上の条件を設定し、そのすべての条件をクリアした時にプログラムを発動できる
  • “or”<または>:2つ以上の条件を設定し、そのどちらかをクリアした時にプログラムを発動できる