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

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

日本の小学生にはプログラミングではなくコンピュータサイエンスを教えるべき

「プログラミング」とはなにを意味するのか、似たような言葉で「コーディング」があるが、それとの違いは何か。

あまり意識されることなく使われることが多いですが、今後プログラミングを子供に習わせる親としては是非知っておきたいところ。

 

似たような用語と比較して、重要点を確認したいと思います。

 

参考になるのは以下のサイト

 

 



 

 

色々書いてあるけど、直感的に理解できるよう、図で書いてみた。

 

f:id:teramethod:20190404000825j:plain

コンピュータサイエンスとプログラミングの関係



ようは、コーディングはコンピューターサイエンスの中のプログラミングの中の一部

 

したがって、ブログラムコードが書けるだけだと、コーディングができるだけで、プログラミングはまだ出来てないかもしれません。

 

アメリカは「コンピューターサイエンス教育」を推進しているのは前の記事でも書いたが、日本では、「プログラミング教育必修化」とよく言われ、耳目を集めています。

 

コンピューターサイエンスを学ぶ方が包括的に理解できるので、プログラミングに閉じず、コンピューターサイエンスも教えていきたいです。



問題は、コンピューターサイエンスを教えられる教師がいないことですが、アメリカではe-learningで補おうとしていています。(code.orgもその一環)

 

日本はアメリカに出遅れているので、同じやり方では太刀打ち出来ません。

 

得意な分野を強めて独自色を出した方がよい。
例えば、ゲームデザインやロボットは漫画やアニメなどで親しみやすい土壌ができているので、そこに国はお金と人員を投入すれば、日本ならではの教育やサービスが展開出来るのでは。

 

せっかくプログラミングを国で義務教育化するんだから、世界に勝てるよう教育内容を考えて欲しい。


コンピュータサイエンスの卒業生は40万人に過ぎず、100万の求人があるとのこと。

 
個人としては、「プログラミング」にとらわれない知識を吸収し、何とかして子供をコンピューターサイエンスの教育までもっていきたいところ。

このサイト名の根本に関わってきたのですが、
今のところ日本では「コンピュータサイエンス」よりも「プログラミング」のほうが認知されているので、そのなかでコンピュータサイエンスも子どもに学ばせていきたいと思います。

桜田義孝五輪相にみる親のプログラミング教育の2つの対策

桜田義孝氏はパソコンができない。

 

日本人の同年代でも、同様の人はかなりいると思われます。

 

文部科学副大臣(第2次安倍内閣)を務め、サイバーセキュリティ戦略担当大臣の桜田氏が色々矢面に立っているが、政治家でない、身近な人びとに置き換えてみると、ただ批判ばかりも出来ないと思いました。

 

伊勢新聞でも桜田義孝氏の件を取り上げています。
大観小観 2018年11月25日(日)

http://www.isenp.co.jp/2018/11/25/25551/

マクロな視点(日本のサイバーセキュリティーは大丈夫なのか)とミクロな視点(桜田さんはパソコンができない)が混在しており、この記事の流れでは、いくら話し合っても解決しないとは思いますが、これからプログラミングを、義務教育としてうける子供の親として、気になることがありました。

 

役割と能力

桜田氏はパソコンが使えず、サイバーセキュリティ戦略担当大臣となった。wikiにも「秘書とか従業員に指示している。自分でパソコンを打つことはありません」とある。 逆に言えば、秘書や従業員がちゃんとやっていれば特に困ることはなく、その分自分の得意分野で頑張ればよいだけのこと。 なぜ桜田義孝議員でも大臣になれるのか?素朴な疑問に答えます https://headlines.yahoo.co.jp/article?a=20181125-00010002-friday-pol この記事の中で

桜田さんは、地元千葉の建設会社経営者から政治家になった叩き上げ。大学時代は昼間に大工をしながら、夜は明治大学の夜間に通った苦労人でもある。ただ、見てわかる通り、頭が切れて弁が立つタイプではなく、『まぁまぁ皆さん』と裏で調整して物事を運ぶ昔ながらの政治家なんです。そういう意味で、二階さんに非常によく似ており、実際に二階さんも桜田さんを気に入っていた。当選7期の桜田さんのために良いポストがないかと、かねてから大臣職を探していたんです」(二階派のベテラン議員)

