コンピュータを使わないプログラミング学習について

先日の 東京都のプログラミング教育が少し怪しいが思いがけずシェアされ、執筆した本人が一番驚いています。(4日間で2万人近くの方にご覧いただきました。)

前回の記事ではざっくりと「 実際には運転をせずに、座学やシミュレーターだけで車の運転免許を交付しているようなもの 」とコンピュータを使わないプログラミング学習活動を一刀両断してしまいましたが、「その点をもう少し詳しく聞きたい」との声をいただきました。

今回の東京都の件に限らず 一般論として議論 したいと思います。

(私はいわゆる研究者/アカデミアではなく、この界隈の一実践者なので不正確な点がもしあれば温かな心で指摘いただけると幸いです)

① そもそも何故プログラミング必修化なのか

色々な議論はあるのですが、

①-1. 平たい言葉でいうと、

これからの時代、コンピュータのことをきちんと分かり、活用できる力が必要だからです。

①-2. 行政的なコンセンサスとしては、

例えば中教審の議論では、「情報化の進展により社会や人々の生活が大きく変化し、将来の予測が難しい 社会においては、情報や情報技術を主体的に活用していく力や、情報技術を 手段として活用していく力が重要である」というのが根底にあります。

既存の教科の学習を深めるだけでなく、情報や情報技術を適切に活用していく力(情報活用能力)を育む必要があり、その一要素としてプログラミング(的思考)があるのです。(学習指導要領の総則に記載があります)

f:id:yutatone:20190410170030p:plain
図:学習指導要領 総則での情報活用能力の記載について(著者要約)

② 何故そんな回りくどい方法で「コンピュータを使わずにプログラミング・コンピュータサイエンス *1 を学ぶ」のか

コンピュータでのプログラムの動作というのは非常に高速であり、その計算過程を人が理解しやすい形で確認出来ない事も多いです。

また、仮に計算過程を見ることができても、その背後の考え方について深く理解しようとした時に画面からの視覚情報だけでは理解出来ない学習者もまま現れます。

そこで、コンピュータの動作を子どもたちにとっても親しみのあるアナログな手段(体、手、紙等)を使い理解する手法として Computer Science Unplugged という手法が生まれました。

コンピュータの動作についてコンピュータだけだと理解が困難なので、一旦アナログな手法で学習し、コンピュータの動作を理解しましょう 」ということです。

例えば、背の順を「ソート」と捉えた例がこちらです。


人力アルゴリズム01 〜バブルソート〜

実際にこちらの書籍 では各章ごとに「実際のコンピュータでは」という形で学習内容をまとめています。

更に詳しくは こちらの書籍CS Unplugged の Web 等をご覧ください。

日本の小学校現場では、、

さて、2020年度からの小学校プログラミング必修化でもコンピュータを使わない学習活動がもてはやされています。

また、2年前に出した拙著やみんなのコードが運営するプロカリにおいてもコンピュータを使わない活動を含む学習活動の事例があります。

その学習活動をプランニングする時に気をつけているのは、前述の本来のコンセプトと同じく、アナログな手法だけに留まることなく、 アナログな手法を通じてプログラミング等のコンピュータの特性についての理解が深まるよう にという点です。

例えば、ループの概念を理解する為に、ダンスを作って実際にいくつかの動作を繰り返して踊るのですが、 それだけに留まらず、次の時間には実際のコンピュータでプログラミングをする 等です。

③ では、なぜコンピュータを使わない事例だけではまずいのか

①で指摘したように、コンピュータを理解し活用する力(情報活用能力)の一部としてプログラミングの学習活動が位置付けられています。

②で指摘したように「一旦アナログに出て、再びコンピュータに戻る」学習であれば、①の要件を満たす可能性はあります。(みんなのコードは気をつけています)。

しかし、実際子どものコンピュータを使っての体験の時間が無いと中々厳しいでしょう。

また、百歩譲って時間が無いだけだったとしても、「 その考えはコンピュータに戻せる思考方法とは言えない 」事例もしばしば見かけるのも事実です。

ということで、プログラミング必修化をした背景からすると、「コンピュータを使わない活動だけ」というのは適切ではありません。


【余談1】既存の授業の改善策として

ちなみに、既存の授業の改善策としてフローチャート等のプログラミングでも使う考え方を応用する事は多いに有りだと思います。

しかし、それだけをもって「プログラミング教育の実践として」言うのは流石に無理筋だと考えています。

【余談2】コンピュータを使わない学習活動に取り組もうとしている先生たちに

上述の「コンピュータに再び適用できるか」という観点に加えて、もう一つご理解いただきたいことがあります。

それは「コンピュータを使った方が簡単」ということです。

コンピュータを使わない学習活動だと子どもが不規則な事を言ったときにとっさに軌道修正をする必要が出てきます。

例えば、上述のダンスをプログラムしようという例で子どもが「キック」ブロックの横に「まわる」ブロックをつなげた時に先生はどうやって軌道修正したらいいでしょうか?難しいですよね。

そのような観点からも先生が始めてプログラミングの学習活動に取り組む際にはコンピュータを使う学習活動をお勧めしています。

*1:コンピュータサイエンスはプログラミングを含むより広範な学問領域です