見出し画像

プログラミング教育の先にあるもの

プログラミング教室を実際にやってみて気付いたことがいくつかあります。

それは、プログラミングをした成果がすぐ目に見えないと、生徒・保護者ともに納得しない。ということ。

生徒の方から見れば、
プログラミングの基本を学習して、Scratchなどのプログラミングツールの使い方をある程度分かったところで、すぐにゲームが作れる訳ではない。そしてサンプルプログラムが載っているマニュアルがなければ、ゴールも見えないし、作業している途中でつまらなくなる。自分で考えるより、マニュアル通りにプログラムを作って、さっさと遊べる方が良い。

こんな感じの子が大変多かったように思います。
とても自然な反応で、彼らはプログラマーになりたい訳ではなく、自分でゲームを作って遊びたい、というのが本当のところではなかったかと思うのです。

実際にゲームを作ろうと思うと、行き当たりばったりにプログラムを作っても上手くいくはずもなく、事前に全体像、構想を練って、どんなキャラクターをどんなルールの中で、どのように動かし、ゲーム性を高めていくのか、ということを計画しなければいけません。

そのゲーム自体を作るための構想、計画性を初めに考えさせた上で取り組ませないと、結局のところ遊べない時間が長くなるだけで、挫折し、プログラミングするより遊びたい、という状態に陥ってしまうのです。

しかし、ゲームの構想を考える、と言っても残念ながら、そのツールでどんなことがどこまで可能なのかが分からない中で考えさせたところで、結局、イメージすらできずに「わかんない」の一言で終わってしまう。

それならまずは、そのツールによるプログラミングで製作されたゲームを遊んでみるという時間がまずは必要で、「もっとこうしたい」「こんな設定に変えたい」ということをイメージさせる時間を与えておくのが重要なのだろうと感じていました。

そこで、実際に遊ばせる時間を与えてみたのですが、これもルールを決めたり、何で遊ばせるのか、を考えて設定しなければ、結局、自分で作ったりすることなくずっと遊んでしまう子や、プログラムの完成度が高過ぎて大きくなり過ぎたギャップの前に現実逃避してしまう子などが多くなり、プログラミングをするようにならない、というのが現実でした。

では、マニュアルを制作し、それをそのまま作らせてみるというパターンではどうかというと、生徒は黙々とマニュアル通りに制作をしてくれるので、教室としては体裁が整います。しかし、いつまで経ってもマニュアル通りに作ることから卒業することがなく、「今日はマニュアルなしで、こういう課題にチャレンジしよう」という日を設けても、「じゃあやらない」「何していいか分からない」という具合に放棄する子が出てしまう。

結局のところ、遊びたいというモチベーションしかない子にプログラミングスキルを教えようとしても、そこには大きなモチベーションギャップがあり、なかなかうまくいかないというのが現実であったと思います。

最終的には、プログラミングの方法を強制的に教えつつ、完成したプログラミングですぐ遊ぶ(動きがすぐ確認できる)ことができ、そのプログラムの構造が分かりやすくて簡単に改造することを楽しめる、という環境を整えながら、改造したプログラムの完成度を競うという流れを作るのが最も取り組みの歯車がかみ合った感じがしました。

プログラミングのその先に何を身につけさせたいのか、という視点で考えてみても、特定のプログラミングツールの技能を習得させることが目的ではなく、論理的思考力やプログラムを制作するに当たっての計画性、トライ&エラーを繰り返す仮説思考力などを鍛えるというのが主目的なので、ミッションを達成していくために、各自が試行錯誤をする経験をプログラミングを通じて行なわせるための題材を提供するのが教育的にも合致するのです。

さて、そうなると問題は保護者の方です。

プログラミング教室をやっていて、保護者から聞かれる一番多い質問は「何ができるようになるんですか」というもの。上述したように、プログラミングスキル向上や特定のプログラミング言語の習得を目的としていませんので、目に見えてこれができるようになりました、という成果が見え辛く、こういうテーマのものをこんな風に改造してくれました、というものを見せたいても、「それで何が身についたのか」という感じでイマイチな反応も多かったです。

要はプログラミング教室に通うと、プログラマーになるためのスキルが上達していくというイメージを持たれていて、システムエンジニア、IT技術者になっていく上での実務的スキルが身についていくということを期待して通わせている保護者の方からすれば期待外れも甚だしい、という状況だったのでしょう。

このイメージギャップを埋めることは難しく、プログラミングというのは様々な言語があり、どの言語を習得すれば良いかというのは大変に難しく、ホームページ制作ならHTMLを覚えましょう、機械学習ならPythonが広く使われているのでお勧めです、ゲーム制作ならC++などが一般的ですが、JavaScriptなどで製作するケースも多いです、など様々なケースがあってそれぞれが全く異なる言語であるため、学習者本人が目的意識を持ってから自分で選択をした方が良いというのが私の考えです。

それならプログラミング教育というのは、非認知能力の育成にこそ意味があり、プログラミングを通じて、先ほども述べたように、論理的思考力やプログラムを制作するに当たっての計画性、トライ&エラーを繰り返す仮説思考力などを育てることを主眼とし、その子たちがいずれ、プログラミングに限らず変化する社会で生きていく上で必要な力を育てることが重要だと考えています。

よって、プログラミング教育の先にあるもの、は目に見えるスキルの習得ではなく、プログラマーの育成でもなく、目に見えないけれど、これからの社会を生きていく上で重要になる非認知能力の育成だと思います。

だから、プログラミング教育が必修化され、学校でもプログラミングを取り入れるようになりますが、プログラミング教育の先に何があるのか、ということをしっかり考えた上で取り組むようになって欲しいと切に願っています。

よろしければサポートお願い致します。 勉強会開催の活動費用として充てさせて頂きます。