子供にプログラミングを教える方法

子供の為の最高のプログラミング教育を見つけていきます

ゲームの作り手から学ぶ、プログラミングの上達法

f:id:teramethod:20210729230232j:plain

たまには力を抜いて、ゲーム雑誌でも見てみようと思い、

週刊ファミ通 2021年8月5日増刊号 [雑誌] を久しぶりに読んでみました。

35周年&1700号突破!ということで、様々なゲームメーカーの社長や執行役員などに

インタビューする企画がありました。

もしかするとゲーム作りにあこがれる中高生には

良い刺激というか、本当のゲーム業界の雰囲気が味わえてよいのではないかと思われました。

(小学生にはちょっと難しいかな、、、というかほかのコーナーも結構難しいこと書いていますね、、、ファミ通すごい)

個人的に気になったのが

桜井政博のゲームについて思うこと」

というコーナーでした。

桜井氏は「カービィ」や「スマブラ」を手掛けたゲームデザイナーです。

ゲームの作り手として、色々な人から質問される

「どうやったらゲームを作れるようになりますか?」

について、語られています。

きっと、小学校でプログラミング教育を受けるみんなの中でも

先生に聞く人はいるでしょう。

桜井氏はこう答えます。

とにかく手を動かすしかない!!

ええ!!

そんな根性論的な。。。。

もっとなにか、最短ルート的な方法はないんですかっ!

そう思いたくなりました。

ただ、氏はこう続けます。

"作る"という中には、"考える"と"手を動かす"という要素があると思います。

「手を動かす」よりも「頭で考える」ことが良いと考える方もいると思いますが、

桜井氏は経験的に、まず始めてみて、手を動かして、何かをアウトプットする、という行動をすることで

ゲームを作ることができるようになったようです。

考えてみると、今の小学校のプログラミング教育では難しいやり方ですね、、、


小学校のプログラミング教育を以下とします。


授業で先生の話を最初にしっかり聞いて、
プログラミングの方法を教えてもらってから
自分で書いてみて
でもできないところは教えてもらい、
授業の終わりにはプログラミングを完成させる。



桜井氏的に進めると、以下になるのではないでしょうか。

教えてくれる人は近くにいないから何を作るか自分でかんがえ、
プログラミングの方法なんてよくわからないけど
自分で書いてみて
できないところは自分で何とか考え、
とりあえずできるところまでやるけど未完成のときもある。


後者のほうが、確実にプログラミングスキルは上がりますが
かかる時間、かけられる時間が個人個人で異なります。

また、学校としては、未完成の場合、どう評価していいかわからない(評価できない)ので
結果として学校教育は前者のスタイルにするしかないと思います。

本当にプログラミングを学びゲームを作ろうとすると、
後者が良いようです。

そして、やるなら家庭で(小学校で自由にpcが使えるところは少ないとおもうので)、自分の自由時間にやることで、自分の世界に没頭しながら、どんどんやりこんでいく、という方法になるのではないでしょうか。

では、早速全家庭が後者を実践できるか、というとそれも難しいと考えています。

子どもたちが、「自由にPCを使える環境」を作る、というのが意外と?難しい。

とりあえずプログラミングをする場合、自分の時間ができたときにすぐ着手できる必要があると思っています。

宿題が終わったとき、夕飯を食べ終えた時、寝る前、、、

学校や塾、習い事をやっている子どもたちは、

そのなかで「プログラミング」を勉強する時間を捻出するのは
大変だと思います。

そのためにも、「いつでも使えるPCを準備する」ことが重要だと考えています。

しかし、例えば我が家は子供に自由に使えるPCを与えることができずにいます。

理由は以下です。

・我が子がパソコンに不慣れであること(アプリの立ち上げもそうですし、youtubeで遊んでしまったり、ファイルを壊したりしないか心配)

・場所の制約(うちはリビングで勉強させているのですが、テーブルには普段は教科書や本があるのでPC置き場がない。片づけるのにひと手間かかる)

・時間の制約(学校や塾の宿題、習い事をやっているとなかなか時間がない)



なかなかプログラミングができる環境が整えられていません。。。

案外、子どものころは、「環境づくり」もプログラミングのできる、できない、にかかわっているのかもしれません。

ちょっと話が逸れますが、以前取り上げた投稿

最後のほうに取り上げた、プログラミングコンテストで総合優勝をとった宮城君のママの話も思い出しました。

プログラミングをやっているときは、はた目から見ると成果が見えずらいです。

親としても、長い目で見守る姿勢も必要ですね。

