プログラミング義務教育化に関する話題でつぶやくことがまれにあるので、ここで私の意見や疑問点をまとめておこうと思います。ちょっとした思いつきです。
稚拙な意見かとは思いますが、コメントいただけると嬉しいです。
(Qiita に書いたのはやや偏向があるかもしれませんが、ほかに適当なブログチャネルを持っていないのであしからず...)
事実の整理
プログラミング義務教育化の目的
IT を活用した 21 世紀型スキルの修得
2010 年代中に 1 人 1 台の情報端末による教育の本格展開に向けた方策
を整理し、推進するとともに、デジタル教材の開発や教員の指導力の
向上に関する取組みを進め、双方向型の教育やグローバルな遠隔教育
など、新しい学びへの授業革新を推進する。また、来年度中に産学官
連携による実践的 IT 人材を継続的に育成するための仕組みを構築し、
義務教育段階からのプログラミング教育等の IT 教育を推進する。
※「平成25年6月 産業競争力会議 成長戦略(素案)」より抜粋
オバマ大統領の「全ての人よ、プログラミングを!」
こういったスキルを学ぶのは単に将来に役立つからというだけではありません。
我が国の将来に必要なのです。
我が国が最先端をゆく国であり続けたいのであれば、
私達の生活を変えてくれるような、ツールや技術を習得した、
あなたたちのような若い人が必要なのです。
※ オバマ大統領「全ての人よ、プログラミングを!」発言をどう受け止めるべきか
意見・疑問点
1.実用的、職業に直結するスキルを義務教育化すること
まず上記2つの言葉の意味をそのまま受け取るとしたら、
義務教育過程で
ある程度実用的な
プログラミングスキルを
身に付けることが目的だということになります。
だれが 教えるのか
実用的なスキルはいくら教科書にまとめたところで、教える人間に相応のスキルが求められます。
教員より学生の方が吸収力は高いでしょうから、学生の閃きを教員が潰してしまうという悲劇が目に浮かびます。
(教員がダメだという話ではなく、プログラミングにはそういう性質があるという話です)
どうやって 教えるのか
プログラミングを学ぶ教材は、現時点でも幾つか選択肢はあります。
タートルプログラミングは昔からプログラミングの初歩を理解するのに重宝されています。
LEGO で動くロボットをプログラミングするというのも意欲を掻き立てるかと思います。
(学習向けのパッケージもあるようです)
どうやって 評価するのか
まさか100点満点の紙媒体テストを実施するってことはないでしょうけど、 唯一の正解がない 実用スキルを評価するだけのスキルも教員に求められます。
100点満点の紙媒体テストに頼るなら、実用的なスキルとして評価されないことが明白です。
「優秀なハッカーを育てるわけじゃないんだから」というのは言い訳にしかなりません。
せっかく学んで少し興味が持てても、最後に残るのが無意味な数字では台無しです。
最も有効なのは、同じゴールに対して競争する方法です。
目的は一つでも、手段は個人に委ねることができますし、結果も可視化されます。
ほかの方法はないのか
実際には、興味をもった人間であれば ほっといても 優秀なスキルを身につけ、その先も成長を続けます。
逆に興味がない場合、苦痛でしかありません。興味がないのに人と比べられるほど嫌なことはありません。
本当に必要なのは義務教育化でしょうか。
本当に実用的なスキルを持った人間を増やしたいのであれば、そういったイベントがあることを教えたり、技術書が手に入りやすくしたり、興味をもった人間の成長を阻害しない工夫のほうが重要ではないかと私は思います。
2.情報リテラシー学習の足がかりとしてプログラミングを義務教育化すること
実用的なスキルが目的ではなく、IT 社会で生きる哲学を身に付けることが目的と考える事もできます。
むしろ、義務教育として必要なのは IT 社会で生きる哲学ではないかというのが私の意見です。
情報リテラシーを学ぶのにプログラミングの初歩が適役か
プログラミングを「母国語の読み書き」と同列に表現する記事を見かけました。
母国語の読み書きを学習するということは、自分が生きる社会の概念に直結しています。だからこそ全ての人間が学ぶべき課題と言えます。
対してプログラミング言語を学習するということは、コンピュータの動作原理の世界につながっています。
一見すると IT 社会と深い関わりがあるように見えますが、プログラミングは所詮舞台裏の技術です。
コンピュータは人間に近づくべく進化を続けています。
それでも人間がコンピュータに近づくべきでしょうか。
情報リテラシーはどうやって学ぶことができるか
情報リテラシーは、「コンピュータの向こう側には常に人間がいる」ということを認識して初めて身に付けることができます。
情報リテラシーを学ぶのに最も手っ取り早い手段は、「クローズドネットワークで失敗を経験する」という方法ではないでしょうか。失敗はどんな講釈よりも効果があります。「インターネットを使うときの注意」なんてタイトルの箇条書きは一人でも読むことができますが、一人では失敗することもできません。
プログラミングを知らずとも、インターネットの向こう側に不特定多数の人間がいることなんで、きっと言われなくてもわかっています。電話をかけるのに仕組みを理解する必要はありません。
自分の行動が自分の未来にどう影響するかを予見できないのは、単に失敗したことがないからです。
IT 社会特有の失敗を経験するのに適役なのは、プログラミングではなく教室そのものだと思います。
パソコン教室内で、かんたんなブログを使った擬似的な炎上を再現するとか、そんな方法はいかがでしょうか。
追記:ツイッターにて意見を下さった @SatoshiMasutani さんとの会話で思い至った点を追記します。
サブセット化によって「プログラミングの世界の一部を見せる」
水彩画や鍵盤ハーモニカのように、プログラミングを「一度に見渡せるほどの大きさにサブセット化」することで、義務教育に組み込むことは既に行われております。
実用的なスキルを身に付ける足がかりや、情報リテラシー学習の足がかりではなく、興味を持ってもらうことが目的ということですね。
「義務教育段階からのプログラミング教育等の IT 教育を推進する。 」という言葉の真意がそこにあるのであれば、ぜひ施策すべきことだと思います。