小学校プログラミング教育の現状と展望

~教科教育の枠組みで実施する小学校プログラミング教育の授業実践

茨城大学教育学部附属小学校 清水匠先生

レクリエーションにならず、教科教育の延長でできるプログラミング教育を目指して

本校は、学校全体で19クラス約600人の生徒が在籍しています。タブレット端末は80台あり、7.5人に1台の割合ということになっています。すべての普通教室で無線LANが使える環境にあり、各学年に1台ずつ、移動式大型テレビを備えています。個人的には、可もなく不可もなく、どちらかといえば充実している環境かなと思っています。

 

プログラミング教育をスタートさせるというところで、皆さんもそうだと思いますが、とにかくやることがいっぱいあるわけです。さらに最近は、教科『道徳』と『外国語』をどうするのかという問題があり、目の前のことで精いっぱいです。プログラミング教育の優先順位というのは、現場の先生方の中でどのくらいになるでしょうか。かく言う私も、専門は音楽科教育で、文系なわけです。プログラミングなんか一回もやったことはないのですが、とにかくやらなければならなりません。正直最初は非常に懐疑的で、やる必要があるのかなと思っていた立場でした。

 

そんな私が、プログラミング教育をするためにどうしたらいいかというところからスタートしたわけです。そこで気を付けようと思ったことの一つ目は、イベント的なレクリエーション活動にならないようにしたいということ。そして二つ目は、特に今回の発表にも関わってきますが、あくまで教科教育の授業の延長線でできるものにしたいということでした。そう考えたときに、総合的な学習の時間の中で行うものと、教科学習の中で行うものという二つの軸ができてきます。総合的な学習の時間は、探求的な活動になりますから、コンピュータの仕組みはどうなっているのかを学んでいく学習になります。

 

 

一方、教科学習の方では、当然教科自体の学習内容がありますので、それを学ぶためにプログラミングを用いるというような学習になります。さらに、本校はiPadがそれなりに入っているのですが、ネット環境がさほど良くないので、Scratch(※1)などは十分に使えません。

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

 

また予算面の問題で、ロボットをたくさん購入することもできないため、フィジカルとビジュアルの他に、コンピュータを使わなくてもできる「プログラミング的思考」を活用した授業という、この六つで授業を整理していこうというふうに考えました。

 

私が、2年間で実践した主な学習の中で、この赤い字の部分をご紹介したいと思います。

 

掃除の手順をフローチャートで表現する

はじめに、6年生の学級活動で私が行った授業事例を紹介します。卒業が間近に迫った、3月に行いました。学活の目標は、5年生の清掃活動がうまくいっていないという問題について、どうしたらそれを解決していけるか、具体的に考えることです。そこにプログラミング教育を関わらせてみました

 

6年生の子どもたちにとって、3月といえば、そろそろ5年生にリーダー役を渡していきたい時期です。ところが、その5年生が上手に掃除を運営できていないという現状を目の当たりして、6年生の子どもたちはこのまま引き継ぎをして大丈夫なのか、と心配になり、掃除の運営手順をわかりやすく5年生に伝えようという思いが高まってきていました。

 

そこで「フローチャート」というものを使えば、その手順をわかりやすく5年生に説明できるのではないかということを提示して、プログラミング活動を行う必然性を生み出しました。

 

どんな手順で下級生に声を掛けたらよいのかを知るために、まずは、自分たちの掃除方法を見直すことから始めました。そして、「机運びをしているときに、引きずる子がいないかどうかを確かめながらやる」とか、「片付けをしたら、みんなきちんと掃除用具を戻したか確認する」というように、子どもたちが日頃、行っている行動を順次書き出していきました。

 

よく見ると、プログラミングの「条件分岐」の要素が、この活動の中に含まれているということがわかります。それではここに焦点を当てよう、ということで、条件分岐というものを子どもたちに提示しました。例えば、身支度が整っていたら掃除を始める、整っていない子がいたら注意をして、身支度を整えさせてから、皆で掃除を始めよう、というふうにしていきます。

 

そうすると、この条件分岐の部分が掃除をする際のチェックポイントとして、明らかになってきました。このスライドは、条件分岐を活用する前と後での、あるグループの変化です。

例えば、「ごみを寄せたら、次の雑巾がけをみんなでするよ」という指示を出し、雑巾がけが2回終わったら次に移る、という具合です。また、時間が余っていたら、さらにプラスアルファの活動をしよう、といったように、何を考えながら掃除をするか、ということが、条件分岐を取り入れることによって、より明確になってくるのです。

 

 