※今気づいたのですが、宮城君は2018年度は総合優勝で、翌年の2019年にも準優勝でした。。。すごいですね。

しかし、子どもにとっては(大人にとっても?)ゲーム作成が、

最もプログラミングを楽しむ方法の一つだと思います。

少しずつ環境を準備していきたいと思います。



「おとなの年収とビジネス書の読み方の違い」から子どもの読書を考える

f:id:teramethod:20210723110021j:plain


プレジデントの今月号 1日でぜんぶ学べる 成功者の教えベストセラー100冊 (プレジデント2021年 8/13号) [雑誌] を見ていたら、以下のコーナーがありました

「高年収 vs. 低年収」まるで違う読み方

高年収ほどビジネス書や経営に関する本を多く読んで、漫画は少なく、
年収が下がるほど逆の割合になっていき、読書自体の冊数も高年収ほど多い。

というものがあり、まあ当然の結果ではありますね。


高年収の人は、自分の仕事に行き詰まりを感じ、

その答えや参考になる情報を本から得ようとするため、ビジネス書などを読む機会が多くなるのではないでしょうか。

また、本を通して、「現状をより良くしよう」とする心の持ち方が根底にあるかもしれません。

見習わないと、、、


我が子は小学生なのですが、

まだ小学生だと「本を通して現状を良くしていかないと!」というモチベーションは

起きずらいのではないかと思われました。


もし悩みがあるようであれば、同じような悩みを取り扱った本を紹介してあげるぐらいでしょうか。。。

なかなか難しいですよね。


もう1点、プレジデントでの調査で

「年収の高い人ほど付箋紙を張る深い理由」

というものが気になりました。

その理由として

「トップ5%社員は、ブログやツイッターを積極的に活用し、独語の感想などを発信します。不特定多数の人に公表することで、自分の考えに対する客観的なものの見方が返ってくるからです。そして、どんな表現の仕方が相手の感情を動かすかなど、そこから多くの学びを得ます。単に本を読んで満足するのではなく、得たことの情報発信で自己研鑽につなげているわけです」

が挙げられていました。

子どもの読書は基本的に読みっぱなし、アウトプットする機会がありません。

なので子ども自身も本の記憶が定着しずらい。

「ブログで感想書いてみたら」とも言いずらいですし、、、

そこで親ができることとすれば、

「どんなことが書いてあった?」

と問いかけることかな、と思いました。

子どもからはうっとおしいと思われていると思われてしまうと思うのですが、

これが家庭で無料でできる、最高の本の知識定着方法かな、と思います。

質問の仕方も、あまり範囲が広い質問だと、子どもは要約力がまだないので
答えもあいまいに、内容も薄くなってしまいます。
(そういう意味では、上記の問いかけは良くない例ですね、、、)

できれば特定の章や、登場人物・出来事を指定して質問すると
子どもも答えやすいです。

最近子供と読んだ本ではこちらがありました。

モモ (岩波少年文庫)


私が子供のころは見ていなかったのですが、我が子が見ていたので
慌てて私も読んでみました。

なかなか面白い、、、

時間の使い方、人の話を聴くことの大切さを取り扱った物語なんですね。。。もっと早く見ておけばよかった。。。

奥が深くて1回では理解できませんでした、、、

でも我が子に質問できて、色々考え方も話し合えてよかったです。

これって大人も勉強ですね。

プログラミングもアウトプットの1手段なので、

そちらについても引き続き考えていきたいと思います。



子どもの計算能力を伸ばすために

f:id:teramethod:20210625075136j:plain

我が子が計算ミスをしました。

それ自体は避けられない部分もあると思うのですが、

聞いていると

・計算が面倒で筆算を書かずに暗算で解こうとして間違った
・書いているうちにわからなくなった(字が汚くて数字を見間違えた 筆算の列を間違える)

ということで、やり方次第では改善できる部分もありそうです。


そもそも学校教育では、「単位」「分数」といった、科目なりジャンルごとに教えることがメインで

計算ミスを減らすための専門の授業はないと思います。


※一応「くふうして解いてみましょう」という問題で、

複雑な式を簡単にしてから解く、というものを教科書でみたことがあるのですが

ある章の一部の問題といった扱いでした。



計算問題を正しく解くには大きく分けて2つのアプローチがあると思います。
1.計算を楽に解くために工夫する
2.計算ミスをなくすために工夫する

どちらかというと1.のほうが子供にはうけそうなので、1.で我が子にアプローチしてみました。

計算力の基本という本の中に

「偶数×5の倍数」の計算

