親子で一緒にプラグラミングを楽しむ@お家編

この記事は、[Classi Advent Calendar 2018](https://qiita.com/advent-calendar/2018/classi) の14日目の記事です。

こんにちは、Classiの@yuu_kimyです。
普段は、データ基盤の構築やKPIモニタリング用のダッシュボード作成に関わっています。

実は、私には、子どもが3人いまして、子どもの教育に少なからず興味を持っています。
最近は、流行りの「プログラミング教育」が物凄く気になっています。

既に、文部科学省からは、2020年度からの小学校でのプログラミング教育の必修化を見据えて、以下の手引が公開されています。
[【小学校プログラミング教育の手引】](http://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1403162.htm)

興味のある方は、リンク先から詳細を確認頂けたらと思いますが、個人的には、この手引(第二版)に書かれている*「プログラミングの楽しさや面白さ、達成感などを味わえる題材などでプログラミングを体験する」*という点は、とても気になっています。

『どういう風に接していったら、プログラミングが楽しいって思えるかなー:thinking:？！』

そんなことを考えていた時に、思い浮かんだのが「コンピュータサイエンス教育週間」でした。
ちょうど、毎年12月は、世界的に、プログラミング教育が盛んになる時期です。
この時期に「Hour of Code」という取組みを推進しているのが、米国のNPOの[Code.org](https://code.org/)です。
名前の通り、「1時間だけのコーディング」(意訳:1時間だけでもプログラミングに触れよう)というのがコンセプトです。

折角の機会なので、Hour of Codeで、子どもたちとプログラミングを楽しんでみることにしました。
以下は、実際に楽しむまでの流れです。

# 教材を選ぶ
Hour of Codeには、沢山のプログラミングの教材が提供されています。
 [【Hour of Codeはこちら】](https://hourofcode.com/jp/learn)
![](http://capture.heartrails.com/200x200/cool/shorten?https://code.org/hourofcode/overview)
幼児から小学生までを対象とした色々な教材があるのですが、今回は、以下を ~~実際に遊んで~~ 試してみました。
①[Dance Party](https://hourofcode.com/danceparty)
②[マインクラフト（Minecraft） の Hour of Code](https://hourofcode.com/mchoc)

この2つを試そうと思ったのは楽しそう〜♪と思ったから。
親が楽しいと思えるものを選ばないと、何も知らない子どもに教えるのは、やはり大変ですし、長続きしません。。

他の観点としては、 

- キャラクターの動きとプログラミングが対応付いていて、ビジュアルで分かりやすそう
- パズル的な要素もあるため、プログラムを組むという行為を体験できそう
という点を重視してみました。(注:あくまで、個人的な主観です。)

# 評価する
実際に、2つの教材を~~遊んで~~評価してみました。(実際にはもっと遊んでいます。)

## ①Dance Party

名前にあるように、プログラムを組んで、色んなキャラクターを踊らせてみようというものです。
特徴は、幾つかのパーツをレゴブロックのように組み上げることで、プログラミングができること、作ったら、すぐに実行ができて、キャラクターの動きを確認できることが挙げられます。
あと、有名なアーティストの音楽があらかじめ組み込まれているので、音楽好きのお父さん・お母さんにオススメです。
<img src="https://qiita-image-store.s3.amazonaws.com/0/67571/3409a8c9-749e-3511-80fd-7dda14d84453.png" width=80%>

## ②マインクラフト（Minecraft） の Hour of Code

こちらは、あの有名なマインクラフトをプログラミングで遊んでみようというものです。
Dance Partyと同様、プログラムをブロックとして組んで、キャラクターを動かせるのですが、よりパズル要素が強くなっています。
パズルを解くのが好きな方は、こちらのほうが楽しいかもしれません。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">Minecraftも楽しい〜♪ パズル好きな子供には、RPGを一緒に楽しむ感じでトライしてみるのも良いかもなー★ <a href="https://t.co/vU5ofF4uKc">pic.twitter.com/vU5ofF4uKc</a></p>&mdash; Yuu.Kimy (@yuu_kimy) <a href="https://twitter.com/yuu_kimy/status/1069975263973335041?ref_src=twsrc%5Etfw">2018年12月4日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

この2つの教材の年齢対象は「小学2年生〜」ですので、子どもの年齢等に合わせて、無理のないものを選びたいですね。

ちなみにですが、我が家の子ども達は、6才と4才(と1才)です。
**対象年齢と違うやんけー！！**と突っ込まれそうですが、、
「親も楽しい」と思えるものを選択することが重要です！！←言い切りました！

今回は、キャラクターを踊らせる教材のほうが無理なくできそうだな、という思いの元、Dance Partyを選択してみました。
(個人的には、マインクラフトで遊びたかったのですが、そこは我慢しました。)

# 子どもと一緒に遊ぶ

ある日曜の午後、おもむろに、上と真ん中の子どもを呼びます。

『はーい、今日は、これでも遊んでみようー』

気をつけた点は以下の通りです。

- そもそも、「プログラミング」や「プログラム」という言葉を使わない
- 可能な限り、難しい言葉(変数・繰り返し文など)を使わない
- 時間を決めて、最長でも2時間程度で終わらせる

難しいことを言って、興味を失くすことのほうが本末転倒ですので、その点は本当に気をつけました。

なので、プラグラミングとは言わずに、*「ブロックを作ってみよう」*と言い換えたり、
変数とは言わずに、*「このキャラクターに名前を付けよう」*と言い換えるようにしました。
今回、選んだDance Partyは、幾つかのパーツに分かれたブロックを使いますし、
キャラクターも複数登場するので、説明しやすい教材です。

最初は、丁寧に、キャラクターやブロックのことを説明した後に、実際にブロックを組み合わせてから、動かしてみます。
キャラクターが動くので、子どもたちは大喜びでした！
<img src="https://qiita-image-store.s3.amazonaws.com/0/67571/661be317-b9a9-b9d5-b12e-2b1ea5a6fa54.jpeg" width=80%>

キャラクターを動かすところから始まり、次第に複雑な動きが増えていきます。

- キャラクターの数を増やす
- キャラクターの大きさや色を変える
- 背景の色を変える

と徐々に難しくなってきます。

音楽の2小節後に●●●をするとか、いわゆる制御文の考え方も入っており、よくできた内容です。
<img src="https://qiita-image-store.s3.amazonaws.com/0/67571/89c252a2-6a40-350d-9e70-9e2e9b70fcf4.jpeg" width=80%>

形式としては、1問ずつ指定された動きが実行できるブロックを組めたら、その問題はクリアになり、
次の問題へ移るのですが、キャラクターの数が増やせる問題や大きさ・色を変えることができる問題は、
何回かやってみて、ブロックとキャラクターの対応づけを意識させるようにしてみました。

そうこう遊んでいるうちに、あっという間に2時間程度経ちました。
ゆっくり進めていっても、2時間ぐらいで、10問以上はできるかと思います。

# 子どもに感想を聞く
終わった後に感想を聞いたところ、こんな返事が返ってきました。
真ん中の子(4才)は、「ネコちゃんやカエルさんが踊っていたねー」と喜んでいたり、
上の子(6才)は、「ロボットが大きくなったり、ネコ・カエル・牛さんが踊っていたねー」と、これまた喜んでいました。

初の試みでしたが、楽しんでくれたので、親としてもトライした甲斐がありました。
飲み込みが早い子でしたら、キャラクターは、どれくらいの数置けるかなー？だとか、
少し発展的なお話をしてみて、想像させるのも良いかと思います。

# 次に向けて
最初の取っ掛かりとしては良い教材だな、と思いました。
あと何回かやってみて、慣れてきたら、キャラクターにやらせたいことを子どもに考えさせて、
それをどうブロックで組むかを一緒に挑戦してみても良いかもなーと考えています。

# 追記
今回、遊んだ教材は、ビジュアルプログラミングだったわけですが、ベースは何でしょうか？
Googleがオープンソースとして公開しているJavaScriptの**「Blockly」**というライブラリが実は使われています。
[【Blocklyの公式サイトはこちら】](https://developers.google.com/blockly/)

主要なブラウザに対応しており、ブラウザがあれば、ビジュアルプログラミングが楽しめる優れ物です。
WEBに組み込んで、プログラミング教材として公開することも可能ですので、いずれ試してみたいと思っています。

ちなみにですが、Googleが公開しているデモサイトで、Blocklyを使って、簡単なプログラムを組むこともできます。
お試しで、簡単なプログラムを組んでみたので、よろしければ、弄って頂けたらm(_ _)m
[【Blocklyを使って素数判定を作ってみた！】](https://blockly-demo.appspot.com/static/demos/code/index.html#awj45c)
<img src="https://qiita-image-store.s3.amazonaws.com/0/67571/257989ec-9076-8dfb-6f3e-fc9904344119.png" width=70%>