プログラミング的思考
プログラミング教育の導入が、教育界で大きな話題になっているが、プログラミング教育は、C言語やJavaなどのコーディングを学ぶものではない。いうまでもなく、プログラミング教育の目的は、プログラミング的思考の育成である。プログラミング的思考を簡単に説明すると、コンピュータやプログラミングの概念にもとづいた問題解決型の論理的思考である。
小学校の音楽の授業で例えると、すべての児童がトランペットを吹くことを目標としていない。リコーダーという比較的使いやすい楽器を用いて、音階や楽器のしくみを学び、さらに音楽に対する意欲関心を高めたり、表現の工夫を行ったり……。すると、もっと色々な楽器をふきたいと思う人も現れるだろうし、将来、音楽家になる可能性も出てくる。一方でリコーダーを使わなかったら、楽器にふれたこともないという人や、自分の音楽の才能に気づかず大人になる人もいるのかもしれない。
コンピュータやプログラミングも同様である。今や、コンピュータなしで仕事や生活はできない。コンピュータを動かしているのは、プログラムである。一見、プログラムは無形のように感じるが、優れたプログラムを開発した人たちは、莫大な利益を上げているのも事実である。必ずしも、全員がプログラマーになる必要はないが、そのコンピュータの仕組みやプログラミングについて、少し知識や経験があるのとないのとでは、将来、職業選択の上で大きな違いがでるだろう。そこで、プログラミングという活動を通して、論理的思考力を育むことが叫ばれているのである。
今回、そのプログラミング教育を通じて、子どもたちの成長を目の当たりにしてきた教育実践者として、その実例を紹介したい。
リアルに動かすことの感動と奥深さ
すでに様々なプログラミング教育が実践されているが、ロボット教材にプログラムを入力してその動きから学ぶ実践をおすすめしたい。その理由は、次の2つである。
1 バーチャルの世界ではなく、リアルにものが動き、プログラムを体感的に理解することができる。
2 ロボットを動かした場合、必ず誤差がでることから、同じプログラムを組んだとしても、同じ結果にならない。それゆえに、確実に課題を解決する過程において思考を深めることができる。
1については、想像しやすい。ロボットを上手く制御し課題達成できたときに、子ども たちが飛び上がって喜ぶ姿、逆に上手くいかなかったときに思わず涙を流す姿を幾度となく見てきた。また、2については、奥が深い。ロボットの制御でもっとも難しいことは、「まっすぐ前に進むこと」「90度、向きを変えること」である。簡単なように思えるが、モーターの性能も全く同じものはなく、微妙な誤差がうまれるのである。いま、5つの課題をするロボットを製作するとする。1つの課題を80%の確率で達成できるロボットを製作したとしても、5つの課題を連続して行うとなると、(0.8×0.8×0.8×0.8×0.8=0.32768)、つまり30%しか達成できない。そこで、自律型ロボットの大会では、センサーやプログラムを駆使して「まっすぐ前に進むこと」「90度、向きを変えること」に神経を注ぐことになるのである。
とことん考えることが思考力・創造力を伸ばす
次のような具体例をもとに思考力について考えたい。いま、図1のようなコートで「迷路をぬけて、ゴールするプログラムをつくる」という課題を設定した。確実にゴールするためには、どのようなプログラムを組めばよいだろうか。
図2のように[前進○秒][左に○秒][前進○秒][右に○秒]……と考えるのが一般的であろう。簡単な課題に思えるが、これでも誤差が生じて壁にぶつかったりして、意外と難しい。そこで、よりゴールする可能性を高めるために考えた結果、ロボットを壁に沿うようにプログラミングしたり、 わざとロボットを壁にぶつけてロボットの向きを整えたり……。答えは幾通りもある。
図3のように[壁にあたるまで右に][左に○秒][これらをくりかえす]というプログラムを組む生徒もいた。「これなら、どんな複雑な迷路もゴールできる」という。大人顔負けの発想である。
単純な課題のように思えるが、解は1つではない。そして、 ロボットという教材を用いることによって、とことん考える教育の機会をつくることができる。実際に「ロボット授業でどのような力が身についたか」というアンケートをしたところ、90%以上の生徒たちが思考力ならびに創造力の向上に繋がると評価した。問題解決の中で論理的思考力の育成に寄与していることを理解いただけるだろう。そして、「ふつうに考える」ではなく「とことん考える」ことができるところがロボット教育の魅力である。