資料を読んでいると、「プログラミング的思考」という謎の言葉が現われる。これについて、「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」には、こうあります:
| ○ プログラミング教育とは、子供たちに、コンピュータに意図した処理を
| 行うよう指示することができるということを体験させながら、発達の段
| 階に即して、次のような資質・能力を育成するものであると考えられる。
|
| 【知識・技能】
| (小)身近な生活でコンピュータが活用されていることや、問題の解決に
| は必要な手順があることに気付くこと。
| (中)社会におけるコンピュータの役割や影響を理解するとともに、簡単
| なプログラムを作成できるようにすること。
| (高)コンピュータの働きを科学的に理解するとともに、実際の問題解決
| にコンピュータを活用できるようにすること。
|
| 【思考力・判断力・表現力等】
| ・ 発達の段階に即して、「プログラミング的思考」(自分が意図する一
| 連の活動を実現するために、どのような動きの組合せが必要であり、一
| つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、
| 記号の組合せをどのように改善していけば、より意図した活動に近づく
| のか、といったことを論理的に考えていく力) [5]を育成すること。
|
| 【学びに向かう力・人間性等】
| ・ 発達の段階に即して、コンピュータの働きを、よりよい人生や社会づ
| くりに生かそうとする態度を涵養すること。
|
| [5] いわゆる「コンピュテーショナル・シンキング」の考え方を踏まえつ
| つ、プログラミングと論理的思考との関係を整理しながら提言された
| 定義である。
まず、 “[5]” において「プログラミング的思考」についての注が付されている。だが、その注に書いてあるとおり「踏まえつつ」であることに注意してほしい。つまり、ここでは「誰も提唱していない事柄を、何の根拠もなく、ここで採用している」のだ。これは、良く言っても詐欺、あるいは権威を利用した誘導であるにすぎない。もちろん、最悪の場合、そもそもの論文(後述)を理解できなかったという可能性も否定できないが。
なお、「コンピュテーショナル・シンキング」という用語は、元々はシーモア・パパートによる用語だが、広く知られるようになったのは、2006年のJeannette M. Wingによる論文とのことだ。
さて、ここで「踏まえつつ」というのが、元の論文とどれほど違うのかを見てみよう。このリンクは林 向達氏によるWingの論文の翻訳だ。ぜひ一読して欲しい。専門用語が入っているが、上に書かれている「プログラミング的思考」とは、まったくの別物であることはわかるかと思う。「誰も提唱していない事柄を、何の根拠もなく、ここで採用している」と書いたのは、つまりはそういうことだからだ。
また、『図解 プログラミング教育がよくわかる本』〔石戸 奈々子, 講談社, 2017.〕のp. 14にはこのような箇所がある:
| なぜ? どうして?
| ロボットをつくり、「まっすぐ歩く」という動きをプログラミングしたの
| に、その通りに動かない。理由を考える
また、p. 15には明確にこうある:
| 自然に試行錯誤ができるという特徴もあります。
ここは上記のこの部分に対応すると見ていいだろう:
| 自分が意図する一連の活動を実現するために、どのような動きの組合せ
| が必要であり、一つ一つの動きに対応した記号を、どのように組み合わ
| せたらいいのか、記号の組合せをどのように改善していけば、より意図し
| た活動に近づくのか、といったことを論理的に考えていく力
これは一面において試行錯誤とも言えるだろう。だが、すくなくともプログラミングにおいては必要な試行錯誤と、不要な試行錯誤が存在する。『図解 プログラミング教育がよくわかる本』の例であれば、それはデバグの範疇であり、不要な試行錯誤の一例である。
つまるところ、「自分が意図する一連の活動を実現するために [略]」の部分は、「コンピュテーショナル・シンキング」においては、「論理的分析」と、「プログラムがきちんと動くことを論理的に証明」において試行錯誤した上で、実際のコーディングにいてはデバグも必要になるというものだろう。
この二つの試行錯誤はまったく異なるものであることについては、説明は不要だろう。
また、上記「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」においても、『図解 プログラミング教育がよくわかる本』においても、「論理的に考える力」というような表現がなされている。これはわざわざ書くまでもないことだと思うが、想定されている「プログラミング教育」において、「論理的に考える力」は身につかない。数十年前だろうか、「プログラミングを憶えると、数学ができるようになる」という話があった。大学生なら具体的なイメージを見るためにそういうこともあったかもしれない。だが、小中高においては、そんなことはまったくない。もちろん、個人の興味によってさらに勉強する児童・生徒については別扱いだが。
この点について見ると、小学校などの授業へのICTの導入に際して言われていたことを思い出さないでもない。というのも業界団体の主導的立場にある人は、「とにかく導入すればいいんだ」といい、twitterにてその後のこと、つまりどう使うのかなどについて訊ねたところ、twitterにてブロックされた経験がある。
今回のプログラミング教育の必修化 (単独の教科になるわけではないが) においても、似たような雰囲気を感じると言えば勘繰りすぎかもしれない。だが、導入が前提であり、内容はおざなりである点は似ているように思える。
また「分割統治」と言えば、プログラミングの経験のある人はイメージするものがあるだろう。だが、資料を読む限りにおいて、ここでいわれている「プログラミング教育」における、「問題を分割し」とは、上にも挙げたが、このようなもののようだ:
| 自分が意図する一連の活動を実現するために、どのような動きの組合せ
| が必要であり、一つ一つの動きに対応した記号を、どのように組み合わ
| せたらいいのか、記号の組合せをどのように改善していけば、より意図し
| た活動に近づくのか、といったことを論理的に考えていく力
つまり、「問題を分割し」というのは「分割統治」のことではないようだ。これもまた、本来の「コンピュテーショナル・シンキング」とは異なる箇所だろう。一枚フィルターを通すと台無しになる例のような気がする。
現状、あるいはすでに遅いかもしれないが、児童・生徒の保護者や教諭の方々は、ぜひ「まっとうなコンピュータ教育を」と声を挙げていただきたい。もし、「コンピュータ・サイエンス」などを勉強するのは面倒だというのなら、それはそれでしかたがないが。だとしたら、せめて抽象概念の操作に長けた児童・生徒の邪魔をしないで欲しいと願うのみだ。なお、kuzu/NULLのサイトをご確認いただき、よろしければ声をかけていただければと思う。本企画のリターンとは別物として、対応する準備がある。