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

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

Googleのプログラマが自分の子供の為に開発した玩具が気になる [お題からの投稿]

お題「最近気になったニュース」

 

japan.cnet.com

 

自分の子供にはできるだけお金を掛けなくてもクオリティーの高いプログラミング教育を行いたいと考えていますが、やはりお金をかけるとそれ相当の価値はあると思います。

 

上記記事で紹介されている玩具の1つ、Googleプログラマ作成玩具

 

 

 

くっ、、、欲しい。

自分の子供が、ロボットの授業で、障害物ありのミッションに苦戦していたのを思い出します。

ロボットは高価でわが家では購入しての練習ができません。

 

おそらくロボットが移動したときの視点からの移動が脳内でまだすぐ変換できていないのと、障害物や制限があることによって「何が」難しくなっているのかの本質を理解するのに時間が掛かっていると思われます。

 

このあたりは慣れの問題もあるので、数をこなしたかったのですが、問題は入手できず、スマホ版の無料アプリで似たようなものを探していたのですが、現時点で見当たらず、自分でなにか作ろうとしても適切な問題の作成がなかなか思いつかず。

 

amazonで少し説明内容が書いてあるので、これをもとに自分で作れないかな。。。

プログラミングよりも読解力

プログラミングを子供に教える際、「そもそも何をすべきなのかわかっていないな」と感じる時がある。

 

塾で、ロボットを決められたらルール(例えば最短ルートでいく)に沿って動いたり、敵を倒さないといけない(倒す攻撃は複数あって、敵によって使い分ける)とき、どうも解決までに時間がかかっている。

 

理由を聞いてみると、「よくわからなかった」と。

 

ロボットを動かすのに慣れてないのかなと思いつつも、その理由が納得できずにモヤモヤしていました。

 

いきなりそんなことを言われたら、なんと答えよう。 そんなとき、テクノロジー系のメディア、Techcrunch Japanのある記事に目が止まった。 

 

 

 スタンフォード出身の著者の親しい友人が、あるプログラミングコンテストに出て優勝したのですが、エリートでさえ、問題を読んだらすぐコーディングを始めてしまい、本題の本質を理解しようとせず、筆者の友人は、徹底的に理解し、その後プログラミングをして優勝した、という。  



これからプログラミングを学んでいく子供たちは、すぐにコーディングし始めないか、恐らくし始めるでしょう。  

 

アメリカのプログラミングコンテストに参加しようとするぐらいのレベルであれば、常人を超えたスキルがあるでしょう。そんな人たちですら、問題を正しく理解しようとしないのです。



子供に関していえば、以下のサイトも参考になります。
 
 

news.yahoo.co.jp

子供は(大人だって)問題文を正しく読めていないときはあるだろう。

 

要は、『読解力』が非常に重要ですが、プログラミング教育のなかで、それを教えられることはないでしょう。ではどうすればよいか。
 
では、どうすればよいか。地道に「読書」する機会を多く作り、長文に慣れ、様々なシチュエーションを脳内に作り上げる力を付けることが、回りくどいようですが、一番の近道です。

 

カナダは子供の読解力が世界2位ですが、その環境が参考になります。
 

happybanana.info



ちなみに1位はシンガポールですが、すさまじい能力重視主義の国で、11歳で勉強という一基準で人生の岐路に立たされ、12歳の3人に2人は近眼で眼鏡。

www.sankei.com



まずは読書する機会を増やし、子供の読解力を高めていきましょう。
 
 

小学生と封筒裏の計算

子供向けの教育を考える際、大人向けにかかれている良書が使えないのがもどかしいときがあります。

 
今回は、システムエンジニアにおすすめの良書として取り上げられることが多い、「珠玉のプログラミング」から、「封筒裏の計算」を紹介したいと思います。

 

「セールスマンが新車を1年で1600キロ運転している」は本当かどうか。

 

速算で以下を計算します。

 

4週間/月
4*12=48週/年→50週/年
 
1週間に40時間働くことにする 
40×50=2000時間/年

 

移動したのは1600キロ

 

1600÷2000=0.8キロ/時間

 

実際は車で移動せずセールスする時間もあるはずだから、時速はもう少し早くなるが、まあ信じようと思えば信じられるか、といった、概算を行う行為。


フェルミ推定」のほうが有名かもしれません。

 

なぜ、今回これを紹介したかと言うと、こういった質問は、子供のうちからこのような速算する習慣を身につけさることが重要と思われたからです。

 

また、本書p83
 
