プログラミング教育をするうえで、具体的な道具ではない部分で必要なものは?
子どもの興味やきっかけ
「学校教育でプログラミングが必須化するから勉強させなきゃ!」と親は焦るかもしれませんが、そもそもそんなこと子供にとっちゃ全く関係ないこと。それこそ「習ったことのないピアノを今すぐ始めなさい」と同じレベルで「プログラムを始めなさい」とわけわからないまま押し付けたら、やる気が失せるどころか、一生プログラミングなんかやるものか、というトラウマにもなりかねない。
子どもにとって「ゲームを作りたい」が一番わかりやすい、身近な理由ですね。
「プログラムで絵を描く」「プログラムで音楽を鳴らす」「プログラムでボタン入力受け付ける」とかも、ありだとおもいます!
成果がすぐにでてくるものが、教材としてはベターです!いきなりアセンブラでボード動かせとかあえりないです!
こういう意味では、micro:bit やプチコンというのは、教育にかなり向いているなあ、と個人的にはお勧めします。
制御できている安心感
では、プログラミングが嫌になる理由はなんでしょうか。その1つは「わけわからない」状態に陥る事と考えます。
何をしたいかなあを、頭に思い浮かべる。
頭に思い浮かべていることを、ソースコードを記述します。
ソースコードを、コンパイルして実行ファイルに変換する。
実行ファイルを実行して、実行結果が得られる。
ところが、その命令の1つ1つを理解せずに「ソースコードをまるごと写せば動く」と捉えると、
一字一句写すことだけを考えてしまう。そして記述ミスがあると動かなくなり、自分が制御できていないように感じる。
すると途端に自分は何もできていない、無力・無能であるかのように感じてしまう。
こうなるとプログラミングなんてやだー!どうして頭に思い浮かべた内容が、実行結果で得られないんだー、となる。
これじゃいけない。
大切なのは「制御できている安心感」。プログラミングの世界では正直なところこれくらいハードルは低い1。
- コンパイル時にエラーがでている = 「ソースコードの記述に問題が起きていることが分かっている」
- 予期しない動作をしている = 「問題が起きている事がわかっている」
ボトムアップでやるならば
- まずは小さい物を作ってみる
- 徐々にその周辺を作っていく
- 最終的には、全部を束ねて完成品にする。
トップダウンでやるならば
- 関数などがスタブ(空)でいいので全体をまず作る。
- 中ぐらいの粒度のものを作る。
- 細かい実装を作る
ここで重要なのは、どっちのアプローチが優れているのか、という話ではなく「結局わかることしか分からないのだから、問題を最小単位でとらえて、1つずつ解決させていく」というスタンスで進める事が必要ということ。
「なんで?」「なぜ?」にこたえられる、親の知識と忍耐力
ある程度プログラミングができてくると、次にでてくるのは膨大な疑問である。
「どうしてこのやり方なのか」等などの部分について、理解すればするほど疑問が増える。
こうした話が出てきたときに、親が面倒がって流してはいけない。
一番いいのは「子供と一緒に調べてみる」である。
次善策は「それには、高校・大学の知識が必要になるから、今はそれをうまく使っておいて、後で調べよう」である。
最悪なのは「分からない、自分で調べておいて」である。
例えば、小学生だって三角関数の概念は、「グラフを描く機能」さえあれば、大体理解できる(私はしていた)。
それこそ倍角の公式とかは全く分からないでも、「円を描くことができる」関数としては理解できる。
明確なゴールと、達成感
最後に、プログラミング教育で最も重要な事は「ゴール設定」である、と主張したい。
仮に子供が「ゲームを作りたい」といったとしたら、ゲームを作ることが達成するべきゴールなのだろうが、
しかしそれではゲームが完成しなければそれは無駄な時間だったのだろうか?否。
"今、何を解決するのか"というスモールゴールを設定し、それを少しずつクリアしていくことで、最終的なゴールに到達できるということを体感できること、それがプログラミング教育によって子供に与えられる最大の体験であると考える。
複雑な物事も、小さい物事の積み重ねから成立している2、ということを理解することは、問題解決能力向上において重要な要素だと私は考える。
最後に、一番大切な事。
子どもが一歩でも前進したら、そのことを親も一緒に喜びましょう!!
算数でいうならば、九九が全部覚えられたら素敵な事ではあるけど、いきなり全部覚えろなんて言わないですよね?
1の段ができた、おめでとう! 2の段ができた、いいぞ! 3の段ができた、おっけー!
プログラミングも一緒です。
文字が表示できた、おめでとう! 文字が入力出来た、いいぞ! 文字で連結できた、おっけー!
こうやって少しずつ学んで理解して、自分のものにしていく実感を感じられるから、楽しいんです。
でもそれを喜ぶのは、子供が内発的に喜ぶのもそうですが、他人に認められればもっと強く喜びを感じられる。
子供が徐々に成長していくのを一番喜べるのは、一番身近な家族 なんだと思います。
どうか、楽しいプログラミングライフを家族でお過ごしください。