が載っていました。

簡単にお伝えすると、「偶数×5の倍数」であれば、偶数と5を掛けると必ず一の位が0になるので

計算が楽にできる、というものです。

例えば、、、

4×15 = ?

という問題の場合

(2×2)×15
=2×(2×15)
=2×30
=60

最後の2×30 は 実質、九九の「にさんがろく」がわかれば解けるので

簡単に計算できる、というものです。

我が子もこれを気に入ってくれたようで、このタイプの計算を何度かやってもらったときも、暗算で楽しく解いてくれました。

このまま次の手法にも着手します。



よく出てくる計算は覚えておこう

体積や金額計算でよく出てくる累乗の計算結果は、覚えておいて損はない、ということです。

コンピュータでも2の累乗として
2^8 = 256
2^10 = 1024
はよく出てくるものです。

さっそく覚えてもらおうとしたのですが

我が子『おもしろくなーい』

と一蹴。

たしかに単に暗記するだけだと面白くないですよね。。。

計算を楽しくする方法がないか、今後も調べていきたいと思います。

我が子に月の満ち欠けを伝えるには


f:id:teramethod:20210626224625j:image

妻の勧めもあり、我が子のために

 

ジュニアエラ 2021年 07 月号 [雑誌]

 

を毎週買っています。

 

今月のジュニアエラでは、

 

「謎解きクイズノック」

 

の中に、太陽と月、地球の関係をもとにした問題がありました。

 

我が子には難しかったようで、そもそも

 

月食と日食の違い

 

がわからなかったようでした。

 

超特急で教え、「わかった!」といってくれたのですが、なんとなく理解できたか不安になったので、

 

「月が、満月とか三日月になるけど、三日月の欠けた部分の丸い影はなにでできるのかな?」

 

と聞いたところ、

 

我が子「人工衛星!」

 

私「をっ!」

 

思わず声をあげてしまいました。

 

人工衛星が地球の周りを飛んでいることを知ってくれていることの嬉しさ

 

と、

 

人工衛星ごときの大きさでは、どう考えても月を欠けさせる事はできない、という当たり前の論理を飛び越えた回答だったという事、

 

という2つの感情が相まって

 

「(これはなんとかせねば!)」

 

と思いました。

 

よくあるのがこちらのサイトのような説明です。

 

説明

 

要は月の影になっているのは地球ですね。

 

しかし、これだけだと、月が地球の裏に来たとき、皆既月食と満月の区別が付きません。

 

じつは、月が太陽の影に隠れていると思っても、の公転角度が地球とずれているため、皆既月食になったり満月になったりします。

 

 

キャノンサイトが素晴らしくまとめてもらっているのですが

 

 

「月の満ち欠けを実験でためそう」

 

で、少年帽とピンポン玉で月の満ち欠けをシミュレーションする方法が紹介されてます。

 

これだと満月のときに、ピンポン玉が少年の影に隠れてしまいます。満月ではなく、月は光に照らされません。残念!

 

実際は、光の回折でピンポン玉は照らされるので、満月が確認できるのですが、それだと皆既月食との違いが説明できず、非常に惜しいです。

 

これをわかってもらうためには、月が地球の公転角度と異なることを伝えれば良いのですが、ふと思いました。

 

「パソコンで3Dでシミュレーションして見せれば一目瞭然では?宇宙空間を移動して、なぜ満月と皆既月食の違いは画面でわかる」

 

しかし、そんな簡単には行けなさそう

 

 

天文学は、実験室でも再現が難しいもので、どうしても想像が頼りです。

 

それが頭の体操にもなるのですが、今回の月の満ち欠けであれば、パソコンでシミュレーションさせたものを見せたいところ。

 

これは親としてひと肌脱ぐ時か?

 

やはり私も帽子をつかったほうが説明は早い、、、でも家でできるかな、、、

 

色々気付きのあった一日でした!

 

 

 

 

 

 

 

 

 

プログラムであえて間違って解く

今日ご紹介したいのは、数学者で有名なピーター・フランクルさんの著書 ピーターからの挑戦状 中学入試の算数 ~論理思考が身につく~ (知りたい!サイエンス) からの出題です。


関東学院中学校(神奈川県横浜市、2000年度問題の改題)
 ABC
 ACB
+DCC
CEDD

(1)上の足し算は3つの3ケタの整数の我が4ケタになったことを表しています。A,B,C,D,Eは、0,2,3,4,6,8のどれかの数を表し、同じ文字は同じ数、異なる文字は異なる数を表しています。このとき、Cは□、Dは□を表しています。