この考え方は、エンジニアの学校では間違いなくスタンダードであり、ほとんどの実際のプログラマにほ日々の糧とも言うべきものなのに、コンピューティングの世界ではしばしば忘れ去られているものです。 
と言っています。

 

しかし、現代でも充分有益な考え方ですが教えるのが難しい。

 

p86では
他の多くのことと同様に、速算のスキルは練習のみによって向上します

 

p95では、この本の読者の一人が教員で、その教員自身は父親に仕込まれたらしく、子供の頃から父親が行う「封筒裏の計算」を目の当たりにして、その正しさを実感していたようです。

 

日頃から封筒裏の計算を子供と行えるような教材を探しているのですが
なかなか見つからず。。。
 
小学生向けの良い教材を探し中です。
 
2019/7/19 追記
英語サイトですが、簡単な表現でフェルミ推定の問題がまとまっています。

www.edgalaxy.com

 

1番目は子供たちに出すと楽しんでくれそう。

How many people could you fit into the classroom.

試しにやってみましょうか。。。

 

1クラスの広さは、、、我が子のクラスが大体30人ぐらいだったか。

先生が動く、教室の前側のほうのスペースまで均等に机を入れると40人くらいいけそうかも。

次に、、、1人の机スペースに何人詰め込めるか。

机の面積にのれる人数は、、、4人ぐらい行けそうか。前後左右のスペースにそれぞれ4人ぐらいいたとすると、、4+4×4=20人 20人×40机 = 800人 結構多い。

とおもったら、ここでは1120人という試算も!すごい。

 

日本語だと、以下でしょうか。

 

サイエンス脳のための フェルミ推定力養成ドリル

 

現役東大生が書いた 地頭を鍛えるフェルミ推定ノート――「6パターン・5ステップ」でどんな難問もスラスラ解ける!

 

プログラミングを合わせて勉強していきたいですね。

最高のプログラミング理解方法

自分の子供に、プログラミングを理解してもらう方法として、もっとも良い方法はないでしょうか。

ノーベル物理学賞を受賞した、リチャード・p ・ファインマンが使っていたとされる、「ファインマン・テクニック」を紹介したいと思います。

 

1 概念を選ぶ
2 その「概念」について「人に教える」
3 教科書(元の資料)に戻る
4 再検討と単純化を行う

 

子供向けプログラミング教育に直すと以下になります。

 

1 これは「プログラミング」ですね。

 

2 お子様がプログラミングに関する勉強をした際に、親御様から聞いてみましょう「凄いね。それはどうやって作ったの?」表示や動きが気になるところがあれば「こんなこと出きるなんて、中ではどう動いてるのかな」

 

要は、親から子供に質問して、強制的に「教える」を発生させるのです。

 

3 本や塾のテキストがあれば復習としてそのページを見直せば良いですね。

 

プログラミングゼミなど、アプリ内でプログラミングしているときは、元の資料がありませんが、「組み立てよう」のように、基本的なプログラミング方法を用意しているものがあるので、それを見せながら、「この処理を使ったんだね」と復習させてあげます。

 

逆に言うと、復習できない環境でプログラミングしてしまうと、作ったものを客観的に見ることができず、スキルが積み上がっていかないのです。

 

お子様へのプログラミング教育の際には、復習できる資料をぜひ確認してあげて下さい。

 

 

 

 

余談
ファインマンさんはノーベル物理学賞受賞者ですが、同時に優れた教育者であり、とても頭が柔らかく、いたずら好きで、一言では言い表せないくらい魅力的な方です。

 

色々な逸話がありますが、私の記憶に残っているのは、ファインマンさんが日本のそろばんの達人と計算競争をするあたりです。

 

足し算引き算はそろばんが勝つが、かけ算わり算で互角、3乗根の計算ではファインマンさんに軍配があがった。

 

そろばんの達人は確かに正確に計算をする。しかし、数の本質を理解していない、と言う。日本のそろばんに少なからず自信を持っていたわたしは、ショックを受けると同時に、感動しました。

 

 

 

タブレット v.s. 紙と鉛筆

成績を2倍にする、という文言が飛び込んできて思わず見てしまいました。  


『生徒一人ひとりの学習状況をAIで分析し、個々の専用レッスンを提供するタブレット教材」 通常の学習方法に比べると、学習成果は2倍以上になる』

 

ということだった。ベネッセと一緒にブラジルで教育事業も立ち上げ精力的だ。

 

『AI・タブレットによる学習に、「こういう新しい勉強法がある」と素直に取り組んでくれるそうだが、障害になるのは「勉強は紙と鉛筆でするもの」という固定概念がある親の意識だという。」 』

 

 親としては、いきなり全部タブレットになってしまうと不安になる気持ちはわかる。プログラミング教育は、紙よりもデジタル教材になるケースが多くなるだろう。

 

