こどもたちにプログラミングを教えて感じたこと

7月から3回、こども向けのプログラミング体験講座を実施しました。毎回3~4組ほどの親子のみなさんにご参加いただき、盛況のうちに講座を終えることができました。

私自身、プログラミングを教えるのは3年ほど経験していますが、こどもを相手にするのは初めて。しかも、普段こどもと接することがないので、はてそんな自分に小学校3~4年生あたりの相手ができるのだろうか?という不安もあったのですが、終わってみればなんとかなるもの。もちろん、教材会社の提供する教材を使用したということもありますが、いずれにせよ無事終えることができたのであります。

ただ、終えたといっても、それはあくまで夏休みの体験講座に限ったこと。今後は、有料講座の開講もありますし、中野区内で行われるイベントへの出展も検討しています。今後も、こどもたちにプログラミングを教える取り組みは続きます。

こどもたちにプログラミングを教えるということ

今回使用したのは、教材会社から提供を受けたロボットプログラミング。レゴのようなブロックでロボット(体験講座では自動車)の形を作り、組み込んだモーターに指示を与える基盤に対してプログラミングを行います。基盤はArduinoベースで、プログラム言語としてScratchを使用します。ScratchはPC上でマウスのドラッグ・アンド・ドロップをすることでプログラムを組み立てていくというわけです。(ロボットプログラミングのほかに、Scratchでゲームを作るという講座も行いました。)

全2時間の講座では、最初の30分ほどで自動車の形を作り、休憩を含んで1時間ほどでプログラミング、あとはミッションへの挑戦という流れで進みます。自動車の形はブロックで作りますが、まずこの辺でこどもによって進度の差が出てきます。配付資料に組み立て方が載っているので、そのとおりにブロックをつなげていけば良いのですが、ブロックの種類によって形が異なり、凸凹の様子も面によって差があるので、空間認識力のようなものが必要になるのではないかと思います。

次にプログラミングに進みますが、ちょっとやってモーターが動いたといえば大騒ぎ!この小さな喜びが重要です。ミッションに入る前に行うプログラミングは簡単なものなので、ほとんどのこどもがサクサク進めていきます。単純すぎて暇そうな顔をするこどもも中にはいます。

ふたたび目が輝き始めるのは、ミッションが始まってから。作った自動車をミッションに沿った動きをさせてゴールさせれば良いのですが、その動きは当然プログラミングによって作ります。いきなり考え始めるこどももいますが、ここは試行錯誤が大切。まず簡単な動きで良いので、ミッションのコースを走らせてみることを勧めます。望むべき動きはミッションとして与えられている。そこに現状の動きが分かれば、あとはその差をどうやって埋めていくかという作業に入ることができるのです。

私たちのようなプログラミングを仕事にしている人間でも、ゴールの姿が思い描かれていないプロダクトは作ることができませんし、常に現状でどこまでできているのかを確認することは必要です。体験講座で行うのは些細なプログラミングですが、体験できることは私たちと同じというわけです。

こどもがプログラミングを学ぶ意味は何か?

ただ、私たちプログラマと同じ経験をすることが講座の目的かというと、そういうわけではありません。この講座はキッザニアのプログラマ体験じゃないし(だったら仕様打ち合わせとか徹夜も体験しないとね!笑)。

こどもにプログラミングを教える取り組みは、いま盛んに行われ始めていますし、安倍政権は小学校でのプログラミング必修化も検討しています。その意義は何なのでしょうか。私がこの3回ほど教えてみて、感じたことには、こんなことがありました。

失敗と達成感

こどもたちはブロックを組み立てたりミッションにチャレンジする中で、小さな失敗と成功を繰り返します。そして、ミッションをクリアしたときに大きな達成感を味わいます。わずか2時間の講座ではありますが、失敗してもくじけず、チャレンジを続けてものごとを達成するという体験は有意義なものだと思います。

試行錯誤

失敗とチャレンジの繰り返し、つまり試行錯誤は、特に理系の頭をつくる上で重要なことです。中には闇雲にミッションのコースで試走させるこどもがいたのですが、その父親が言ったのは「おまえ、ちゃんと考えてやっているか?」ということでした。
そうなのです。何度もトライするのは良いけど、闇雲ではダメ。ちゃんと考えて、こういうプログラミングをすれば、こう動くだろうという予想をして、プログラミングし、試してみるという、正しい試行錯誤が重要なのです。これって、ものごとを理系に考えるということだと思うのです。

楽しく学ぶ

こうした達成感や試行錯誤といった意義に言及すると、それはプログラミングでなくても良いのではないか、数学の問題を解く過程でも同じことだし、理科の実験や研究でもできること。そういう意見が出てくるのは当然でしょう。たしかに、こうした体験はプログラミングでないとできないものではありません。
ただ、ロボットやプログラミングという方法で体験することが楽しいと感じるこどもたちはいて、ひょっとするとそれは多くの割合を占めるのではないかという風に思うのです。

IT的な意義はあるか

ただ、やっぱり、こどものうちにプログラミングを学ぶ必要があるのか?というテーマに対する回答にはなっていないと思います。

いまのこどもたちにITに対する免疫などは必要ありません。普段からスマホをいじっているわけですから。ただ、逆にキーボードとマウスに慣れさせることは必要かもしれません。プログラミングをiPadで教える試みもあり、それも面白いことだと思いますが、せっかくキーボードとマウスに触れる機会でもあるので、たまには画面タッチとは違う世界も良いものでしょう。

ロジックと要素技術

プログラミングは突き詰めて言えば、ロジックを組み立てる力と、プログラム言語やインターネットといったコンピュータの要素技術の知識に大別できます。
今回のような2時間の体験では、どちらも体験レベルを抜け出すことはできません。では、1年、2年と長く続けたらどうか。

ロジックを組み立てる力は付くと思います。論理的に考える力、まさに理系の力です。もちろん、文系でも法律の解釈などは論理的に考える力が非常に重要になります。

では、コンピュータの要素技術の知識はどうか。これは講座の姿勢によります。カリキュラム次第です。ScratchやMinecraftは要素技術を隠蔽する方向にあると思います。ScratchやMinecraftで学ぶことによって、これまでに述べたような力は身につきますが、ScratchやMinecraft自体の知識は実社会では役立つものではありません。
一方、IchigoJamはハードウェアの知識も身につきますし、プログラム言語はBASICなど実社会で使われているもの(使われているものに非常に近いもの)です。つまり、ロジックを組み立てる力もつくし、コンピュータの要素技術の知識もつく。一挙両得です。

ただ、誰にでもその一挙両得が必要なのかは別の議論です。二兎を追う者は一兎をも得ずという言葉もあります。要素技術の理解に苦労して諦めたあげく、ロジックを組み立てる力も身につかないという可能性も否定できません。

教える方も試行錯誤

プログラミングを教えることによるこどもたちのメリットは間違いなくあります。ただ、きちんと目的を設定しておかないと、ただブームに乗っただけということにもなってしまいます。

プログラミングを教えることで、こどもたちに何を学んで欲しいのか、最終的にどう育って欲しいのかを定義した上で、それに沿ったカリキュラムを作り、進めていかなければなりません。私たち自身にも試行錯誤が必要ということでしょう。

長々と書いた割りに当然すぎる結論となってしまい恐縮ですが、それが3回の講座をやってみた、いまの実感でもあります。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。