とあるように、ある意味「政治家」の動きができるのであれば、出世するのは当然。 むしろ自分で望んで志願したというよりは、上司がポストを用意してあげただけで、本人にしてみれば、無理やりその職にさせられたと考えられなくもないです。

そこには「役割」と「能力」がマッチングしないケースもあると思います。

プログラミング教育を行う親の役割と能力

来年から子供はプログラミング教育をうけることになりますが、プログラミング教育を受けたことのない親が大半かと思います。

小学校の義務教育ぐらいは、今持っている知識で対応できる親も多いと思います。 しかしプログラミングについて未経験の親は、子供から「プログラミング」の質問されたとき、ちゃんと答えられない可能性があります。

「パパ、子供の頃プログラミング教わってなかったのでわからないよ~」

桜田氏が「パソコンは使ったことがないからわからない」というのと プログラミングをやったことがない親が「プログラミングを教わってなかったのでわからない」というのが同じに見えてなりません。

2つの対策

こうなってしまった場合、取れる対策としては2つあります 「1.詳しい人にまかせる」 「2.自分で勉強する 」

1.は桜田氏のような、人の上に立つ人であれば行える対策です。
パソコンに詳しい要員を配置しておき、わからなければ聞けばよい。自分でやる必要はありません。特に桜田氏にように国会議員となれば多忙なのは当たり前、そのなかで不得手のものを克服する時間をとるぐらいであれば、得意な分野に注力してほしいです。
知り合いの中にプログラミングに詳しい人がいれば、その人に聞くのもいいでしょう。
自分で全部理解する必要はありません。ただ、これができる人はごくわずかです。

2.は私を含め一般人がとる対策です。
大多数はこちらに入ると思います。
プログラミングに詳しい人なんて個人で雇えないし、プログラミングを知っている人がいなければ
だれも教えてくれないので、子供の質問に答えたければ、自分で勉強するしかありません。

まとめ

伊勢新聞では、桜田氏がパソコンについて

「教室に行ったが、忙しすぎて覚えるのはやめた」

というコメントを書いているように、自分で勉強しようとしていたのです。

多忙な政治家でさえ、自分で勉強しようとしたのであれば、それより時間のある我々は自分で勉強できないことはないでしょう。

このブログは、子供にプログラミングを教えようと頑張る親御さんを応援します!

子供と一緒にプログラミングを学ぶ最強の勉強法

自分の子供は一通りビジュアルプログラミング言語は学ばせ、このあとどうしようかと考えていましたが、もっとも子供が興味を持つ勉強方法が見つかったのでご紹介します。

 

1 タイピングは大事だか焦らず

無料で練習できるサービスとして、ベネッセの無料タイピングサービスを使ってみました。https://manabi.benesse.ne.jp/gakushu/typing/

最初は興味を持ってくれたタイピングですが、ひとりでやってもらうと5分ほどすると、飽きてしまったようでした。  

 

高いスコアを狙って頑張るようなモチベーションは出なかったようです。大人であれば、仕事で使うなどの目的と強制力があると頑張ろうとしますが、子供はそのような強制力は無いので、行動の中に「楽しさ」が必要です。  

 

子供がコナン好きなので、家電量販店で時々試しているタイピングソフトを今後買おうかとおもっています。

2 作りたいもの探し

昔、自分でプログラミングを勉強していたときのことを思い出してみると、「ゲームを作りたい」という気持ちと、実際にどう作ればよいかわからないギャップを常に悩んでいました。

 

サンプルソースを見つけて「凄い!」と思いつつ、自分ではいちから作れないので、一部を改造してなんとなく作った気分になってみたり、ゲームの企画は作ってみたものの、音楽や画像、シナリオまで考えて作らないといけない、とても一人ではできない、と落胆したり。

 

でもツクール系で作るのも何か違う気がして、せめてシナリオだけでも考えてみたりしてました。

 

色々右往左往しながら参考になりそうな知識を身につけて、やっと自分の思うとおりのアプリを作れるようになったのですが、子供には同じ様な道を歩んでもらいたいとも思わないし、モチベーションを高めろともいうのも変ですし、今の時代なら、もっと効率的に、もっと凄いものが作れるはずです。
 
