2019年03月27日

プログラミング教育

そろそろ小学校でプログラミングが必修化になる頃合のようですね。

主旨としては 「コーディング (従来の記述型プログラミング言語) をメインにせずプログラミング的思考を育む」 というものらしいので、ゲーム的なものを遊びながら作成または改変していく、といった内容が中心になるんだろうなぁ、と単純に予想されます。

内容的に生徒(児童) 側が負担になる部分は少ない、というかむしろゲームなら喜んでやると思いますが、その分 「現場の教員の方々はご愁傷様」 といった感じですね。


■誰が教えるのか (人も金も出しません)

随分昔の話になりますが、実際の教育現場で PC関連の授業をお手伝いしていたことがあります (授業中に教員の補助を行うお仕事/複数校を定期巡回/なお短期業務)

小学校での授業内容は PC操作に慣れるためのゲームやお絵描きなどが大半で、児童にも非常に人気が高いものでした。ただ、その分教員側の負担はすさまじく、

・30〜40人もの人数が一切の問題なく円滑に進むことはまずないので、教員一人だけではその都度対応で止まる→再開→また止まる→...みたいなループになって収拾がつかない=授業が進まない

・トラブルの原因が PCやプリンタ/ネットワークなどの機材側に由来する場合も多く、専門知識を持たない一介の教員では対応しきれない (数日の研修でなんとかなるレベルではない)

・そもそも教える側の教員自体が PC使うの初めてぐらいなのに...

といった現場の苦労話をよく聞かされました。その分どこへ行っても重宝され、先生方からは感謝しかされず、ちょっと立場を勘違いしそうになる (ある意味危険な?) お仕事でしたね。

昨今のプログラミング教育の話題を眺めていると、そんな当時の記憶がよく思い出されます。

"本来業務であるはずの学業" 以外のアレコレですら現場の教員になんでもかんでも押し付けている状況では、メディアや教育・情報関連業界が期待しているほどの効果を望むのは、そもそも難しいでしょうね。


■プログラミング的思考を突き詰めていくと、結局コーディング (プログラミング言語) に行き当たる

"プログラミング" という関連技能を既に持つ一人として、現状のプログラミング教育に対して思うことですが、↑の表題通りです。

プログラミング教育の主旨 (コーディングいらない、でもプログラミング的思考欲しい) と合わせると、身も蓋もない現実になってしまいますね。

まあ言語の習得、勉強、理解は正直 "面倒" だし "つまらない" し "わけわからん" もんです。専門家もいない、十分な時間も取れない、という公教育でやるようなものではないので、小学校で主題にしないのは正解だと思います。

ただ結局のところ 「プログラミング的思考」 なるもの自体がすなわち 「プログラミング言語として正しく表現されること」 と等価であり、そしてそれらが表裏一体の関係である、ということに気付くと、

最も効率的にプログラミング的思考を取得する方法 = プログラミング言語の習得

となってしまうわけです。要するに 「コーディングを行わなくてもプログラミング的思考のトレーニングは可能だけど、結局効率悪いだけだよ」 というお話です。

※この辺は通常の言語と思考の関係とよく似ています。思考があるから言語になるのか、それとも言語があるからその思考が可能なのかは、いまだもって証明不能です。解っているのは "言語能力を鍛えないと思考力も上がらない" という事実だけです。


■プログラミング言語の習得は簡単

「入門書を見てもわけのわからない説明ばっかで意味不明。やる気をなくす」 というのは、共通的な体験なんでしょうね。

大抵の入門書の構成は実はプログラミング初学者には最適化されていない、というのは自分でもよく思うことです。

では何故そうなっているのか、それがヨシとされているのか、という理由ですが、これは簡単な話です。

「二つ目以降の言語習得にはあれが最適」 だからです。

(例えばプログラミング職に就いている人で) プログラミング言語を一種類しか使えない人は実際ほとんどいません。一つしっかり習得してしまえば二つ目以降の習得は "いともたやすくおこなえる" からです。

では一つ目と二つ目以降、現実的な機会としてはどちらが多くなるでしょうか? 深く考えるまでもなく、2,3,4...と、どこまでも続いていく二つ目以降の方でしょうね。

故に世に出回る入門書は "一つ目の習得" という本当の初学者を相手にはできないことになります。書籍も商売なんでね...仕方ないですね。

※なにより書いてる人間が既に習得者でもあるので、良し悪しの判断基準である自分にとって解りやすい内容、すなわち二つ目以降の言語習得向き、と自然になってしまうわけです。

「じゃあやっぱりプログラミング言語の習得は難しいじゃないか。この嘘つきめ!」 とお叱りを受けそうなので、初学者のための本来の習得方法を書いておきます。

実に簡単です。

・入門書にあるサンプルコードを実際に書いて実行して、一部を "自分の意思で" 書き換えてまた実行して、それが思い通り動くかどうか観察して...と、そういう作業を "頭の中の霧が晴れるまで" 繰り返しおこなう

これだけです (特に重要なのは、できるだけ多くの失敗=ダメパターンを経験すること)

※文法や解説なんかを熟読するのはその後で構いません。どうせ最初に読んだってそれが頭に入るわけないんですから(笑)

「そんなの全然楽しくないじゃん!」

まったくもってその通りです。楽しくなるのは霧が (本当に) 晴れた後の話ですからね。その時が来るまでは苦しいのが当たり前です。

自転車に乗れるまではみんな転んで痛い思いをする。でも一度乗れるようになれば後は楽になりますね。同じことです。

プログラミングに限らず、新しい物事にチャレンジする、すなわち初学者を乗り越えるということは 「なんかわからんけどモヤモヤする」 という霧を晴らす作業に他なりません。

「最初から楽しく!」 という威勢のいい掛け声は魅力的ですが、本質的には遠回りになることを憶えておくとよいかと思います。

ちなみに 「プログラミングは限られた人間しか適応できない」 なる評価がたまに目に入ったりしますが、まあないですね。通常の言語と同じように誰でも習得可能です。小学生でも全然余裕です。

※「ほとんどの日本人は 6年間も英語を勉強するのに話せない」 という文言は英語教育への批判などでもよく出ますが、そりゃその 6年の間に "話す" ということに対しての霧が晴れる瞬間が一度もない (=そんな訓練してない) んだから、むしろ話せなくて当然です。そもそも公教育に頼る時点で何事も間違っています。必要な技能は自分で学び取りましょう。公教育はそれら必要な物事の出発点を教えてくれることに大きな意義があります。


■まとめ

・公教育に過剰な期待はするな、させるな
・プログラミング的思考とプログラミング言語を切り離すのは原理的に無理
・プログラミング言語の習得なんて誰でもできる、余裕余裕
・「最初から楽しく!」 には注意せよ

以上、昨今のプログラミング教育を通して、普段思っていることをつらつらと書いてみました。

なお当然ながらプログラミング言語は習得して終わり、というものではありません。むしろそこからが本当の出発点 (冒険≒地獄の始まり) です。


最後に、

Q. 「プログラミング的思考を鍛えていくと何ができるようになりますか?」
A. 「MMDが作れるようになります。本当の意味でね」

...長文読了おつかれさまでした。

posted by - at 21:22| その他 | 更新情報をチェックする