小学校低学年へのプログラミング教育には効果がないと考えたほうがいい

子どもへのプログラミング教育は早ければ早いほどいいというものではない。
最近子どもへのプログラミング教育が話題になることが多いけど、恐らく小学3年生までの子どもへの効果はほとんどなく、小学4年生でもほとんどの子どもには難しいと思う。
人間の知能の発達には段階があって、必要な段階に達していないうちにそれが必要な教育を行っても効果は望めない。


まず、なんでこのエントリを書いたかというと、プログラミングには適した発達段階があるということを知らないと、その発達段階に達する前にプログラミング教育を行って、もちろんプログラミングは出来なくて、その子には適性がないという判断をしてしまうとうことが起きてしまうんじゃないかと思ったからだ。
まだ適した段階まで来てないだけなのにプログラミング教育をして失敗して「この子にはプログラミングができなかった/興味をもたなかった」という実績を作ってしまうことによって、将来の可能性をつぶしてしまう、もしくはそれがなかったときよりも遅れてしまうということが起きてしまうんじゃないかと。
小学校3年生や4年生にプログラミング教育をやって、あまり興味を持たなかったりうまくできなかったときは「まだプログラミングには早かった」と考えることが当たり前になったほうがいいと思う。


実際、ぼくは小学4年から5年にあがる春休みにパソコンがうちに来たのだけど、最初のうちは雑誌に載ってるゲームのソースリストをそのまま打ち込むだけで、条件分岐やループのあるプログラムを理解できるようになったのは5年生の秋くらいだったと思う。
いろいろな人の話を見聞きしても、小学生のときにプログラムを書いたというのは早くて9歳、だいたい10歳くらいなので、そんなものなんだろう。


そもそも小学生からプログラミングの勉強をする必要があるのかという話はあるけど、プログラマにならないにしても、ループを伴う論理構造の思考力を鍛える機会というのはプログラミング以外になかなかなくて、プログラミングで論理的な思考力を早くから鍛えておくと例えサッカー選手になるにしても有利だと思う。


ところで、こういった発達段階という話題が出るときには、ピアジェという人の説がだいたいベースになっている。ここの説明が簡潔で見やすい。
ピアジェの発達理論 | 保育士 独学で資格取得!
感覚運動期、前操作期、具体的操作期、形式的操作期という4つの段階がある中で、プログラミングができるようになるには、具体的操作期から形式的操作期に移行する必要があるようだ。形式的操作期になると抽象的な考え方ができるようになるという。この移行の時期が、書かれているところによって違うけど9歳から12歳くらい。
つまり、小学生の間はプログラムが組めなくてもまあ仕方ない、中学生になったらだいたいできるだろうという感じなのだと思う。
(ただし、すべての子どもがピアジェのいう通りの発達段階をたどるわけではない、ということは留意しておく必要がありそうです 追記:1/7 15:12)


こういった話は、総務省の「プログラミング人材育成の在り方に関する調査研究報告書」という去年の文書にまとめられている。
http://www.soumu.go.jp/main_content/000361430.pdf


41ページに、次のような記述がある。

IF-THEN型の論理構成は9歳10歳まで理解できない。また、論理的思考は、11歳以降でなければ理解するのは難しい。

フローチャートの学習は小学校5年生以上になってからでないと難しい。よほど優秀な場合は小学校4年生でもできる場合もあるが、小学校3年生以下にはまず不可能である。


もちろん、小学校低学年にプログラミングを教えてはいけないということではなくて、機会があればやってみていいと思う。そのときもし出来なかったとしても、それは向いてないとか素質がないとかいう固定の性質ではなくて、まだ準備が整っていないという経過的な性質なのだと考えたほうがいいということ。
で、実はこれは、大人にプログラミングを教えるときでもそうで、未経験の人がプログラミングを勉強するとき、こういった発達段階を短期間に上っていくような理解のしかたをしているように見える。つまり、最初は操作になれつつプログラムと動作が対応づいていることを知ることが大事で、そのあとで条件分岐やループといった論理構成がわかり、プログラムの設計のような抽象的な構造がわかってくる、という感じ。
要するに、年齢関係なく、なにかを教えるときは教えられる人がどういう段階にあるのか把握して、その段階に応じたことを教えつつ上の段階に移行させていくというのが大事だと思う。


もし小学校低学年にプログラミングを教えるという場合は、何かを2回書いたら何かが2つ動くとか2回動くとか書いたものと動きが直接対応しているものから始めて、条件分岐やループのないものにしたほうがよさそう。
そうやって、コンピュータの操作自体に慣れるとか、書いたものと動きが対応していることを知るとか、プログラミング教育の準備という段階にしておいたほうが低学年のうちはよさげ。
あとは5年生くらいになったら、様子をみながら条件分岐とかループとかのあるものをやっていくのがいいと思う。
そうやって、ひとりでも多くの子どもたちを、プログラミングの道に引き込みましょう。


追記(2016/1/7 13:29)
子どもへの教育にはコンピュータ使わないのがいいのでは、みたいな話があったので、こういう本もありますよ、と紹介。

コンピュータを使わない情報教育アンプラグドコンピュータサイエンス

コンピュータを使わない情報教育アンプラグドコンピュータサイエンス

  • 作者: Tim Bell/Ian H.Witten/Mike Fellows,Matt Powell,兼宗進
  • 出版社/メーカー: イーテキスト研究所
  • 発売日: 2007/09/01
  • メディア: 単行本(ソフトカバー)
  • 購入: 10人 クリック: 83回
  • この商品を含むブログ (15件) を見る

日本語サイトもありました。書籍に載ってるものだけでなく新しい章も載ってます。(追記2016/1/8 10:33)
コンピュータサイエンスアンプラグド

ピアジェに学ぶ認知発達の科学

ピアジェに学ぶ認知発達の科学