プログラミング必修化

小学校のプログラミング必修化について偏った意見を飛ばしてみる

いいこと?悪いこと?

いいことだと思います。ただし今の日本からしたら。
これからの社会、ユーザー企業にとっても開発側の企業にとっても、エンジニア系統の職業が人気が出てくることは確定事項です。将来必要になる人材はもう決まっているのです。

2020年の必修化の詳細。

レベルが低すぎる。if,else,for程度の構文のみ。まぁでも小学生の勉強としては底上げが重要なので(上限を上げるのは塾や習い事)それでもいいかもしれない。逆に向いていない人に高度な技術、ましてやプログラミングの勉強で必ずぶち当たるカタカナ・英語の羅列には耐えられない人が続出するはず。

教え方

ビジュアルプログラミングソフトなどを使って授業をするのではないか?
もしくはテキストを使った、PC・タブレットなどをあまり使わない論理的な部分のみを解説するのか。
今2018年。教員の知識にC#、JavaScript、Pythonなどの主要言語の知識、根本的な理論をプラスするのは無理だ。
簡単な操作でも困惑する教員がいる中で、タイピング速度なども関係するこれら主要言語は、考え方や種類も違い、まずはScratchなどの簡単な"触り"の部分を教えるべきなのかもしれない。
プログラミングは英語の応用と考えている教員もいるのではないか。英語ができるから大丈夫と考えている教員もいるのではないか。実際、英語がわかったからといってプログラミングがわかるわけではない。専門用語(例えば「メタ構文変数」など)が飛び交うプログラミングの世界。本当に大丈夫か?

でもやっぱ本格的なのやりたいよね。

最近になって発展してきた分野だからか、英語などの他のものと比べると0からの人とちょっと触っただけの人だけでも物凄い差がある。特にプログラミングは、ちょっと触っただけの人の書いたコードですら側から見たら難解な記号・英語の羅列。Scratchでさえ、Scratchを触った人と0からの人では、ブロックを組む速さが違うと思う。例えばUnityで使うようなC#のこのコード。初心者目線で見てみよう。

void OnCollisionEnter(){
    Debug.Log("ぶつかりました");
    transform.position = new Vector3(0,0,0);
}

こんな短いコード、少し触った人でもすぐわかるはずだ。何かにぶつかったらログを出し、絶対座標0,0,0の地点にアタッチされているオブジェクトを転移させるだけだ。少し今は小難しい説明にして見たが、日本語に訳してもぱっと見意味不明なのがわかるだろう。
ここで入門者の疑問を書き出してみる。

・OnCollisionEnterって・・?特別な効果でも?
・void?奈落?・・
・Vector3ってなんだよ
・(とか"とか使いすぎ!意味不明!
・いやwwwなんでプログラミングに()とか出てくるんだよ()

うん、一流言語は無理だ。

自分なりの、Scratchを使った場合に起きそうなトラブルをまとめてみた

・色彩の感覚が不自由な人が不便
・最初、おもちゃ扱いしてそのあとわからなくなる人
・作られているツールだからこその上限にぶつかった時の虚しさを感じる初級、中級者
・エラーが出ないことで教員も生徒も原因がわからない

四個目は致命的だ。
1〜3はビジュアルプログラミングのほとんどに該当するものだろう。
他のビジュアルプログラミングソフトを知らないので他のものでも出ないのかもしれないが、
「エラーが出ない」すなわち上級者でなければ原因がわからない。まぁ一番上で挙げたレベルではクラスに1人経験者・上級者の人がいれば大丈夫だろうが、そうではないときどうするか。それにさらに突き詰めれば、もし経験者の人がいたとしても、その人に対してコンプレックスを抱く生徒も少なくないだろう。

結論。現状では無理だ。