プログラミング教育は最初が肝心


Tweet about this on TwitterShare on Facebook

プログラミングは工作用紙や糊やハサミと同じ

子ども向けのプログラミング環境は1990年代から大きな関心事だったので、当然パパートの「マインドストーム」は読み漁ったし、LOGOやHyperCardを学校に持ち込んだ経験もある。Scratchの阿部さんやViscuitの原田さんとは、そこそこ長いお付き合いがあるし、自分自身も講演で話したり原稿を書いたりするのだが、意外にもこのブログで書くのは初めてだったりする。

プログラミング教育には諸々の主張が(文科省の議論も含め)あることは承知しているが、僕の学習者中心主義の立場をシンプルに語れば、子どもにとってのプログラミングとは工作用紙や糊やハサミと同じ。「自分の意のままに機械仕掛けを操る」ことがゴールだ。

子どもによって作りたいモノは、自作ゲームだったり、アニメーションだったり、絵本のお話だったり様々でかまわない。プログラミングが、たまたまそれらを作る良い手段であることに気付けば、自身の強力な表現・創造ツールに化ける。

出来れば、勝手気ままな遊びのなかでプログラミングを知ってもらえたら最高なのだが、残念ながら、プログラミングは糊やハサミほど扱いが簡単ではない。その昔、大学の講義でプログラミングを教えたら8割脱落は当たり前で(今はだいぶ違う)、しかも一番最初が一番面倒で辛いという、かなり劣悪な特性がある。導入に失敗したら、教わる側は二度とやりたくないと思うだろう。

僕は少なくとも良い学びを追究する立場だから、「どうしたら挫折を少なくして、プログラミングを上手く学べるか?」は長らく挑戦的かつ魅力的な問いだった。出来るだけストレスのない理想的な出会わせ方をしたいし、プログラミングが好きになってもらえたら嬉しい。

シーモア・パパート(1982)「マインドストーム」子どものコンピューティングについて扱った画期的名著

導入部に必要な4条件

すごく大雑把な書き方だが、プログラミングの導入部には、次の4条件が必須だと考えている。それぞれ簡単に説明しよう。

1)分かりやすいモデル

本来コンピュータは機械語しか理解しないが、人間側が機械語を話すのは難しい。そこで、プログラミング言語を通じて、人間が理解しやすい形でプログラム記述が出来るような枠組み(モデル)が提供されてきた。プログラミング言語は数え切れないほど種類があるので、どれが正統か、という答えはない(人に応じて好き嫌いと向き不向きはある)。

16進数で書かれた機械語の内容、判読は困難だ

ブロックを組み合わせるビジュアル型のScratchが登場したことで、子どもも大人も扱いやすくなったのでここ数年で爆発的に普及した。他にも、見かけはゲームだがマインクラフトアルゴロジックも、あらかじめ命令を与えて何かを動作させる、というプログラミングのモデルは同じだ。

それぞれ出来る事には違いがあるけれども、どれから初めても間違いはない。学習者のとっつきやすさと分かりやすさで決めればよい。プログラミングのノウハウは、比較的応用が効きやすいので、学んだ事は将来無駄にならない。

ビジュアル・ブロック型言語の代表はScratch。これは分かりやすい。

2)手元での試行錯誤(ハンズオン)

教室授業では途中でトラブりたくないので、教員の演示を見せるだけの展開になりがちだが、一方的に説明される側は、やたらと回りくどいだけで、ひどくつまらない。

プログラミングはとにかく自分の手で納得出来るまでやってみないと、意外に思い通り動かせないとか、あちこち工夫してみてやっと動いた!といった深い経験は出来ない。そういう意味では図工の画材や粘土に近い。

美術館・科学館などでは、来館者自身が参加体験するイベントを「ハンズオン」と呼ぶが、幼い子どもほどハンズオンの効果は大きい。

なにごとも自分で作って試してみないとね Oregon State University Follow Hands on STEM (science, technology, engineering and math) activities engage participants.

3)入り口段差の解消

前提とする知識スキルが多すぎると、いきなり挫折する人が続出する。プログラミングはその典型で、お作法を一通りマスターするだけでも骨が折れる。

入り口段差(前提知識やお作法)は出来るだけ低くしたい。つまり、教える時間を短くし、学習者のハンズオンと試行錯誤の時間を増やして、動機づけを維持させる仕掛けが重要だ。

例えば、古典的なテキスト型プログラミング言語はタイピング・ミスでつまらぬエラーを起こすのでイライラするが、Scratchなどのビジュアル型言語は操作画面上にヒントが埋め込まれている(ブロックの形がはまるか、はまらないか、目で見て判断出来る)ので、お作法を全部教え込む必要がない。

4)強力な動機づけ

なにごとも内発的動機づけに勝る学習の糧はない。子どもにとって「自分の意のままに世界を作る、何かを操る」事は最大の動機づけだ。

例えば、買ったゲームを受け身で解くのではなく、「自分でゲーム(物語) を作ったら?」悪のささやきは多くの子どもを惹き付ける。自らの世界を創造し、その世界を友達(他人)にも味わってもらいたい。そのためなら、多少困難があっても、乗り越えたらご褒美が待っている、という気にさせてくれる。

小5の子がViscuitで作ったゲーム その1

小5の子がViscuitで作ったゲーム その2

まずは図工制作的な展開を

このような条件を設定すると、もし、小学校でプログラミング教育を扱うのなら、いきなり算数や理科の教科に無理矢理ねじ込むのではなく、むしろ、図画工作のような、まとまった制作中心の時間を設けた方が、学習者の動機づけと満足につながる。

その際は、手続きを逐次説明するステップバイステップの教授(インストラクション)で引っ張るよりは、子どものやりたい事や理解程度に応じて、活動を促す(ファシリテート)方がエレガントだ。

教科でのプログラミングの扱いについては、なかなか悩ましいところなのだが、書き出すと長くなるので、また別稿でまとめることにしよう。