本来の解き方であれば、与えられた条件をもとに、ABCDEがそれぞれ取りうる値をどんどん絞り込んて行き

最終的に1つの解を導き出すと思います。

でも、あえて「よくない方法」で解いてみます。


A,B,C,D,Eは 0,2,3,4,6,8 のいずれかを乱数を発生させて決めます。

実際はCは合計の最上位の桁なので0はないし、Maxでも A=8 D=6 の 8+8+6=22 で、偶数だから

もう C =2 なのですが、そこも愚直に乱数発生させて決めます。
※子どもが最初、適当に数を入れて解こうとする感じをイメージしてみました。


合計した結果の数を、下1桁から4桁まで1桁ずつ取り出し、発生させた乱数と合致するか、合致したら終了しています。




paizaさんを利用させてもらい、最後にソース共有してみました。
始めて載せるのでうまくみえるかな、、、

かなり無理やり解いて、ソースもきれいではないので
もし我が子が見たら反面教師として見てほしい、、、

あと、プログラミングを勉強する過程で思い出したのですが、

「なぜこのコードが間違っているのか」

を考えることが良い勉強にもなっていたことを思い出したので、
あえて間違いのコードも作ってみました。

「1.誤検知するバージョン」 は、「同じ文字は同じ数、異なる文字は異なる数」を無視したため、
同じ数を許容して検出してしまうパターン
「2.正解が出せるバージョン」 は、1の問題を対策したものです。

でも、2.でもまだ問題があります。
・解を見つけたら終わっている。解が1つとはかぎらない
・乱数の発生具合によっては、見つからない可能性もある(何回も実行すればよいのですが、、)
・実装に時間がかかるかも(手で解くより最終的に答えが出るのが遅い)


子どもの算数教育法として、こういうのは面白いのではと考えています。



①まず、ノーヒントで考えさせる
②愚直に答えを求めるプログラム(でも間違いがある)をみせる。何が問題か考えてもらう。
③②の対策を行ったプログラムを書く(本人、もしくは先生)
④修正するなかで、本質的な問題に近づけるよう先生が誘導
⑤手で解けるようになる。



自分一人では解けない問題も、「他人(この場合は間違いのあるプログラム)の間違いを指摘する」となると、やる気もでてくるかもしれない。
DaiGoさんの著書 後悔しない超選択術 でも



「第三者の立場で考える」と認知能力は上がるし、合理的に物事を判断できる

と紹介されてました。



プログラミングを、単なる

「答えを解くための計算機」

 にさせず、

「プログラミングによる間違いをみせることにより、間違いを指摘することで学力を向上させるきっかけ」

としても使っていけるのでは、と思いました。

1.誤検知するバージョン



2.正解が出せるバージョン


研究者に学ぶ「没頭する姿勢」

f:id:teramethod:20160319134934j:plain

図書館から以下の本を借りることができました。

日常生活に身近な「時間」「スマホ」「電子レンジ」などを、わかりやすく説明してくれている本です。



小学生の我が子には、ちょっと早いかな、、、と思いながら読んでいると

「ウェブサイトは物理学のためのものだった?」

という章がありました。

なんとなく既視感のある単語が、、、

「ワールド・ワイド・ウェブ(WWW)」
CERN(セルン:欧州原子核研究機構)」

以前もご紹介した、

「ティム・バーナーズ・リー」

が出てくる話がありました。



ティムの話は前のブログで多少紹介しているのですが、この本では少し別な視点で書かれていたのが印象的でした。

素粒子の研究とコンピューターの研究に何か関連があるかというと、直接的にはないが
 多くの研究者が集まり、研究をスムースに進めるために情報共有する仕組みが必須

→(これは前の話でも書きました。)

素粒子の研究者はやっぱり頭のいい人がおおい。「いい」と思ったら自分で作れてしまうのだろう。

→(頭のいい人はなんでもできちゃうんですよね。うらやましい)

凝り性が発揮されすぎて、データの管理やソフトウエアの開発などに注力するあまり、本業の研究のほうが滞ってしまっている研究者もたびたび見かける

→(頭が良すぎるのも困りものですね)



これを見ていて思ったのが、

htmlもwwwができたのは、「頭のいい人が考えて作った」というのはまあそうなのですが

「必要に迫られて」

というのも大きな要因だなと。

そして、その必要性に気づいてさらに

「何とかして解決できないか」

と考える心構えを持てる人が、新しい機能やサービスを生み出せるのではないでしょうか。



そして、