では、タブレット、デジタル教材は万能なのかというとそうでもない。

 

理解度の違いはないが、、、電子書籍より紙の本が優秀?数々の研究報告

『2003年にレスター大学で行われた調査では、大学生50人に経済学入門の教材をモニターまたは小冊子で読ませ、20分後に選択問題でテストを行いました。  』

 

『情報として目にするだけならディスプレイでも問題ないが、知識として獲得したいなら紙の本の方が向いていると結論付けられています。』

 

学習効果が2倍、というのは比較方法が詳しく公開されてのいので、統計的な結果かどうかが判断できなかった。

 

ただ、学習効果としては、デジタル教材と紙でそれぞれ良い部分がある。その利用比率がどこかで最大になるはずであり、最大限にそれぞれを利用すべきだ。  

 

すでに副教材としてデジタル教材を採用している教育機関もあると思うが、最大の効率を狙っているところはまだ無いのではないかと思います。 
 
今後はデジタル教材とアナログ教材の利用法、比率が研究され、よりよいカリキュラムになっていって欲しいと思います。 まだその研究結果がでていない現在では、自分達で最高の比率を模索していくしかないです。

子供にプログラミング教育を始められている方は、一度、なにを使って勉強してきたかを見直して欲しいです。

 

もし、デジタル教材ばかりであれば、本を購入したり、ワークショップへ参加し、アナログ体験を、本ばかり増えてしまっている方は、デジタル教材も試してみることをお勧めします。

プログラミングで何を作るか 目標設定が大事

scratchを卒業式し、本格的なプログラミングを習っても、大多数の子供は、なにを作ったらよいかわからなくなるでしょう。

scratchのように、チュートリアルやサンプルが多数あると、いろいろ参考にしながら作れるかもしれない。

javascriptpythonなどのプログラミング言語の場合、基本的にプログラミング開発環境のみ。その上でなにをするかは全部自分次第、となる。自由度が高すぎて、なにをして良いか途方にくれてしまうだろう。

困ってしまう子供達の為に、作りたくなるようなプログラム、もしくは作りたくなるものの探し方、を考えてみます。

学校の授業系

算数:足し算・引き算練習アプリ
   ランダムに出てくる数字を素早く計算する

国語:漢字の読み方練習アプリ
   漢字の読み方を4択クイズ

道徳:登場人物の気持ちを当てるアプリ
   文章を読ませて途中で4択クイズ

体育:連打で早く走る競争ゲーム
   50m走を色々なキャラと競う

 

すぐ思いつくのはこれくらいですが、重要なのは子供自身に何を作るのか考えてもらうことだと思います。
 
日常何気なく受けている「授業」を如何にゲーム化するか。これは子供にとっては楽しみなことでもあり、難しいことでもあります。

 

「どんなことをゲーム化すると楽しいか」
「そもそもなにをすると楽しいのか」

 

これは大人でも答えることが難しい問いです。
私が先ほど記載したゲーム内容は、「作りやすさ」を重要視した内容になっています。
「選択問題」であれば、ボタンを4つくらい準備して、問題文と合わせて表示すればよいです。

 

「連打」は、タッチされた回数や、単位時間内のタッチ数を計測する事ができれば、それに併せてキャラを動かしたり、表示を変えたりすればいい。

 

初めて作る場合、作りやすさもわからないため、まずは既にあるプログラムを修正するところから始めるとよいと思います。(1からだと何をしてよいかわからないはず)

2 ロボット系

ドラえもんを作りたい!」と考える子供も多いかと思います。 しかしロボットは難しい。

歩く:2足歩行はどうやったらできるのか

つかむ:関節を使い、手を物体までどうやって持っていくか。持って行ったあと壊さずにつかめるか

見て認識する:見るのは普通のカメラなのか、赤外線カメラか、入手した情報をどうやって処理して「認識」するか。

大学では、上記のそれぞれが1分野、1研究になっているぐらいのため
まともにやるとすぐ挫折します。

まずは現在動いているロボットを理解する・改良するところから始めるのが良いでしょう。

プログラミング可能なロボットとして定評があるのは以下


3 ゲーム系

音ゲーやパズルゲームなどから、ロールプレイングゲームのようなものが考えられるでしょう。
ただし、ロールプレイングは、自分1人でできない恐れがあります。

ロールプレイングはプログラマー以外に以下がいないと体裁が整わないため、
どうしても独力は難しいです。
1.シナリオ作成
2.デザイン作成
3.音楽作成

