小3の長男とPythonを勉強してみた
8歳(小3)の長男が春休みのある日、
「黒い画面でプログラミングをしてみたいなぁ」
と、私に訴えかけてきました。
長男は大のゲーム好き。
そして、プレイそのものよりも、制作に興味をもつタイプでした。
次男は、理論よりも感覚派。考えるより感じるタイプで、「クレしん」のしんのすけばりに日々お尻を出して走り回るような性格です。
比べて、長男は感覚より論理を大事にする性格です。物事を実行に移す前に「正しくできるのか」「それをするべきかどうか」を注意深く考えるタイプです。
幼少期に「なんで?」を聞かれる回数が次男の5倍くらいありました。2~3歳のころは本当にヘトヘトでした。
「何で木に葉っぱがあるの?」「何で空が青いの?」「何で人間や動物は死ぬの?」
とか、とにかくいちいち聞いてきます。
それも「神様が絵具で青く塗ったんだよ~」みたいなファンタジー回答では許してもらえず、「絵具でなんて塗れない、ママのいうことはちがう」と言われるので、その都度「青い光は、他の光にくらべてたくさん散乱する」といった正しい情報を調べて、かみ砕いて教えていました。
あまりリアルに教えたくないこと(人の死などについて)は、ファンタジックな作り話を教えたりしましたが、すぐに矛盾を指摘されました。
思い出深いのは、親戚の葬儀の際、火葬場に長男、次男と同席した時です。
棺が火葬場に移送されている時、火葬場につながるドアが開くのを見て、次男は
「あのドアが天国につながっているんだね」
と、ファンタジー全開な回答をしました。
その無邪気な言葉に、親族一同がほっこりしました。
しかし直後に長男が
「違うよ。あの奥でおじさんを焼いて骨にするんだよ」
と、サイコな回答をしてしまい、一瞬でその場が凍り付きました。
どうにも長男には良くも悪くもそういう所があります。事実と虚構をしっかり区別する。正しい、正しくない、に敏感なんですね。
私の趣味のスケートを一緒にしている時も、今自分が正しいエッジに乗れているのかが気になってしまい、間違えたらやり直し、間違えたらやり直しを繰り返して全く先に進めないという有様です。そんな性格なのでスポーツはからっきしです。
その隣では、次男が何も考えずに何度もコケながら爆走しています。
兄弟でこんなに性格って違うんだなと感動さえしています。
そんな長男も、小学校に入学してからNintendo Switchを手に入れ、Nintendo Laboやマリオメーカーのコース作成、minecraftに夢中になりました。
まあ、長男の性格上、こういうソフトに夢中になるのは分かってて買い与えたというのがあります。
決まったソフトで作るのに飽きてしまった後は、iPadを使ってのScratch、PCを使ってのScratchを使って簡単な自作ゲームを作り始めました。
その制作の際、参考にしたのがこちらの書籍。
いきなりゼロから作るとなると、アイディアも浮かびづらいし、ハードルが高かったので、まずは簡単なゲームをレシピ通りに作ることを心掛けました。
とはいえ、一緒に作る私もHTML/CSSが若干わかるくらいで、Scratchはもちろん、プログラミングに関してもほぼ初心者です。中学生のころはBASICという言語でゲームを作ったりもしていましたが、それも大昔の話です。
じゃあどうやって勉強していたのかというと、長男は週に一回ロボットプログラミング教室に通っており、作っていて親子共にわからないところは教室の先生に聞くことで解決していました。
教室には、幸いなことに上記の書籍の執筆に関わっていた方もいたため、だいたいの場合はその場で解決できました。難しい課題は次週に持ち越しでプリントを作ってきてもらうこともありました。
そんなこんなで簡単なゲームを作ること、3年。
Scratchの扱いも板についてきて、変数、代入といった基本的なプログラミングの知識も身についてきたころです。
長男は、黒い画面に興味を持つようになってきました。
というのも、長男はここ3年くらい「野田ゲー」を作る野田クリスタルに心酔していて、その製作配信のアーカイブを見ていた影響もあります。
また、学年が進むにつれ英語学習の機会が増えて、簡単な単語やローマ字の理解が進んできたことも、黒い画面に親しみを持った動機のひとつでしょう。
そこで、長男がScratchから黒い画面でプログラミングをするまでの課題を考えてみました。
①タイピング
②四則計算の理解
③国語の読解力
④簡単な英単語の理解
何気に①が一番の課題です。
私の世代は何をするにもタイピングが第一でしたが、今のご時世そう必要なものではなくなってきています。
そこでタイピングというハードルなしにプログラミングができるアプリを探したところ、Progateというものが見つかりました。
これは短く区切ったレッスン形式でプログラミングを学んでいけるアプリなのですが、タイピングの技術が要りません。プログラミングに必要な単語が初めから並べられていて、それをタッチするだけで入力できるからです。
タイピングもまあ後々必要にはなってくるのですが、このアプリには可愛いキャラクターなども出てくるため、とりあえず黒い画面に書いてあることを理解する導入としてはいいかなぁ~という軽い気持ちですすめてみました。
そしたら、ハマること、ハマること。
1レッスン終わるごとに「レベルアップ!」と表示されたり、自己肯定感を高めて挫折しないような工夫が随所にありました。レッスンの区切りのタイミングも絶妙ですし、解説もとても丁寧です。
これなら親子でやっていけそうだなと確信しました。
迷ったのは、言語です。
導入時は、とりあえずコードがシンプルそうなPythonを選びました。
のちにどの言語が良いかについて、プログラミング教室の先生と相談したのですが、Rubyが良いという先生もいました。私もRubyが理解しやすいと思うのですが、自由度が高い言語なのと、Pythonよりも書くコードの量が多いというのがネックでした。タイピングが嫌で挫折しちゃうのが嫌だったんですね。
それに比べてPythonのコードは極めてシンプルです。
例えば、プログラミングの導入時によく使われる”Hello,World"の出力にしても、
例えばc言語だと、
1| #include <stdio.h>
2|
3| int main() {
4| printf("Hello World\n");
5| }
となります。
そこがPhytonだと、
1|print('Hello World')
の、一行で済みます。
これは、タイピングが少ないのは子供には助かるなぁ。
それにまあ、なんにでも使える、オールラウンダーな言語という評判もあります。
長男の場合はゲーム作りなのですが、彼の最終目標が野田ゲーの「グラジウス」のようなシューティングゲームだということもあり(それでいいのか?という話は別にして)、それを作るには申し分ないと思い、Pythonで進めていくことに決めました。
そして長男くん、レッスンの初めは、iPadを使っていたのですが、なんと自分からPCでプログラミングをしたいと言い出しました。
理由を聞くと、「野田くんのように格好よくタイピングがしたい」とのこと。
何と素晴らしい動機なんでしょう。
それでPCでやらせてみたら、その吸収の早いこと早いこと。
英単語も最初は"print"という単語すら読めなかったのですが、理解したい気持ちが強く、"name"、"number"、"user"、"count"といった英単語を、どんどん自力で覚えていきました。
タイピングについても、ゆっくりではありますが自力で単語を見つけ出して何とか打っています。ちょっとこの子のやる気をナメていたなあと反省してしまいました。
また何か進展があったらブログを更新します。
この記事が、誰かのなにかしらの参考になれば幸いです。