「小学校プログラミング教育が良くわかる本」を読んで

2023年9月14日

正確なタイトルは、「先生のための 小学校プログラミング教育が良くわかる本」(利根川裕太、佐藤智著 翔泳社)であるが、「はじめに」を読むと分かるように読者を先生に限定しているわけではない。小学校プログラミング教育が良くわかる本
本書の冒頭に文部科学省へのインタビュー「プログラミング教育に込めた意味」が載っており、これを読めばプログラミング教育導入の背景や基本的な考え方が分かる。
このなかで「プログラミング的思考」については、
「プログラミング的思考、つまり、自分が意図する一連の活動を実現するために、どのような動きの組み合わせが必要であり、ひとつひとつの動きに対応した記号を、どのように組み合わせたらよいのか、記号の組み合わせをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力です」
と説明している。さらに、
「将来どのような職業に就くかにかかわらず、また、今後どのようにプログラミング言語が進化し、変化しようとも、将来生かせる力を育むのが学校教育である」
と解説している。
上記の説明は正しいように思える反面、疑問も残る。
「記号の組み合わせ」と言っている点で、これはほとんどプログラム言語そのものである。すなわち、「プログラミング的思考」と言いつつ実質プログラミング(手続き型言語)の学習を狙いとしている(と思う)。
また、本書の中には「プログラミングは、もともと英語で行うもの」という記載があるが、これも正しくない。多くのプログラム言語はアルファベットや数式を使って記述するが、英語の文法に則っているわけではない。
従って、「言語は小さいころから学んだ方が確実に力をつけることができる」という記述は、英語などの外国語には当てはまっても、プログラム言語には当てはまらないだろう。
語学や音楽などの課題は早い時期に学習することの効果が認められているそうだが、すべての課題(科目)に当てはまるものではなさそうである。
早期教育の根拠になっているのは主に「学習優位説」であるが、プログラミングについて早期学習の効果があるのかないのかは定かではない(私は知らない)。
「今後どのようにプログラミング言語が進化し、変化しようとも」という点も論点になるだろう。
現在のコンピュータの仕組みは、1950年代のEDVACからほとんど進歩していない。真空管から半導体に変わりはしたが基本構造は同じである。
また、ソフトウェア(プログラム)についても、フォン・ノイマンの言語からたいして進歩していない。半世紀以上たっても大きな変化がない! というのはある意味驚きである。
特にソフトウェアの進歩がハードウェアに比べて驚くほど遅いことは多くの識者が指摘していることであり、これは今後大きく変化する可能性がある(プログラミングの方法についてパラダイムシフトが起きる可能性がある)。(この点は、別途記載していくつもりである)
ハードウェアの進歩について、「半導体の集積密度は18~24ヶ月で倍増する・・・というペースが数十年続いてきました。しかも、この先もそのハイペースな進化は続くだろうといわれています」
と書かれているが、この記載も正しくない。ムーアの法則はそろそろ限界に近付いていると言われている。これ以上微細化が進むとやがて量子力学の世界に入る。
プログラミング教育を組み込む教科として、
「理数教育の中でプログラミング教育の充実を図ることは有用ではないかと考えている」
と述べ、体育や国語はあまり向いていない、としている。この点は正しいと思う。
「デジタル教材の教育学」(東京大学出版会)には、「数学や理科の問題に比べて、国語や社会、総合的な学習の時間に扱う環境などの問題では、課題分析の手法がうまく適用できない場合が多い」との指摘がある(認知的柔軟性理論)。
本書には「体育でダンスをプログラミングする・・・・などの活動も考えられます」、とあるが体育の対象は運動領域(学習課題を認知領域、運動領域、情意領域に分けた場合)が主であるから、この指摘はあまり適切ではない。
ソフトウェア開発手法に関しても、若干誤解がある気がする。
具体的には、「失敗するのは当たり前で、トライアンドエラーでコードを書いていくものです」という主張である。
(ユーザ要件が不確定な場合の)アジャイル手法には、確かにトライアンドエラー的な側面がある。
しかしそれはコードを書くことに対してではなく、仕様や機能に対するものである。ユーザーの要求が曖昧な場合に、短時間でプログラムを実装してユーザに動作を見てもらいダメな部分を修正する、という意味でのトライアンドエラーであろう。
学習者が初学者であることを考えると、確かにトライアンドエラーでコードを書くことはあり得る。しかし、エラーになった場合、なぜエラーになったのかを考えることが重要である。
なぜ、自分の仮説どおりに動かないのか(自分が想定した動きと異なるのか)?
を考えるとき、もしかしたらプログラム言語仕様が不明確な場合もあるだろう。
本書に限らないが、この種の書籍で気になるのはプログラミングという言葉の使い方である。プログラミングと言いつつ、それがソフトウェアを指している場合や、ハードウェアやネットワークも含むIT(コンピュータシステム)を指している場合があることである。
例えば、「(プログラミング教育を必修化する背景には)諸外国と比較して高度なIT人材が日本には圧倒的に不足している危機感があった」という記載である。
この場合はプログラミング教育の問題というよりは、ITリテラシーに関する教育の問題と考えるべきである。科学的リテラシーや数学的リテラシーと同じく、ITに関するリテラシーが不足している、ということだろう。

プログラミング教育
「プログラミング教育」のINDEX