小学校で始まった「プログラミング教育」を改めて考える

## この記事について

自分の子供にプログラミング教育をさせるために色々と調べて実践した記録です。

### 家族情報

ぼく：3x歳。妻子持ち。
娘氏：現在小学２年生。


## 前置き：プログラミング教育とは

まず、前提として小学校で始めるプログラミング教育とは、「プログラマーを育てる」わけでは**ない**ということに留意します。

あくまでも、問題を解決する上で大切である「基礎的な考える力」を養うことが目的です。
``Hello World``を表示したり、電子回路でLチカすることはゴールでもなければ通過点ですらありません。

> 問題の定義やゴールを理解し、そこに対してどのような理論で展開すれば辿り着けるのかを考える力をつける

ことが目的ですので、ざっくりというと「論理的思考」を育てることになります。

論理的に考えさせればいいので、プログラミング教育はデジタルを使う必要はなく、
なんならトランプみたいなカードを使っても教育はできます。


間違っても、学校に「ウチの子は何のプログラミング言語をするんですか？」なんて聞かないでくださいね。
先生たちも困ってしまうので。

### STEM/STEAM教育とプログラミング教育の違い

ロボットを使ったりするような教育は、プログラミング教育ではなく``STEM``もしくは``STEAM``教育と呼びます。

STEAMは次の単語群の頭文字から命名されており、STEMというとArt（芸術）が除外されます。

S：Science（科学）
T：Technology（技術）
E：Engineering（工学）
A：Art（芸術）
M：Mathematics（数学）

海外では主にこのSTEAM教育が盛んであり、工業高校や工業高専でやるような内容を中学時点で実施するような学校もあるようです。

ちなみに、日本の多くの学校は未だにICT教育で止まっており、タブレットを使った授業をするのが手一杯という現実があります。
GIGAスクール構想も浸透しつつありますので、この先に期待と言ったところでしょう。


## 良かったと思えるモノなどを紹介

### まずはマイクラから

マイクラ（Minecraft）は、あまりプログラミング教育と関係ない気もします。

ガチでプログラミングをしようとすると、Java版が必要だったり、Forgeが必要だったりと面倒です。
それらの機能がないPE（統合版）でもプログラミング教育の基礎的な部分は学べます。

1. ゴール（作りたい建造物）を決める
1. 材料を選ぶ
1. 作ってみる
1. 成果物を調整する

これらのことを繰り返すことで、プログラミング教育に関する基礎的な「道筋を立てる」という練習ができます。

また、途中の作り直しも簡単なので、集中力をつける入口としては十分機能するのではないでしょうか？

### Scratchでゲームを作る

ビジュアルプログラミングでゲームが作れるScratchは、子供向けのプログラミング学習環境としてかなり有名です。

Scratchを「ノーコード」と表記する人もいるようですが、扱いとしては「ビジュアルプログラミングツール」という分類に入ります。

NHKでも番組が作られているほどで、大勢の子供が自作でゲームを作っているみたいです。

正直、Scrachでゲームが作れればもはや言うことはなくて、
将来はITエンジニアとして余裕で大成できるんじゃないかと思います。

Scratchはゲームの作成部分を簡略化しているだけで、

- どんなゲームを作るのか（プロダクション）
- どうやったら作れるのか（プログラミング）
- どうやったら他の人が遊んでくれるのか（マーケティング）

といった、ゲーム開発に関する部分をあらかた経験できます。

## Switchに頼る

極めつけがこちら。

https://www.nintendo.co.jp/switch/awuxa/

中身はScratchと同じようなビジュアルプログラミングでゲーム開発を学習できるソフトなのですが、
内容が濃いのなんのって。

2Dだけではなく、3Dアクションやレースゲームも作れるようになっているので、Scratchよりも幅広いゲーム開発ができる。

そして何よりも強いのがチュートリアル。

クイズ形式でプログラミングの方法を順番通りに学習できるので、いい感じに学習が進んでいく模様。
これはやべーな。って後ろで見てて思った。

### micro:bitでIoT

ここまでくると、もはやプログラミング教育の枠を超えてSTEAMの領域に足を踏み入れます。

子供向けのIoT機器であるmicro:bitを使ってプログラミングをします。

Scrach同様にビジュアルプログラミングツールを用いて開発をするわけですが、
電子回路的な開発ができるのでまあまあ面白いです。

micro:bitをマイコンとして、キャタピラで動くロボットなんてのもあるので、これを使ってみたところ子供に大ウケ。
やはり、目の前で動くものはツヨい。

https://www.tamiya.com/japan/products/71201/index.html


## ダメだったもの（あまりハマらなかったもの）

### IchigoJam

このご時世、まず黒画面というだけでやる気をなくす。
あとHDMIもないしコンポジットしか対応してない。

IchigoJamのためだけに外部ディスプレイ買ったのはいい思い出。

BASICの学習ツールとしては優秀なので、ビジュアルプログラミングに慣れてしまった厨二にはピッタリかもしれない。

### Raspberry Pi

これはGPIOがついたただのパソコンである。
できることが多すぎて子供に使わせるにはハイスペックすぎる。

GPIOの活用も難しいし、HAT使うにしても中高生クラスが対象になるかな？
少なくとも小学生向けではないので除外した。

複数台使ってクラスタ組んだり、おうちサーバーの練習機になるべくして生まれた機材。それがラズパイ（偏見）



## 敵「子供にゲームを推奨したくない」

確かに、結果的に子供にゲームをやらせる（実際には作らせてる）わけですので、あまり良いイメージを持たない親御さまもいることでしょう。

プログラミング教育の目的から考えても、ゲームにこだわることはあまり良いこととはいえませんね。
とは言いつつ、やはり子供は（もちろん大人も）ゲーム大好きです。

#### 「勉学の本質は詰め込みではない」

忘れがちですが、どの教科もまずは興味を持つところからスタートするはずです。

得意な科目って、好きだから勉強が楽しくて自発的に勉強したから結果的に得意になりませんでしたか？
苦手な教科って、実は興味なかった。そんな記憶ありませんか？

実際、自分がなぜ歴史が苦手かというと、年号と出来事を暗記させられるだけのつまらない教科だったから。
歴史が得意な子に話を聞くと、
「歴史上の出来事をストーリーとして見るのが好き」という感じの答えが返ってきて、「なるほど」と思いました。

興味がないものを外部から無理やり勉強させようとしても覚えない。
これは子供でも大人でも同じ。なんなら大人の方が顕著。

これ以上言うと日本の教育自体に文句を垂れることになるので止めますが、
親の役目は「本人にどうやって興味を持ってもらうか」を考えることだと思っています。

興味を持つきっかけさえ提供してしまえば、あとは何とかなると信じています。

## さいごに

これから家庭でプログラミング教育をしようと思っている人も多いかと思います。

間違っても「どの言語やらせようかな？」なんて考えないでください。
変数宣言したり、if/for/whileとかの基本構文を覚えて満足したらなんの意味もありません。

手段を先に覚えると、その手段に固執し始めます。
（これは子供よりも大人の方にありがちなやつですけどね）

あくまでも、「何を作るのか」と「どう作るのか」を主軸に置いた思考を身につけることが先決です。


プログラミング”的”思考を養うことは、将来のDX人材を育てることになります。

色々と経験させることは悪いことではないので、子供を使ってたくさん実験すると良いと思います。
そのうち良い方法が見つかるかもしれませんね。