子どもが「やって」と言った日:6歳に当たり判定は早かった
「お父さん、できないから、やって」
6歳の息子と一緒にScratch(スクラッチ:ブロックを組み合わせてゲームを作る、子ども向けの無料プログラミング)で爆弾よけゲームの続きを作っていたとき、ふいに言われたひと言です。
これまで「一緒に学ぶ仲間」のつもりで、隣に座って一緒にブロックを並べてきました。でも、この日はうまくいきませんでした。挑戦したのは「当たり判定」——爆弾にぶつかったらゲームオーバーにする仕組みです。
結局、コードは私が書きました。完成したゲームで息子は大喜びで遊びました。そのうしろ姿を見ながら、「一緒に作る」だけが学び方ではないんだと、肩の力が抜けたのを覚えています。
教え方の5原則をまとめた前回のコラム 子どもにプログラミングを教えるコツ:エンジニア親の5つの学び の「その後」、もう一段むずかしい挑戦で見えてきたことの記録です。
1. 6歳が挑んだ「当たり判定」のむずかしさ
前回までで、息子はオリジナルの「爆弾よけゲーム」を作りました(Scratchで自分だけのゲームを作る:6歳が「作りたい」を形にした日)。リンゴのスプライト(キャラクターの絵)を爆弾に作り変えて、それが落ちてきて、左右に動くキャラクターで避ける、というシンプルな構成です。
そのときは「ループ(ずっと繰り返す)」で爆弾を動かしただけでした。ぶつかったら何かが起きる、までは作っていません。
今回はその続きとして、3つのしくみに挑戦することにしました。
- 当たり判定:キャラクターどうしがぶつかったかを判断する仕組み
- 定期的な爆弾の落下:一定の間隔で爆弾を上から落とす
- 座標:画面のどこにいるかを数字で表す決まり(XとYで位置を指定する)
私の中では「爆弾よけが完成する次の自然なステップ」のつもりでした。でも、いざ始めてみると、6歳の息子にはどれもむずかしすぎたのです。
どこでつまずいたか
- 当たり判定は「もし爆弾にぶつかったら、ゲームオーバー」のように、条件(もし〜なら)と動作(〜する)を組み合わせる必要があります。ブロックの組み立てが2段、3段と入れ子になり、見た目で何をしているかわかりにくくなります
- 定期落下は「何秒ごとに、爆弾を何個か、上から落とす」と、3つの抽象的な要素が同時に出てきます
- 座標は「Y座標がマイナス180になったら下に消えた、ということ」のような説明が必要で、目に見えないルールを頭の中で想像する必要があります
ループや「もし〜なら」は前回までで触れていますが、それを重ねて使うとなると、急に難易度が跳ね上がります。
プログラミングの世界では「制御構文」と呼ばれる部分。私たち大人にとってはあたり前の組み合わせでも、子どもにとっては未知の積み上げになる、と痛感しました。
息子は最初のうちは「これかな?」と色違いのブロックを試していました。でも、思ったように動かない時間が続くと、だんだん表情が固くなっていきました。
2. 「お父さんやって」と言われた瞬間
しばらく一緒にあれこれ試して、何度か動かしてもうまくいかなかったあと、息子はぽつりと言いました。
「できないから、やっておいて」
正直、はじめは少し戸惑いました。前回までの記事では「一緒に作るのがうまくいった」とまとめたばかりだったからです(子どもにプログラミングを教えるコツ:エンジニア親の5つの学び)。
それでも、目の前の息子は明らかに興味をそがれかけていました。ここで「もうちょっとがんばろう」と粘ると、たぶんプログラミングそのものを嫌いになってしまう。そう思って、「わかった、お父さんがやってみるね」と引き受けました。
子どもがやらないと意味がないのでは——という気持ちは、もちろん私の中にもありました。でも、「一緒に学ぶ」が「一緒に苦しむ」になりかけていると感じたのは確かです。
3. 親が作って、子どもが遊んだら大喜びだった
私はそのまま、息子の横で当たり判定と定期落下のコードを書きました。SE(システムエンジニア)の本業のスキルが、ここでようやく素直に役に立った瞬間でした。
完成したゲームを「できたよ、遊んでみて」と渡したときの、息子の反応がとても印象的でした。
- パッと顔が明るくなって、すぐにキーを握る
- 爆弾が落ちてくるたびに「うわっ」「危なっ」と声をあげる
- 何度もリトライして、点数のように「何回避けられたか」を数え始める
そして、ひと段落したあと、こう言いました。
「これ、ぼくが考えたやつだよね?」
ここでハッとしました。コードを書いたのは私でも、ゲームの設計は息子だったんです。「爆弾が落ちてきて、避けて、ぶつかったら終わり」というアイデアは、すべて息子が紙に描いた設計図がもとになっていました(参考:Scratchで自分だけのゲームを作る:6歳が「作りたい」を形にした日)。
息子は、自分のイメージが目の前で動く姿に喜んでいたのです。コードを書くプロセス全部に参加していなくても、「自分のアイデアが形になった」体験は、ちゃんと残りました。
4. 「まねする」と「一緒に作る」は同じじゃなかった
この日いちばん大きかった気づきは、これでした。
これまで息子と私は、Scratchの作品ページから他の人のゲームを開いて、その中のコードを見ながらまねして組み立てることを何度もやってきました(Scratch作品のまねして作り方:初めてコードを書いた日の記録)。まねは順調で、楽しそうにやっていました。
だから私は、まねの延長線で「一緒にゼロから作る」ができると思っていました。でも、実際にはこの2つは、子どもにとってまったく別の体験だったようです。
- まねする:すでに動いているコードがある。ゴールが見えている。色と形を頼りに、同じものを並べればいい
- 一緒に作る:ゴールが見えない。次に何を置けばいいかは、自分で考える必要がある。失敗しても何が悪いかわかりにくい
「まねできた」=「一緒に作れる」ではなかったのです。ゴールが見える/見えない、この違いは、6歳にとっては想像以上に大きい壁でした。
そして、もうひとつ気づいたこと。それは「親が作って、子どもが遊ぶ」も、立派な学びの形だということです。
- 自分のアイデアがちゃんと形になることを知る経験
- 「これをやりたい」と言えば、誰かが助けてくれる、と知る経験
- ものづくりがおもしろい・気持ちいいと感じる経験
特に最後の「おもしろい」を感じてもらえないと、そもそも続きません。難しすぎる挑戦で「プログラミングはつまらない」となってしまうより、まずはできあがった作品で十分に遊ばせるほうが、長い目で見ればプラスだと思いました。
エンジニアの世界でも、新人がいきなりゼロからアプリを書くことはなく、先輩のコードを動かしてみたり、機能の一部だけ手を入れたりして、徐々に「自分で書ける」に近づいていきます。子どもの学びも、同じなのかもしれません。
次に息子が「これ作ってみたい」と言ったときは、また紙に描いてもらって、私が形にしてみるところから始めようと思います。そこから「ここだけ自分でやってみる?」と少しずつ手渡していけば、いつか自然に自分でぜんぶ作りたくなる日が来るはずです。
まとめ
6歳の息子と当たり判定に挑戦して、「一緒に作る」をやめた一日からの気づきです。
- 「もし〜ならが入れ子になる」とむずかしさは急に跳ね上がる。当たり判定・定期落下・座標は、6歳には一気には重すぎた
- 「お父さんやって」は逃げではなく、子どもなりの正直なサイン。粘りすぎる前に切り替えていい
- 親が作って子どもが遊ぶのも、ものづくりの学び方のひとつ。「自分のイメージが形になる」喜びは、コードを書いた人だけのものではない
- 「まねできた」と「一緒に作れる」は別物。ゴールが見える/見えないで、子どもの体験はまったく変わる
- 続けるためには、「おもしろい」と感じる時間を切らさないことが何より大事
「一緒に学ぶ仲間」のスタンスは変わりません。ただ、その「一緒に」の形は、いつも横並びとは限らないんだと知った一日でした。同じように悩んでいる方の、ヒントになればうれしいです。
関連記事・次のステップ
- 子どもにプログラミングを教えるコツ:エンジニア親の5つの学び(この記事のひとつ前のコラム。「教える」より「一緒に作る」を中心にまとめた5原則)
- Scratchで自分だけのゲームを作る:6歳が「作りたい」を形にした日(今回の体験のもとになった、爆弾よけゲームの原作回)
- Scratch作品のまねして作り方:初めてコードを書いた日の記録(記事内で触れた「まね」がうまくいった日の記録)
- Scratchを子どもと2日間やってみた:SEエンジニア親の気づき(最初の2日間の出発点)
- 子どもが「飽きた」のではなかった|続ける声かけの話(「やって」のその先:続けるための親の声かけ)