「お父さん、できないから、やって」

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歳には一気には重すぎた
  • 「お父さんやって」は逃げではなく、子どもなりの正直なサイン。粘りすぎる前に切り替えていい
  • 親が作って子どもが遊ぶのも、ものづくりの学び方のひとつ。「自分のイメージが形になる」喜びは、コードを書いた人だけのものではない
  • 「まねできた」と「一緒に作れる」は別物。ゴールが見える/見えないで、子どもの体験はまったく変わる
  • 続けるためには、「おもしろい」と感じる時間を切らさないことが何より大事

「一緒に学ぶ仲間」のスタンスは変わりません。ただ、その「一緒に」の形は、いつも横並びとは限らないんだと知った一日でした。同じように悩んでいる方の、ヒントになればうれしいです。


関連記事・次のステップ