協力してくれる仲間を集められるのが1番ですが、2.3.についてはフリー素材があるので
プログラマーが1.も兼務して、というのが実際の対応になりそうです。

4 まとめ

本で勉強して理解したと考えていても、実際に作ってみると、まだまだわからないことが出てきます。お子様のプログラミングスキルが一定以上に達したら、自分のプログラムを作るよう促すことが大事です。
 
プログラミングできる親は、途中までペアプログラミングで一緒に作ってあげることで教えることができますが、プログラミング経験のない親は「子供が作りたいと思うものを一緒に見つけてあげる」ことでサポートができます。
目標設定がが適切であれば、プログラミングできる親の教育よりも、子供の成長度は高いかもしれません
 
このブログでは、プログラミング未経験の親の参考となる、子供のプログラミング教育のための情報を提供していきたいと思います。

プログラミング教育のよくある1つの誤解とその「誤解」

このサイトを作った目的は、わが子がコーディングできるようになること、が目的の1つなのですが、
何か伝えきれない感がありました。

つい先日、このサイトを見て、霧が晴れたような気分になった為ご紹介します。

「小学生がコーディング?」子どもへの効果と海外教育事情…小中学生プログラミング大会プレイベント 

この記事は数年前ですが、日本や海外の教育状況が報告され、日本での子供の学習の仕方で効果があった物や、日本よりかなり進んでいる海外や、失敗してそれを取り戻そうとしている海外のことがわかったりして、大変参考になるのですが、私が気になった内容が以下。

「(プログラミングが)必修化されるというと『小学生がコーディングするのですか』とよく質問されますが、音楽の時間があるからといって、みんながミュージシャンになるわけじゃないし、国語の授業を受けたからといってみんなが作家になるわけではありません。それと同じように、基礎教養としてのプログラミングを大事にしています。もうひとつ(大事にしていること)は、あくまでもプログラミングはツールである、ということ。それを使って何を作っていきたいか、何を表現していきたいか、何を学んでいきたいかを大事にしていくことをうたっています。」(石戸氏)
これからの義務教育を受けるとコーディングできるようになると考える方も多いと思いますが、コーディングできることは義務教育過程では求められていません。


たしかに基礎教養としてプログラミングを身に着け、実際は何を作るか・表現するかが大事と思います。

ただ、さらに誤解があるのは、教養だけの知識だと自分でアプリやサービスが作れません。
よって、他人に作ってもらう
ことになりますが、他人に依頼するにはお金を払う必要があります

今後、お金を払って自分の思うよなアプリやサービスを立ち上げられる人は
日本でどれくらいいるでしょう。

基礎教養だけでも、「このぐらいの内容であれば作れるだろうな」という勘のようなものを持つ方もたまにいると思いますが、大抵の人は「何かを作る・表現する」とき「どこまでできるのか、何をしたらできるのか」は実際にやっていないので、想像することができません。

音楽を学んでも、ミュージシャンにはならなくてもよいらしいですが、プログラミングを学ぶのであれば、プログラムを学ぶのであれば、プログラマーにはならなくても、プコーディングが出来なければ無駄になります。

よって、コーディングできることが求められてないプログラミング教育ですが、その目的のため(プログラミング教育で得た知識をもとになにかを作ったり表現したりする)には、お金を持つ人々以外は、自身がコーディングできるようになり、自分で作る必要があります。
 
クラウドソーシングで安く発注できるので、お金はさしてかからない、という意見もあるかと思いますが、成果物の品質を判断するためにもコーディングの知識が必要です。
 
「コーディングはできなくてよい」に安心せず、ぜひ来年からの義務教育ではコーディングできるところまでみんな頑張ってもらいたいと思います。
 
■最後に
以下の文が、暗に国や学校が期待する将来像を映し出していると思われました。
(太字はこちらで設定)
「世界各国では圧倒的にプログラミング教育が進んでいます。小さいうちから創造力や論理的な力をつけるのは良いことだと思います。親がいなくなってから生きていくためにもプログラミングは大切ですし、これからの時代に必要な基礎的な教養だと思います」とし、上松氏は講演を締めくくった。

これからの世の中を生き残るためにプログラミングを身に着けて欲しい、というのが本音ではないでしょうか。

基礎教養のプログラミングだけでは、自分では何も作れず、だれにも依頼できず、誰にも作って貰えません。

これからの世の中を生き残っていくために、「自分でプログラミングを行い」「自分で表現・発表」できるような人物になってもらいたいと私は思います。

そのために、このブログでは、基礎的なことから実践的なことまで紹介していきたいと思います。