また、子供達にモチベーションをもってもらおうとしたとき、与えられたら「楽しさ」だけだと足りないと気づきました。いくらcode.orgでゲームのようにプログラミングを学んでも、終わったらそれまで。それより「作りたい」と思う気持ちを持ってもらい、自分ので楽しみをいちから作り出すほうが何倍も楽しいのです。
 
この状態に確実にもっていけると思った学習法をご紹介します。それは、
 
有料ゲームまねっこ作戦
 
です。
 
子供には、教育色の高い、いくつかスマホのゲームをやらせています。そのうちの一つが、たす・ひくFree です。
 
無料では、コースの一部しか解放されておらず、もっとやりたければ、お金を払って通常版を買うところ。子供からも「もっとやりたい!」という声。ついつい財布の紐が緩みやすくなるところですが、ちょっと待って。
 
これを題材にアプリを作ってもらえば良いのでは。

まねる

とは言えいきなりゲームを作れといっても無理な話。

色々子供が作りやすい環境を考えましたが、プログラミングゼミにしました。


こちらはインターネット環境なしでも、ビジュアルプログラミング言語で、プログラミングができます。

こちらを使って、一旦簡易の足し算ゲームを作ってみました。

そのときはやっつけで、とりあえず動くものを作ったので、やれることは限られ、ひたすら足し算をし続けるだけです。

試しにやってもらったところ、「これっていつ終わるの?」と質問が。

だよね。

「まだ途中なんだよ」

「じゃあ、終わるように作ってみるっ!」

お?

なかなかの好反応です。

そのときは電車に乗ってる間で、降りる駅が来てしまったので修正してもらえなかったのですが、次の週末にはぜひ修正してもらいたいと思います。

まとめ

ビジュアルプログラミング言語を卒業させたいのはやまやまなのですが、そのときに「なにを作るか」がないとモチベーションが続かないことを懸念していました。

その点、今回の方法だと、作りたいもの(有料ゲームと同等の機能のゲーム)があるので、ビジュアルプログラミング、非ビジュアルプログラミングどちらにも有効です。

タイピングが慣れてきたら、javascriptでも組んでもらおうかなと思っています。

トマト数とプログラミング教育

トマト数、というものはご存知でしょうか。

 

 

 

熊本大学は小学生向けの算数・数学教育にも力を入れられているようで、そのなかの1つの教え方の様、トマト数というのは、上から読んでも下から読んでも同じ数字、ということで、一桁目と三桁目が同じ数字で、二桁目だけ異なる数字。例えば

 

232 353 474 515 

 

つぎに、今考えた数字に対して引く数を考えるのですが、考えた数を入れかえた数字を作ります。先ほどの例でいえば、

 

323 535 747 151

 

次に、大きな数字から小さな数字を引いてみましょう。

 

323-232
535-353
747-474
515-151

 

これらを計算すると、、、

 

323-232
535-353
747-474
515-151

 

つまり

 

323-232=91
535-353=182
747-474=273
515-151=364

 

ここで、計算結果を見せて、子供たちに、何か気付かないか、法則性がないかを考えさせる。というものが、トマト算の主な目的となります。

 

これを見たとき、最初は特になにも気にならなかったのですが、これを紹介しているのが、熊本大学の山本信也教授。

 

個人的に、子供の算数教育で、日本以上の国はないかと調べていたとき、山本教授の調査資料をみてて、ドイツの「数の本」を紹介られていたのを覚えており、考え直しました。

 

ドイツの算数教育は、詰め込み型ではなく、
計算しながら考え、考えながら計算することを通じて、計算技能を習熟するような学習環境がデザインされています。
 
計算しながら「気づく」かどうか。「気づこうとする姿勢があるか」については、考えてみると、システム開発のなかでも、同じ様な状況があることに気付きました。

 

いわゆる、スキルの余りない方がコーディングすると、言われたとおりの仕様を、処理をまとめようとせず、冗長にただただ書き続けるケースをよく見てきました。出来上がりも遅く、バクも多いです。

 

それに対して、上級スキルメンバーは、言われた仕様について質問するケースがあり、同じ様な処理をはじめとするまとめながら簡潔なコーディングで、バクも少ないです。

 

