子どもが楽しくプログラミングを学ぶためには何が必要?
2024/09/04
現役プログラマーとして様々な活動をされている鳥井雪氏による、プログラミング通信をご紹介します。こちらのコラムでは、「実際のプログラマーが毎日どんなことを考えてプログラミングしているか」や「実生活でプログラミング的思考がどのように役立つのか」などを、わかりやすく分解してご紹介いただいています。
★こちらの「こどもプログラミング通信」も合わせてご覧ください!
本記事の筆者:鳥井雪(とりい・ゆき)氏 小学校高学年むけプログラミング入門書『ユウと魔法のプログラミング・ノート』著者。
Railsプログラマーとして活躍し、女性にプログラミングの技術を解放する世界的ムーブメント「RailsGirls」の、日本での普及にも尽力する。その功績を認められ、2013年楽天テクノロジーアワード ルビー賞受賞。
RailsGilrsの創始者の一人である、リンダ・リウカス著のプログラミング教育絵本『ルビィのぼうけん』を翻訳、1カ月経たず3刷2万部のヒットとなり、プログラミング教育必修化にむけての一助となる。
翻訳に『ルビィのぼうけん こんにちはプログラミング』『ルビィのぼうけん コンピューターの国のルビィ』『プログラミングElixir (笹田耕一と共訳)』
プログラミング・ドリル、二つの種類
プログラミング教育の盛り上がる昨今、書店には低学年向けプログラミング・ドリルもたくさん並んでいます。コンピューターを動かすのではなく、紙にかかれた問題を解くことでプログラミングの考え方を学ぼう、というものですね。
どれも趣向を凝らした力作です。プログラミングの考え方や、プログラミングによって得られる問題の整理の仕方を伝えようという工夫がたくさんあります。可愛らしかったり、子供に人気だったりするキャラクターが活躍するものも多いですね。
いくつか中身を確認していて、気がついたことがあります。問題には二つの種類があるな、ということです。例えば次の「条件」についての二つの問題を見比べてみてください(わたしが例として考えた問題で、実際の問題そのままではありません)。どういう違いがあるか分かりますか?
A.
ひかりちゃんはおつかいで、「あかい」「5こいりの」りんごをかってくるようにたのまれました。ひかりちゃんがえらぶのはどれですか?
・青いりんごが5個入った絵
・赤いりんごが5個入った絵
・赤いりんごが5個入った絵
B.
ひかりちゃんはおつかいで、絵のようなりんごを買ってきました。
[赤いりんごが5個入った絵]
絵にあてはまる条件はどれですか?
・あおいりんご
・あかいりんご
・6こよりすくない
・6こよりおおい
コンピューターの動きを理解することと、命令を出すこと
AとBの違いは、この問題を解くときに人がやることになる”役”の違いです。
Aの問題では解く人は「コンピューターの役」をやって、コンピューターが与えられた条件からどのような結果を出すのかを考えます。Bの問題では「プログラマーの役」をやっています。プログラマーとして、どのような条件をコンピューターに与えたら目的の結果が得られるかを考えているのです。
Aはコンピューターの動きをシミュレーションする問題、とも言えるでしょう。 Aの問題は初学者が、条件とは何か、どのような条件を与えたらコンピューターがどのように動くのかを理解するために大切な問題です。ですが、自分でプログラムを作る時は、Aで得られる理解をもとにして、Bのように「得たい結果のためにコンピューターに与える条件を考える」能力が必要となってきます。
では、子ども向けプログラミング・ドリルでは、AタイプとBタイプ、どちらの問題が多いでしょう。それは、断然Aタイプ、コンピューターの動きをシミュレーションするタイプです。それも当然の話で、ドリルはプログラミングの入り口です。まずコンピューターの動き方について理解することができなければ、コンピューターに命令することなんて考えられません。
ですがその次、「コンピューターにどのような命令を与えれば望む結果を得られるのか」を考えることができるようになってはじめて、プログラムをつくることができます。条件を与えられてその動きを考えるのではなく、能動的に、条件そのものを考える能力です。
しかしそこまでをドリルで身につけるのは、なかなか難しいでしょう。ではその能動的な能力は、どうすれば身につくでしょう?
プログラミングへの理解度によって学び方は違う
それにはやはり、実際にコンピューターに向き合って、プログラムを書いて動かしてみるしかないと思います。何か解決したい課題や設問があれば効率的ですね。
「こう動かしたい、そのためにはどうすればいいんだろう」という試行錯誤、プログラムを書いて動かしてみてああでもないこうでもないとこねくり回す経験が、能動的にプログラムを組み立てる能力をもっとも確かに育ててくれます。他にあんまり方法がない、とも言えます。
ですので、子どものプログラミングへの理解の段階によって、それぞれのやり方を選ぶのがいいでしょう。
子どもがまだプログラミングの基礎の考え方やコンピューターの動きについての理解が薄いというときに、ドリルなどで理解の補助線を弾いてあげるのはとても有効だと思います。そこを理解せずにいきなりプログラムを扱い出したら、説明すればすぐにわかったことを「発見」するのにしなくていい苦労をする、なんてこともあるかもしれません。
子どもがある程度”コンピューターの気持ち”がわかるようになったら、いつまでも紙の問題を解かずに、実際にプログラムを組み立てコンピューターを動かして悪戦苦闘するのがいいです。
自分の頭で能動的に考え、課題を解決し、何かを作り上げることは、他にはない充実した学びになります。そしてなによりその子にとって、とても楽しい体験になるはずです。