見出し画像

幼稚園児にプログラミングを教えてみた。

2020年から小学校でプログラミング教育必修化と言われ、各方面でプログラミング教室や関連ビジネスが盛んです。

そんな中、プログラミングって学校で教わるものなのか?と偉そうに思っている独学派の いなつち☆稲田智 です。

私は一応SEなのでプログラミングができます。幼稚園(年中)の息子にプログラミングを教えたらどうなるのか?が気になり、最近のプログラミング関連玩具や、アプリを使って試してみました。

1. 小学校でのプログラミング教育の目的

小学校でのプログラミング教育の目的は、プログラミング言語を覚えることではなく、「プログラミング的思考」を育成することだそうです。

プログラミング的思考」とは、物事は手順を踏んでやっていくとうまく解決できるという「論理的に考えていく力」を指すようです。

日本人は論理的に物事を考えるのが苦手な気がするので、論理的思考を子供の頃から身につけるのはとてもいいことだと思います。

2. ドラえもんひらめきパッド(手続き型プログラミング)



ドラえもんひらめきパッドは、代表的なプログラミング教育玩具です。こんな外見でタッチパネル式です↓

画像1

ドラえもんが、どら焼きにたどり着けるようにコマンドを設定していきます。靴コマンドが「1マス進む」、左右回転矢印コマンドがそれぞれ「左を向く」「右を向く」です↓(下写真の赤枠

画像2

最初ドラえもんは右を向いてますが、この場合、岩が邪魔なので、最初に右(下方向)を向き、2マス進んで左を向き、3マス進むとどら焼きにたどり着きます。なので、コマンドは「右を向く」「1マス進む」「1マス進む」「左を向く」「1マス進む」「1マス進む」「1マス進む」と設定し、右上の再生ボタンを押すと無事たどり着きます。(下写真の赤枠の様にコマンド順を設定して実行します↓)

画像3

これは簡単なレベルなので、うちの息子はすぐにクリアしてしまいました。

最難関レベルになると、以下のようになります。コマンドが増え、ネズミをバズーカコマンドで「跳ね飛ばす」、穴をタケコプターコマンドで「飛び超える(2マス移動)」が追加されます↓

画像4

まともにコマンドを配置するとかなり長い手順です(上写真のように9つのコマンド)。

これでも一応正解なんですが、「ループ(繰り返し)」の概念があって、ループを使っていかにこのコマンドの手続きを短手番にするかが問われます。下の写真がループを使った最適解です。

画像5

ドラえもんが「左を向いて、バズーカでネズミを跳ね飛ばす」というセットを3回ループし、左を向いてのび太くんを見たら「タケコプターで穴を飛び越える」を2回ループしてゴールです。コマンド上の数字がループ回数です。ループを使うことで、コマンドは4つで済みます。

この1番短手番な手順を見つけるのが醍醐味です。実際のプログラミングでも、いかに短く効率良いコードを書くかが問われるので、概念的に正しいと思います。

ゴールまでの手順をコマンド順に実行していくタイプのものは、手続き型(命令型)プログラミングという分類になると思います。このタイプのものが子供向けプログラミング教材では多いですね。

ただ、この最難関レベルも、少し教えたら幼稚園の息子は理解してクリアしてしまい、結果ドラえもんひらめきパッドはすぐに飽きてしまいました。

3. Springin'(ビジュアルプログラミング)

Springin'(スプリンギン)というiOS用アプリです。

いわゆるビジュアルプログラミングという分類に属すると思います。コードは書かず、絵を描いて動作を定義するだけでゲームが作れます。

今回は幼稚園の息子が作ったゲームを見てみます。「くろいとり」というゲーム名だそうです。下の写真の黒い物体が鳥で、放っておくと重力で下に落ちてしまうので、下の方にある黒丸ボタン(ジャンプ)や矢印キー(左右移動)で「くろいとり」を操作しゴールへ導きます。鳥、すごい怒ってますね(笑)

画像6

「くろいとり」が、青十字マークに触れると次のステージに行け、ステージクリアしていくと最後ゴールという流れです。(次ステージ以降は割愛します)

上に並んでいる「くろいとり」や四角パーツが最初に作っておくオブジェクトです。あらかじめ、必要なオブジェクトを作っておきます。基本手書きです。これらのオブジェクトを画面に配置していきます。

そして、動作を定義するために、下のように「くろいとり」と「黒丸ボタン」を紐づけます。そして右のジャンプしている人のマークを押します。このマークはジャンプの動作を与えるという意味です↓

画像7

この設定で、「黒丸ボタン」を押すと「くろいとり」が「ジャンプする」という動作が定義できます。他のオブジェクトも同様に設定していくことでゲームが完成します。

ドラえもんひらめきパッドのように、順序を設定していくというよりは、オブジェクト同士がぶつかったら次に何のアクションを起こすかみたいな定義をオブジェクト単位にひたすらしていくイメージです。とても自由度が高いです。

また、このアプリで作ったゲームは、コインという仮想のお金で、他の人と売買ができます。1ゲーム100コインとなっていて他の人の面白そうなゲームがあったら100コインでダウンロードして遊んだり、設定を参考にしたりできるのです。

息子が作ったゲームもいくつか売れていて、売れると売主には100コイン中の10コイン分が収入として入ってきます。↓

画像8

プログラミングでゲームを作れるだけではなく、それを売買できるようにしたのがこのアプリの凄さです。

息子は最初だけ苦戦しましたが、ダウンロードした他の子の設定を真似しながら、どんどん面白いのを作れるようになっていきました。

自作ゲームを売りに出す前には、「バグないか確かめて」とシステムテストをお願いされるようになりました(笑)。幼稚園児もさすがに「売る」となると品質を気にするようです。また、自分のゲームが何人に売れたかを勲章のように毎日楽しみにするようになりました。

なんかこれって、実社会でなされていることと全く同じだなと。変な習い事させるよりよっぽど彩りのある経験ができたと思います。

4. プログラミング教育の意義を考えてみる


・プログラミング教育のレベルについて

意外と幼稚園児ってレベルが高く、大人が思ってるより難しいものでも平気で乗り越えてくることがわかりました。教育側はもっとレベルを上げてもいいのかもしれません。

・手続き型プログラミングについて

ドラえもんひらめきパッドのような「手続き型プログラミング」は、手順を一つ一つ踏んでいくことで目的を達成するというロジックが理解できて良いと思います。

特に、「同じ処理は一度設定したものを繰り返した方が効率がよい(ループ処理)」ことを学べるのが重要だと思います。実社会において、このループ部分が機械化対象となりうるからです。

日本では、つまらないルーチンワークでも、手作業で我慢してやることが称賛される文化がある気がします。

たとえば、小学校の「シャーペン禁止」はこれだと思います。えんぴつで芯が減ったら毎回鉛筆削りで削るのが「正義」で、芯出しルーチンを機械化したシャープペンシルは「」、みたいな文脈。学校は筆圧が鍛えられないとか意味不明な言い訳をしますが、背景にあるのは「楽をするのはけしからん」だと思います。

しかし、プログラミング教育を受けた子供たちが大人になったとき、ルーチンワークをやるバカらしさに共通認識が芽生え、「ルーチンワークはループ処理で自動化するのが正義」となれば社会は変わります。無駄な作業は我慢をせずに機械に任せ、もっと人間にしかできない活動に重心を移せるでしょう。

・ビジュアルプログラミングについて

スプリンギンのような「ビジュアルプログラミング」は実社会でも今後、主流になっていくと思います。コードを書くことを頑張る必要がなくなり、もっとデザインやアートのような人間にしかできないクリエイティブなことだけに集中できる時代が来ると思います。

その世界では、コードが書けることよりも、「いかにITを使って色とりどりのコンテンツを創造できるか」が重要で、今のうちからビジュアルプログラミングを学ぶのは創造性を養う意味で、大変意義深いことだと思います。

プログラミング教育を受けた世代が大人になったとき、そこがより人間らしくクリエイティブな社会になっていることを期待します。

おわり。

※面白いと感じていただけたらハートマーク「スキ」を押してもらえると励みになります!

この記事が参加している募集

自ら体験したことをベースに、世の中の思考をアップデートしたいという志で活動してます。ハートマーク「スキ」を押してもらえたり、SNSでシェアしてもらえると励みになります!