第1回目の学習で、プログラミング学習は、問題発見・解決能力を育成する手段だということがわかりましたか。第2回目は、プログラミング教育の中でよく出てくるプログラミング的思考について考えたいと思います。
プログラミング的思考とは一体どんな思考だと思いますか。1回目に出てきた学習指導要領の中では、「コンピュータに意図した処理を行わせるために必要な論理的思考力を身に付けるための学習活動」という記述がありました。コンピュータのみならず、人になにか仕事を頼む場合には、何をどうしてほしいと、手順を細かく伝える必要があります。人は多少いい加減でも、依頼者の意図を汲み取り行動してくれますが、コンピュータは、逐一、何をどうすると指示を与えてあげないと仕事をしてくれません。ですから、問題解決の手順というか、行動手順を論理的にきちんと伝える必要があるのです。私たちがお互いに仕事をするときは勿論ですが、プログラミングの学習では、この論理的思考力が特に求められるのです。
それでは、プログラミング的思考と論理的思考力の関係はどう考えればいいのでしょう。論理的思考力なら、国語の説明文の学習などでも、内容をどう伝えたらわかってもらえるか、論理的思考力の学習がありました。
問題は、コンピュータに仕事をさせるということを考えることです。第1回目の学習で、コンピュータの処理手順の話をしました。コンピュータに仕事をさせるときには、皆さんの目や耳、手や足のことと比較しながら考えるとよくわかります。皆さんは、目や耳で見たり聞いたりして外界の変化を捉えることができます。そこで入ってきた情報を頭で判断し、行動に移しているのです。 野球でボールをキャッチする動作を考えてみるといいでしょう。 ボールの動きを見て、足を動かし最後は手でボールをキャッチするのです。 コンピュータ付きロボットにやらせてみましょう。 ボールを見るのはカメラです。ボールの方に動くにはモータを回して動く必要がありますね。 このように、コンピュータの入力にはどんな物があるか、出力にはどんなものがあって、どのように物を動かすことができるかを考えることが必要です。 コンピュータの入力や出力など、コンピュータのことを勉強した知識や技術で問題を考えることをコンピュータ的思考といいます。
海外では、論理的な思考のことを、Logical thinkingといいます。コンピュータ的思考のことを、Computational thinkingといいます。この論理的思考とコンピュータ的思考の二つをあわせて、日本では、プログラミング的思考という言い方をしているのです。
プログラミング的思考は、上に述べたように、人の行動モデルで考えるとわかりやすいです。小学生にはちょっと難しいけど、中学生くらいになれば、人の目や耳等の代わりをするセンサーや手や足の働きをするアクチュエータのことを勉強します。コンピュータに仕事をさせるには、その仕事に応じてどんなセンサーやアクチュエータが必要かを考えることがコンピュータ的思考です。
次に、コーディングの話をしましょう。「プログラミング学習はコーディングが目的であるとの誤解がある・・・」といわれています。コーディングとは、限られたコードで問題の処理手順を考えることです。もっと簡単に言えば、コンピュータに最初から備わっている動きを表す言葉とも言えるでしょう。
例えば、「前に進む」「右に曲がる」「左に曲がる」の3つの言葉だけで、ロボットを目的に場所に移動させる手順を考えるなどは、コーディングですし、プログラミング教育の先進国の英国やエストニアなどでは幼稚園児から玩具のロボットを動かしながら、コーディングの基礎を学んでいます。
大事なことは、限られたコンピュータが理解できる言葉で、コンピュータに目的の行動を行わせることがコーディングであり、プログラミングなのです。
プログラミングでは、コーディングを考えるときに、思い通りに動かないことがしばしば起こります。そこで、どこが違っているかを考えることが重要な活動です。デバッグといいます。プログラムの中の誤りを見つけ、手直しをする活動です。このデバッグをすることで、プログラミング的思考が鍛えられます。
このように、プログラム学習では、何をどうすればいいか考えるPlan、そのような動きになるプログラムを考えるDo、あれうまく行かない、どこが問題か考えるCheck、プログラムを修正し再度動かすActのPDCAサイクルが繰り返されます。
このことが、プログラミング学習が、問題解決能力、創造力、表現力、論理的思考力、など、これからの時代に求められる能力・資質を育成するのに最適な学習と考えられ、小学生から必修の学習として皆が勉強するようになったのです。