実際に動いて見て、修正=デバッグも行う

フローチャートを作って終わりではなく、実際に、計画に沿って自分たちで掃除をしてみました。すると、何かうまくいかないところがあったり、やり忘れていることがあったりと、いうようなことが出てきますので、その部分を修正していきます。それがプログラミング的要素でいうデバッグなのかなと思っています。

 

 

また、自分たちの班だけで完結するのではなく、他の班の人たちにそのフローチャートを使って指示を出し、その指示どおりに動いてもらって、スムーズに動けるかどうかを確認しました。

このスライドでは、女の子が指示を出して、他の班の男の子たちが実際に動いてみています。そして、「ここは少しわかりづらかった」「ここはもっとこうした方がいい」といったように、アドバイスをもらい、客観性を高めていきました。

 

当初の目的どおり、最後は5年生に伝えるということで、この作ったものを5年生にプレゼントしました。「これで掃除をすれば上手に掃除できるからね」「立派なリーダーになってよ」と言いながら、5年生にこれを託している姿が見られました。

 

これらの単元が終わってから、子どもたちに振り返りの文章を書かせてみると、「条件分岐はとても便利なものだと学びました」「~なら~をする、というように、日常でも私の頭はコンピュータと同じく、条件分岐を使っていることに気付きました」と、条件分岐の意味を理解する様子が見られました。

 

また「条件分岐をよりうまく使えば、人に手順を伝えたいとき、わかりやすく伝えられることを学びました」という感想もありました。この感想からも、フローチャートの利点を実感しているというふうに、捉えることができます。

 

 

条件分岐の意味をより深く考える

さて、完成したフローチャートを、ざっと見たところですが、分岐の種類は大きく四つに分かれていました。

 

一つ目は、「この時間がきたら」とか、「時間が余ったらこれをする」というように、時間で物事を分岐していること。

 

二つ目は、「この工程が終わったら次にこの工程にいく」という、その工程の完了に伴う分岐をつくっていること。

 

三つ目は、例えば雑巾を担当する子はこういうことをする、一方ほうきの子はこういうことをする、というふうに、分担や行動の違いによって分岐を作っているもの。

 

そして、四つ目は、「これがきちんとできているか確認する」というように、下級生の動きをチェックするようなことで、分岐を作っているという点です。

 

これらすべてが、掃除をする際に、留意点になるものではないかと感じています。つまり、この単元の目標として、子どもたちが清掃活動の留意点をしっかりと整理し、それを下級生に伝えていくということですので、学活としての授業の目的は達成したのではないかというふうに考えます。

 

6年算数の比例・反比例の学習にロボットを取り入れる

二つ目の実践は、6年生算数科の比例、反比例の学習で、ロボットを動かすというものです。教科の目標としては、比例のグラフは無数の点が集まって直線を作っている、というところを理解させることです。一方、プログラミング教育では、変化する数を「変数」として設定してしまえば、そこに代入するだけで、いちいちプログラム全体を作り直す必要性がなく、瞬時にプログラムができるということを理解してもらうことを目標として授業を実践しました。

 

子どもたちは、比例のグラフを描くとき、先生がどうやって描いているかをじっくり見たことはあまりないと思います。大体、原点ともう一点をグラフ上に取ったら、その2点をつなぐ線を引いて、はい完成、みたいにやってしまいます。それが楽ですし、正しい方法であることは子どもたちも知っていますから、先生の方もがーっと線を引いてしまうのです。

 

 

ここで私は、本当に直線でいいの?と、子どもたちを揺さぶってみました。「正比例のグラフの線って、実はうねうねしてるんじゃない?」「ギザギザしているかもしれないよ」といった話をしながら、子どもたちに考えさせていくのです。「それなら、できるだけ細かく測ればいいじゃないか」という話になりますが、何秒ごとにどれだけ進むかというところは、なかなか人間の手では正確にできないという答えが返ってくるわけです。

 

グラフの直線は点が集まってできていることがわかる

そこで、「こういうときはロボットに頼もう!」ということで、ロボットが何秒間進んだら、点を打つ、というプログラムを作って実行しました。すると、例えば3秒走らせるということにすると、ロボットは正確ですから、きちんと3秒で止まり、そこに点を打っていきます。

 

できたグラフはこのスライドのように直線になるので、「グラフの線はたくさんの点が集まって直線ができている」ということを、押さえることができました。子どもたちのまとめの文章では、「たくさんの点が集まって直線になることがわかった」という声がありましたので、算数科の目標は達成されたと言えます。

 

