プログラミング学習支援に関する論考
学習の難易度は連続的に上がるように思われがちですが、実際にはそうではありません。
特定の地点で難易度が急激に上がる「壁」が存在し、多くの学習者はその壁の手前で学習を止めてしまいます。その壁はどこにあるのか、多くの人が認識しているプログラミングの壁は正しいのか、考えていきます。
なぜ挫折するのか
プログラミングを勉強しようとすると挫折するものです。小学生の83%,中学生の76%という多くの児童生徒が「学びたい」と思っているにも関わらず、習得した子が多いという話を聞かないのがその証左と言えます。プログラミングの挫折といえば、やはり「文法が難しい」「解説書が難解である」「モチベーションが維持できない」などが想像されます。ただ、小学生などにプログラミングを教える体験をした中で、実は過半数はそうでないのではと思えてきました。
挫折の原因というのもわりと多くの人が気になる内容のようで、多くの解説ページが出てきます。
こちらのページでも、質問のための環境やモチベーションが原因とされています。
ただ、こういった調査というのは「プログラミング学習者になれた人間」を対象としています。実際には授業でもプログラミングを扱う以上、今の小中高生のほとんどは「プログラミング学習者」といえるわけですが、こういったところでいうそれは、ある程度アクションを起こした人間でしょう。
つまり何を言いたいかというと、この裏には、「プログラミング学習者になれなかった人間」がたくさんいるということです。
昨今、プログラミングができる人材を増やそう、多くの子がプログラミングができるようにとしている節がありますが、この人達に焦点を当てなければ、それらは実現できないように思えます。
プログラミング学習の壁
プログラミング学習の壁は、「プログラミング」でしょうか。
実際にはそうではないと思うのです。

適当に作った図ですが、難易度の遷移の概形はこのような感じになっているのではと思います。
難易度の遷移というと、連続的に変化していそうですが、実際には多くの人を振り落とす壁があるように思えます。それは「始める」段階です。
まず、当然ながら「興味を持ってもらう」ことが必要です。それも壁のはずですが、最近はプログラミングがもてはやされているので、さほど大きな壁ではありません。
なので、第一の壁は「ビジュアルプログラミング」を始めることになります。ビジュアルプログラミング言語とはScratchを始めとした、ブロック等の組み合わせによってプログラミングをする入門的な言語です。これは小中学校の授業で導入されていがちなので、それほど大きな壁にならないように思えます。
よって一番大きな壁は、「テキストプログラミング言語を始める」段階です。
この「始める」段階は様々な障壁を抱えます。
- 知識がないため、難易度の見積もりさえできない
- PCの操作が難しい
- 環境構築ができない
一番大きいのは最後の「環境構築ができない」が大きいように思えます。中高生にとっては、管理者権限のあるPCを持っているのは稀であり、そうなると両親を説得するなどのフェーズが入りますし、必ずしも機械に強いとはいえない親に対して、環境変数などの難しい概念を説明するのは至難の業といえそうです。
このように、プログラミングはプログラミングでない部分が障壁となっているのです。
逆にいえば、環境構築さえできれば、さまざまなことを試すことができ、比較的自律的に加速的に進めることができると思われます。
プログラミングを教えれば済むのか
プログラミングを教える講座などは、カリキュラムが強固に決まっているケースが多いです。しかし、前述の通り意欲が高いケースが多いです。プログラミングの意欲が高いというのは、「作りたいものがはっきりしている」ということもありうるのではないでしょうか。そして、プログラミングの挫折の原因には「モチベーション」が多く含まれていることが明らかです。
そうなると、「プログラミングで作りたいものを作れる体験」を早いところした方がいいというのはわりと自然な考えでしょう。
だからこそ、独学も増えるでしょうし、私もそうしてきました。
環境構築のために、プログラミングを全て教えるというのは実は誤りかもしれないということがいえそうです。
解決する方法
これらを踏まえて、解決方法を考えます。
体験ワークショップ
これがメインの解決方法ではないかと思います。
プログラミングを体験するワークショップを増やすというのは、筋の良い方法ではないかと思うのです。「ビジュアルプログラミング言語でなにか作る」「テキストプログラミング言語の環境を構築し、ちょっとしたものを作る」。そういった体験を通して、その体験以後も自分で作れるという形にしていくのがいいでしょう。
授業
小中高校、大学の授業もワークショップと同じ効果を持てると思います。環境構築ができてしまえば、多くの児童生徒学生は自分たちで勉強できると思います。それだけコンテンツはそろっています。
一番重要なのは、壁を下げて、背中を押すことです。
おすすめする言語
初学者にとって環境構築が大きな壁であるならば、最初の言語としては環境構築を必要としない言語が有利です。
その点で、JavaScriptは有力な選択肢の一つです。
Windowsであれば、最低限ブラウザとメモ帳があれば作れます。
私もメモ帳からプログラミングを始めました。
実は以前ならvbsなどもおすすめできたのですが、いまメモ帳でまともに作れるのは、JavaScriptくらいだと思います。
まとめ
プログラミング学習以前にプログラミングで挫折する、その原因とはという感じのお話を書いてみました。
学習を始める前に脱落する「プログラミング学習者になれない人達」が相当数いるのではということです。近年、プログラミング学習を取り巻く環境も大きく変わりました。生成AIに訊きながらできるようになったので、プログラミング学習自体の難易度は下がったのではと思います。だからこそ、残るプログラミング学習の問題は「プログラミング学習者になるための支援」に尽きるのではないでしょうか。
学習者になるための壁が、この記事によって少しでも下げていけることを切に願います。