凝り性が発揮されすぎて、データの管理やソフトウエアの開発などに注力するあまり、本業の研究のほうが滞ってしまっている研究者もたびたび見かける。

も参考になります。

きっと、みんな「凝り性」になれる、というか「やっていくうちに楽しくて夢中になってしまう」人が

研究者の中に多いのでしょう。解決するための手段を考えるのがきっと楽しいはずです。

そういった気持ちを、意図して、もしくは自然にできる人なのでしょう。


私たち一般の人も「やっていくうちに楽しくて夢中になる」状態に心を持っていくことができれば

同じような成果が出せるでしょう。




そういえば、物理学者のファインマンさんも、ご冗談でしょう,ファインマンさん 上 (岩波現代文庫) や ご冗談でしょう、ファインマンさん〈下〉 (岩波現代文庫) で日常のあらゆる出来事に対して楽しんでいたことが書かれています。

・研究室のロッカーのカギが、セキュリティ上意味がないことを証明するため、自分で開けてしまう
(日本ではだめですがピッキングテクニックも勉強されたようです)

・大学で皿を投げて遊んでいる人を見て、その皿の動きを計算式で表そうとする
(これがノーベル賞につながる)

・いろんな人に計算問題を出させて「XX秒以内に解いて見せよう」と勝負する
(物理研究で膨大な計算作業もしていたはずなのにプライベートでも計算を楽しんでいる)

きっと

「没頭すると楽しい」

という成功体験があるから、どんどんやれるのでしょう。

我が子にも「没頭すると楽しい」という体験を積んでもらいたい。



以前ご紹介した著書もうこれだけやればいい(コンパクト版)もそうですが、

自分でもなにか子どもたちに、社会に貢献できないか。

考えていきたいと思います。

ファインマンさんのエピソードで印象に残っているシーン

物理学者でノーベル賞を受賞した、リチャード・ファインマンさんはご存知でしょうか。

「天才」と言われる人のなかでも、さらに「天才」とも言われる頭脳の持ち主です。

計算能力も素晴らしく、『ご冗談でしょう、ファインマンさん(下)』という本の中の「ラッキー・ナンバー」という章で

そろばん名人との計算対決シーンがあります。

とても好きなシーンなので、ご紹介したいと思います。

まず簡単な計算、これはそろばん名人が早く答えを出し、勝ちます。

しかし、難しい問題になってくると、ファインマンさんの答えを出すまでの時間と、そろばん名人の時間が縮まっていきます。

そこで次の問題をそろばん名人が出します

「1729.03の3乗根だ!」

同じ数を3回かけて、1729.03 になる、その数を求める問題です。

この答えを出すための式はありません。それでも何とか方法を考えなければなりません。

そろばん名人が「うーん」とうなりながら、頭を抱えて悩んでいます。

一方、ファインマンさんは, ただ座っているだけ。

場所はカフェです。対戦中、ウエイターの人が心配してファインマンさんに聞きます。

「あのう・・・何してるんですか?」
.
ファインマンさんは頭を指さして

「考えてるんだよ」(←ここが好き!)

この後、ファインマンさんが見事に先に答えを出し、そろばん名人は負けました。

ファインマンさんが使ったのは、たまたま覚えていた 12×12×12 = 1728 という答えと、テイラーの公式と呼ばれる式でした。

対戦のあとでファインマンさんはそろばん名人について考えました。

そろばんの名人は、数というものの内容を理解していない。(←ここも好き!)
そろばん玉を押しあげたり下ろしたりすることで計算しているだけ。

私は日本人として、そろばん名人が負けてしまったのは悔しかったのですが、それでもファインマンさんをすごいと思いました。

今回はそろばん名人の話でしたが、「そろばん名人」を「コンピュータ」に変えたとしても、同じことが言えると思います。

どんなに高速に答えが出せる能力があったとしても、それを解く手がかりは人間自身が考えなければなりません。

手がかりを考えもせず、やみくもに計算だけしようとすると、今回負けてしまったそろばん名人のようになってしまいます。

私たち全員がファインマンさんのような考え方はできませんが、

子どもたちには、プログラミングで単純に早く計算できただけで満足せず、

「どうやって解くか」「より良い方法で解くにはどうすればよいか」を考える大切さを知ってもらいたいと思います。

※我が子にもこのエピソードを伝えたのですが、3乗根は小学生は聞いたことがないので、
いまいちこの凄さが理解できていないようでした。
うまく伝えられなかったのが悔やまれます。

小学生でも近似法自体は理解できると思うので、何か良い例ができたら再チャレンジしたいと思います。