さらに、最初に作ったプログラムを使って、1.1秒、1.2秒、1.3秒と秒数の数値を変えるだけで、プログラムを一から作り直さずに済むということがよくわかったようです。この仕組みは、子どもたちにとっても身近な、電子レンジや洗濯機のタイマー機能にも応用されています。「電子レンジが3分専用とか4分専用だったら、使いづらいよね」という話をしながら、変数の利点をつかんでいきました。

 

このように、教科の目標の達成のためのプログラミング教育ということで、教科教育の枠組みの中で実施していくという授業事例を紹介させていただきました。

 

[中川先生との質疑応答]

中川先生 : 先生の一つ目の実践で、アンプラグド、つまり、コンピュータを使わないプログラミング教育というお話がありました。これは、先ほど安藤先生が言われていたように、導入としては非常にやりやすいものです。それからもう一つは、学習者用コンピュータが十分にそろっていない学校や地域では、選択肢としては大いにあるんだろうなと思います。

 

これを踏まえて、お聞きしたいことが二つあります。

 

まず、アンプラグドの曖昧さにどう対応するのか。これは、先ほどの清水先生の一つ目の実践では、他のグループにやってもらうことで客観性を高めるようなことをされていましたが、他にどんなチェック方法があるのか教えていただきたいと思います。例えば、これがコンピュータであれば、120度のところを119度と入れてしまうと、正三角形にはならないわけですよね。コンピュータを使わない場合は、そこが曖昧でも何となくできた、みたいな話になってしまうのをどうするのか。

 

それからもう一つ、条件分岐ということがありましたが、この考え方の習得や定着はなかなか難しいのではないかと思いますが、この辺はいかがでしょうか。以上の二点をお願いします。

 

清水先生 : アンプラグドの曖昧さについては、私も非常に悩んでいます。例えば、「歯磨きをする手順を考えましょう」と言ったときに、「コップを持つ」という人もいれば、「手の筋肉を動かす」というところからスタートする人もいるわけです。コップを持つにしても、大体の人たちはコップを持つという動作はわかりますが、コンピュータにコップを持ちなさいと言っても、コップは持ってくれないわけです。

 

それは、人間がある程度意を酌んでくれたり、言葉を理解したりしているという、人間の良さなのではないかと感じています。

 

今回の、最初の掃除の手順の実践も、「雑巾をゆすぐところが入ってないじゃないか」「まずほうきを持ってこないと始まらないんじゃないの?」みたいな、ある種いやらしいアドバイスをし合っているところもあったのですが、そういうことではないよね、と。今回の授業の目的は、下級生に掃除の仕方を上手に伝えるためのもので、「まずはほうきを……」といったものまで入れる必要はないわけです。そこまでいったら、じゃあ、ほうきとは何ぞやというところから、書かなければならないようなことになってしまいます。

 

「粒度」という言葉も、子どもたちには少しずつ伝えてはいましたが、ここは、アンプラグドの一つの限界というところかと思います。

 

ただ、先ほど津下先生もおっしゃっていましたが、子どもが実際に教科の学習として体験することで、プログラミング的思考を理解していくという意味では、アンプラグドの強みはあるのかなと思っています。

 

二つ目の、条件分岐の定着についてですが、今までいろいろなプログラミング的思考を扱う実践をしてきましたが、やはり一番難しかったのが条件分岐です。

 

子どもは、意外に分岐が苦手で、イエスかノーかに分けられないのです。Aのときはここ、Bのときはここ、Cのときは、Dのときは……と、場合分けすることはできるのですが、イエス、ノーに収めていくことは意外とできないのです。しかもイエス、ノーに収められない分岐というのは、さらに第2階層ができてくるものですが、それが子どもにとっては非常に難しいということを、今回改めて感じました。とりあえず、この実践の中で私がやったのは、先ほどもお伝えしたように、まずは手順をいろいろ書き出して順番に並べるという方法でした。その中で子どもは、分岐した方がきれいに表現できるものだということがわかっていきます。そこで分岐をさせていくというところで、まずはイメージをつかませようかなと考えました。定着が難しいというのは、そのとおりだと思います。

 

中川先生 : ありがとうございました。先生が最後に言われていたように、条件分岐の分類のようにブレークダウンすることによって、どんな活動のときにそれが当てはめられるかということについての、いい知見が得られるのではないかと思われました。