この違いが「気付き」でした。

 

上級スキルメンバーは、実装する中で与えられた情報をまず頭に入れます。頭の中では、法則やカテゴリー化を試み、上手くまとまらない場合は、仕様自体に問題がある可能性もあるので、仕様の確認にくるケースがあります。仕様が整理できたら、それを完結にまとめあげます。

 

私は仕事上、実装メンバーに作業中を依頼する立場で、実装方法までは指示していませんが、本当にひとそれぞれでした。

 

このトマト数の法則性に気付こうとする姿勢を鍛えることこそ、プログラミング能力を分ける要因の一つになると思われます。

 

ビジュアルプログラミングをやってるひとは、コーディングが汚いというも声も聴いたことがあります。でも、別にビジュアルプログラミング上がりなのが問題ではなく、与えられた条件で、いきなりのコーディングをしてしまっているからだと思います。

 

これからのこの再度のプログラミング教育は、「気付き」を鍛えることも重要です。

 

今回のトマト数や、ドイツの「数の本」は算数の中に、「気付き」を意識的に取り入れています。

 

気付きが訓練されることは、プログラミング教育にも好影響を与えることが想定され、日本としても、優れた九九に胡座をかかず、ぜひ「気付き」の教育にも力を入れてもらいたいと思います。

子供のための本気のhtml講座

市販の子供向けのhtml の教科書を見て愕然とした。

挿し絵はかわいいけれども、書いている内容が専門用語を使ってしまっており、これでは頭に入らない。

 

専門用語を1つ1つ説明していると、紙面の都合上できない問題もあるので仕方がない部分もあると思うが、とても自分の子供に見せたいとは思わなかった

 

自分で本気で説明しみようと思う。子供が直感的にわかるように説明してみる。


1 数千人の研究者の為に

htmlというのは、知っているかな。インターネットでみるページを作るためのルールのようなものです。

生みの親は、ティム・バーナーズ=リー というイギリスの計算機科学者です。

f:id:teramethod:20190327010003j:plain

Tim Berners-Lee


wikipedia ティム・バーナーズ=リーより

実際にhtmlを見てみよう。以下のようなテキストです。

<html>
<head><title>タイトル</title><head>
<body>ボディー</body>
</html>

これをファイルに保存してブラウザで見るとこうなります。

f:id:teramethod:20190327011125p:plain




わざわざなんでこのようなものを考え出したのでしょうか。

ティムはスイス、ジュネーブにある欧州原子核研究機構(CERN)という、世界最大の素粒子物理学の研究所で、ソフトウェア技術者として働いていました。

ここでの研究者は2千人!ここ以外でも働いている研究者や、研究者以外の従業員も含めると数千人規模になります。ちょっとした町だね。

毎日みんなが研究していますが、1980年頃の当時は、研究した内容の保存方法は決まっていなくてバラバラでした。

でも、研究内容は、他の人達が見れるようにした方がよいですよね。

もし今からやろうとしてることがすでにほかの研究者がやっていたことであれば、そのデータをもとに次のアイデアを考えたり研究をすすめることができます。

そんな状況ですから、

ティムの上司「研究者みんながそれぞれの研究内容をみれるようにしろ!(俺はできないけど)」
ティム「マジで!?」

と、やり取りがあったかどうかわかりませんが、とりあえずみんなで見れるようにしないといけなくなりました。

f:id:teramethod:20190327010201p:plain


ティムは、みんなが作るか研究内容のファイルを、一つの大きなサーバーに置いて貰い、みんなはそこを見てもらうようにしました。サーバに置けば、みんなはサーバに見に行くと他の研究者の研究結果を見ることができます。



2 みんな同じように作って!

これで問題は解決したでしょうか。

「この人のファイル開けなーい」

「え、俺開けるけど」

研究者は自分の好きな方法で研究結果を保存しました。

専門のアプリケーションで作られた研究結果は、画像や文字などが見やすいですが、アプリケーションを持っていない人にはそのファイルが開けず、何が書いているかわかりません。

また、画像の付け方がわからず、文字だけで研究結果をまとめる人もいます。実験の結果は図やグラフでまとめると見やすいのですが、文字だけの研究結果はとても分かりずらいです。

