プログラミングを学ぶ生徒にとって何が難しいでしょう?

プログラミングを学ぶ生徒にとって何が難しいでしょう?

子どもたちがプログラミングを学ぶことは「横断型学び」です。プログラミング言語の文法だけを学べば良いのではなく、学校で学んだ国語、算数(数学)、英語、理科、社会などの知識を総合的に応用しながら、プログラミングを学ぶべきだと思います。
プログラミングを通して、子どもたちが学校で学習したたくさんの知識を活用でき、さらに新しい知識も身につけ、楽しく問題解決にチャレンジできれば、子どもたちにとって素晴らしいプログラミング教室だと私は思います。

小中学校に出張講座をしていたとき、現場の先生からよく「プログラミングは難しいですね」と言われました。
確かに、実際に何かを開発する時、プログラミング言語を熟知するだけではなく、システム全体の構築、ネットワークやセキュリティの知識などもなければ、なかなか良い開発ができません。
プログラミング言語もネットワークの仕組みもセキュリティもなかなか難しいですが、プログラミング教室で子どもたちに教える時は、難しい開発ではなく、簡単な(基本的な)プログラミング技術を使っていろんな問題を解決する方法(思考)を教えれば良いと思います。
もしくは、それを学ぶ場を提供すれば良いのです。
そのような場があれば子どもたちは自ら学び続けていきます。確かに、教える側の講師は継続的に学ばなければなりませんが、子どもたちに教えるときは、高度な知識がなくても大きな問題はありません。
プログラミングの基礎をまず子どもたちと一緒にしっかり習得してください。

私の経験上、生徒がプログラミングをはじめて学ぶ時、難しく感じるところがあります。
講師が教えるときに生徒の気持ちを理解して指導しなければなりません。
生徒にとって、プログラミングを学ぶ時に一体何が「難しい」のでしょうか?

アイデアが浮かんでこない

生徒は、自分が作りたいゲームなどがあればどんどんアイデアを出してくれます。
作ったゲームをさらに改造して、進化させます。
しかし、一方そんなにゲーム好きでもないけれど、ただプログラミングを学びたいという理由でプログラミング教室に来ている生徒は、自分から作りたいものが特にありません。
例えば講師が「好きなゲームを作ってください」と言っても、何のゲームを作れば良いか、考えても考えても全然アイデアがありません。
アイデアを思いつく人は、コミュニケーション力と観察力と想像力が優れています。

でもアイデアが出ない人はそのような力をまったく持っていないかと言うと、そうでもありません。
ただゲームに対してあまりよく知らないだけなのです。それぞれの生徒が自分の興味ある分野があります。
仮に一時的な興味であっても「やってみたいこと」はあると思います。
講師は生徒と話し合って、生徒の興味に近い課題を提案すれば良いと思います。
生徒と話し合うことが非常に大事です。
アイデアは、話している中で生まれます。
ですから、私は生徒とプログラミング以外の話もします。生徒との話しからヒントが得られます。
話しを通じて子どもたちも想像力が刺激され、ひらめきを得てくれます。

生徒が自分で決めたアイデアを制作するのがベストです。

問題解決方法を思いつかない

プログラミング言語の文法がわかれば、誰でもプログラムを書けます。
しかし、問題の解決方法がわからない場合、どのようなプログラムを書けば良いかは誰にもわかりません。

プログラミングの難しさはプログラミングの文法ではなく、プログラミングの入り口である課題の解決方法、つまり制作プランを立てることだと思います。

ある時、生徒に制作課題を提示して制作してもらいましたが、なかなかプログラムを書き始められません。
状況をたずねると、「どうしたらいいかわからない」と回答が返ってきました。
このような生徒はかなり多いと思います。
これは生徒がプログラミングの文法がわからないのではなく、問題の解決方法の思考力がまだ足りないからです。
この思考力は少しずつ訓練して高めるものなので、ゆっくり教えていかなければなりません。

どう作るか、どこから作るか、何の命令を使って作るか全く見当がつかない場合、一緒に課題を分析します。
作らないといけないパーツ(キャラクターなど)と、それぞれのパーツのアクション(やらないといけないこと)をリストにしてみます。
紙に書けば確認しながらプログラムを組めます。

制作プランの組み立ては、論理的な思考力、確かな計算力、豊かな想像力(予想力)などの力が必要です。
実は、これらの力は学校で学んでいます。
論理的な思考力は国語と数学の授業で勉強しました。
例えば、作文の起承転結、小説背景の読み取りの練習はすべて論理的思考です。
数学での計算手順も論理的思考につながっています。また計算力は小学校低学年から訓練しています。

しかし、学校で学んではいますが、活用の訓練はほとんどありません。
問題解決方法を見つけるには、知識の活用訓練が必要です。
例えば、割り算の余りの計算。小学3年生以上ならほとんどの生徒が計算できます。
しかし、奇数と偶数をどうやって区別するかという課題に対しては、余りを使うことをなかなか思いつかないのです。
計算はできますが、活用はできません。
ですが本当は、一度だけ活用体験ができれば、生徒は今後自ら活用できるようになります。

私達講師は、その活用体験をたくさん生徒に体験させなければなりません。
プログラミング学習の時、一度体験しないと開発方法を思いつかないことがよくあります。
学校の学びがしっかりできて、かつ、たくさんの問題解決方法を体験することで、プログラミング技術の理解と応用が飛躍的に向上します。

まとめ

プログラミング教育は、開発の技術だけを教える目的ではなく、これからAI社会に生き残れるためのコミュニケーション力、観察力、思考力、計算力、想像力を子どもたちに身につけてもらうのが目標です。
私達がプログラミング教室を運営する時、この目標を忘れてはいけないと考えています。

img_avater_nakayama

中山 涼一

こどもICT教育支援センター センター長

2014年に関西初のこども向けプログラミング教室「未来学校プログラミング教室」を創設。
800名以上の指導実績を誇るプログラミング教育のスペシャリスト。

プロフィール