5周年を迎えて

CoderDojo陸前高田、7月23日は久しぶりのダブルヘッダー。
午前中は夏休みスペシャルのmicro:bitで5名の参加、午後はいつも通りのScratchで4名の参加。
終わってから気づいたのですが、初回開催は2018年7月。
実は5周年記念の回でした。

「子どもとプログラミング」というテーマで考えれば激動の5年間だったと思います。
学習指導要領にもプログラミングが登場し、GIGAスクール構想による1人1台端末。
子どもにやらせたい習い事の上位に入るとの話も耳にします。

その一方で、プログラミングが、子どもたちのどのような能力が培われるかについては曖昧なままな気がします。
例えば、「そろばん」を仕事で使うことはありませんが、今でも珠算教室は存在します。
「そろばん」を使えるようになる過程で、習得できる能力が明確だからです。

プログラミングについては、「論理的思考能力」と言う人もいますが、議論が雑な気がします。
例えば、カラスは3手か4手先を読んで行動できるようですが、それ以上先を読むことに必要なのは記憶容量と根気です。
また、「仕事の目的に合わせた行動を取れないプログラマ」も存在します。
これらのことから、真か偽かの組み合わせで物事を考える、(狭義の)論理的思考は、それほど重要でない気がします。

一方、文部科学省は「プログラミング的思考」を提唱しています。
モジュール分割とトライ&エラーに触れていることが推測できて「論理的思考」から進歩した感はありますが、とにかく表現が曖昧で、プログラミング未経験者からすれば理解が難しいと思います。

ところで、プログラムは「順次(順番に実行する)」「条件分岐」「繰り返し」の3つの形式の組み合わせで処理を記述します。
仮に、目の前にある何か…例えば、(リアルな)猫の行動をプログラム化するとします。
彼らは、割と気分屋のようなので、プログラム化の対象としては難しいかもしれませんが、何となく日々のルーチンはあるように思えます。
ざっくりと朝→昼→夕→夜という処理が記述できます。
或いは、細かい振舞いとして「目の前をカエルが横切った時の行動」がありますし、その生き物がカエルなのかバッタなのかで振舞いが変わるかもしれません。

共通する動作は何か?繰り返している動作は何か?
このプログラムは、猫をよく観察しないと作れません。
「抽象化」と呼ばれる作業で、広い意味で「論理的思考」と言えると思います。

Scratch初心者に紹介する、猫(のキャラクター)からネズミ(のキャラクター)が逃げるゲームがあります。
簡単なゲームですが「猫がネズミを捕まえたとき」と「ネズミが猫に捕まえられたとき」では、見た目の動作は同じでも、プログラムを書く場所や内容が変わります。
そこは、子どもたちに意識してもらうようにしています。
あるいは「これとこれがドーンとなった時」と言われた時は、出来る限り(=子どもが、つまらなくならない範囲で)、具体的なキャラクター名や、ドーンが何かを説明してもらうようにしています。
「これとこれがドーンとなった時」の明確な定義ができないことは、論理的思考の基礎が不安定だということなので、(狭義の)論理的思考力が優れていたとしても、抽象化はできません。
些細なことかもしれませんが、プログラミング教育の本質的な部分はここではないかと思っています。

上記の話は、純粋なプログラミングの技術の話ではありません。
あくまでも、教育ツールとしてのプログラミングの話になります。

5年前、有償のプログラミング教室にするか、無償のCoderDojoにするか悩んでいました。
最後の最後に「生まれ育つ環境で、差をつけるのは嫌だ」という感情論でCoderDojoにしました。
当時は「無償=プラスではない」と思っていたのですが、実は「無償=持ち出し分赤字」でしたが、それでも、CoderDojoにしてよかったと思っていますし、私自身にもお金には代えがたい学びがあったと思っています。