そこでティムはみんなにお願いします。

 

「みんな同じように作って!」

ただし、作ってもらうときにはあるルールを決めました。

 

「いい書き方を考えたんだ。めっちゃすごいテキストな」

「まず、書きたい「内容」を考えよう。考えた?」

「作る研究結果のファイルを私たちの体に例えよう。

「体」と「頭」があるけど、以下のように考え欲しい。」

「体」=「研究内容」
「頭」=「研究内容以外」

f:id:teramethod:20190327010323p:plain

head body



4段階に分けて説明するぞ。

まず、体(body)の書き方だ。
①研究内容(例えば「これが研究結果だ」)を考えたら、その先頭に<body>を書く。
最後に</body>を書こう。
<body>これが研究結果だ</body>

②次に頭(head)の書き方だ。
研究内容以外は色々あるけど、まずはタイトルを書こう。
<title>研究タイトル</title>

③ ②の続きだ。これは頭にあるから、さらに先頭に<head>最後に</head>をつけよう
<head><title>研究タイトル</title></head>

④頭(head)を先に、体(body)を後に書いて!③+①だ
<head><title>研究タイトル</title></head><body>これはテストです</body>

⑤最後に全部書けたら、一番最初に<html>、最後に</html>を書いてくれ。htmlは何の意味かって?長くなるからそれはまた今度で。(5まで来ちゃった)
<html><head><title>研究タイトル</title></head><body>これはテストです</body></html>


⑥(まだあった。。。)見づらければ改行入れたりインデント(字下げしてみやすくする)してもいいよ。見た目は別で変えれるようにするから。
<html>
<head>
<title>研究タイトル</title>
</head>
<body>
これはテストです
</body>
</html>

 

 

「体」の中には、文字の色を変えたり、文字以外の「画像」(<img></img>)も入れられるよう②しました。これで図やグラフも大丈夫です。
 
ティムは、その後研究所全員に、今のルールで書かれたファイルを見ることができるソフトウェアをあげました。

3 その文章どこ?

今度こそ問題は全て解決したでしょうか。。。

研究結果のファイルはどんどん増えていきました。

■Aさん
素粒子とは.html
今年の計測結果.html
研究中に気付いたこと.html
本日の報告20190321.html
・・・・

■Bさん
昨年からの計測結果.html
素粒子の不思議.html
研究失敗.html
・・・・

Bさんは、本日の報告を書こうとした際、Aさんの「素粒子とは.html」を参考に研究を進めたので、報告書の中でAさんの「素粒子とは.html」を紹介しようとしました。

Aさんのところの文章をコピーして持ってこようとしましたがAさんのものであることがわかるようにしたいです。
 
また、Aさんがファイルを修正してしまうと、Bさんのコピーした内容が古いままとなってしまいます。

 


どうしたらよいかBさんはティムに相談しました。

「じゃあ、そのファイルを直接見れるようにしよう!2段階に分けるよ(今度は大丈夫なはず、、)」

①文章の中にBさんの文章を紹介する内容を書く
今回の研究は、Aさんの素粒子の考え方を参考に以下の実験を行いました。

 

②錨(いかり)ってしってる?船が止まっておく為に使う重りのこと(英語ではAnchor(アンカー))重りに、Bさんのファイルを参考(reference)にしたことを書こう。アンカーで囲った文字は、クリックするとその文書な飛ぶことができるようしするよ凄いでしょ。

 

今までのテキストを越えた(hyper)テキスト(text)ということで、ハイパーテキスト(h)と名付けてみた。それぞれ単語全部書くと長いので単語の最初だけちょっと書いてもらいたい。
<anchor hypertextreference="素粒子とは.html"></anchor>
<a href="素粒子とは.html">素粒子とは</a>

まとめ


長くなった。。。これでもまだ足りないくらい。「タグ」という言葉は使わないようにしてみました。

 

ハイパーテキスト」と「マークアップ言語」は、それ自体が素晴らしい概念で、それが画期的なのですが、説明が難しい。

 

ティム先生がいかに凄かったか『1999年 - 『タイム』誌の「20世紀で最も重要な人物100人」(100 Most Important People of the 20th Century)の一人に選ばれる』も伝えたかったので、ゆうきゆう先生のアドラー心理学を参考に書いてみたけど、なかなか難しい。



 

アプリで勉強(無料)

ここでの「アプリ」とは、スマートフォン向けのアプリケーションとします。

メイン端末がAndroidなのでAndroidだけになってしまいますが、おすすめのアプリと感想をご紹介します。

 

1.プログラミングゼミGoogle Play で手に入れよう
DeNAが提供する無料アプリ。ビジュアルプログラミング言語を使用。
キャラを動かしてミッションをクリアすると宝石がもらえたりするので、小さな子供でも一人で楽しめる。分からない場合は解説を見ながら進められるので、プログラミング初心者でも進めやすい。
個人的に一番良いと思ったのが、自分で好きなプログラムを作成・保存することができること。
また、スマートフォンのカメラを使い、自分で描いたキャラを撮れば、この世に一つしかない自分だけのアプリを作ることも可能。学校の授業でも使用されるくらい完成度が高い。

 

プログラミング未経験者から、ある程度の中級者まで楽しめる。
敢えて欠点を言うなら、解説をみながらであれば、丸写しでクリアできてしまうので、全部クリアできた子の中でも、その理解度にかなり差が発生する。
 
ちゃんと理解できているか、親や教師が確認しながら使えば、最高のアプリではないかと思われました。

 

2.Lightbot:Code HourGoogle Play で手に入れよう

 

かわいいロボットが、決められた床でライトを光らせられればクリア、というシンプルなルール。プログラミングというより、パズル的な要素が強い。
ただ、関数(プロシージャ)や繰り返し(ループ)を使用して、より少ない手順ですべての床にライトを光られられるか、を考える。プログラミングの関数と繰り返しの概念の練習にもなった。
 
難点を上げるとすれば、無料でできるステージが少ないことぐらいかな。
また、子供が大体のステージを終えてしまうと、まだクリアしてないステージは解くことをあきらめてしまった。
 
勉強の為にはもう少し食いついて頑張ってほしかったが、「パズル」「ゲーム」で「楽しく」しようとすると、解けないステージは「楽しくなくなる」ようだ。
 
親としても、解けないステージを何とかヒントを出して解かせたかったが、ここまでくると「プログラム」の勉強ではなく「パズル」の解き方の解説になってきたと感じてきた。子供向けにはもう少し解き方の参考になる情報が欲しいと感じた。 
 
 
3.Degital Puppet Google Play で手に入れよう

こちらもかわいい球状のキャラクター。赤い球状の敵をジャンプして倒す。最初は赤い球の倒し方がわからなかったが、赤い球がいるマスまで一旦入ってからすぐジャンプすると倒せる。

最小手数でクリアすると星が多くもらえるので、効率の良い手がないかを考えて行くのが楽しい。

キャラ的にはLightbotのほうがかわいいかな。。。

これも解けないステージが出てくると、うちの子のテンションがダウン。

パズル以外に、テクニック的なものの紹介や、取り組んだ回数や時間でヒントを増やすとかなどあると長く最後まで楽しめるのではないかと思われました。

 

他にもいろいろ試してみましたが、良いと思ったのが以上の3つでした。

小学生と角度とプログラミング(未解決)

子供が、code.org やscratchをやっていると、いつも決まって避ける分野があります。それは、「角度」「外部座標」です。

今回は、そのうちの「角度」について考えたいと思います。

 

一応、一周360度として、直角が90度、その半分が45度で斜めになるイメージは伝えています。

 

水平線から、1度、2度、、と増えていくと、なにが増えていっているかも伝えています。でも反応が薄い。
 
恐らく、それぞれ言っていることは正しいのだが、直感的には理解できない、といったところだと思います。
 
ここで学校なら、分度器を使い方、直角三角形や2等辺三角形、直角三角形の角度を計算を使ってもとめさせながら、角度について学ぶと思われます。

 

「理論を身につけ頭で覚えるもの」と、「手を動かして体で覚えるもの」がありそうです。
 
巷のアプリでも学べそうだったのですが、ネットワークアクセス権だったり、ローカルドライブの参照、書き込み権限を要求するものばかり。
 
信頼のおけないところのアプリは極力入れないようにしたいところ。
 
現在どうすべきか検討中です。。。