久しぶりに、オバマ大統領が2つの話題でTwitterを賑わした。ひとつはもちろん追悼式典会場における自分撮り記念写真の可否問題で、もうひとつは「皆にコーディングを学んで欲しい」という発言だ。
Computer Science Education Week関連イベントの一貫として、オバマ大統領は「アメリカ人全員にコーディングを学んで欲しい」旨を訴えかけるビデオを投稿した。
「コンピューター関連のスキルを身に付けることは、皆さん自身の未来に係るだけではないのです。アメリカという国にとっても非常に重要なことなのです」と大統領は言う。「アメリカが最先端の国家であり続けるために、皆さんのような若いアメリカ人に、これから大きく変化していくコンピューター関連ツールおよび技術をきちんとマスターしてもらう必要があるのです」とのことだ。
前にもこういう話は出た。ニューヨーク市の市長であるマイケル・ブルームバーグが、2012年の抱負としてCodecademyを使ってコーディングを学ぶことにしたとツイートしたときだ。これはかなりの反論を招いた。
たとえば「コーディングの知識を持つことと、配管の知識を持つことの意味に大差はない」とDiscourseの共同ファウンダー兼CTOのJeff Atwoodは意見を表明し、標準的な教育シーンでは、少なくともコーディングと同程度くらいにはコミュニケーションスキルの学習が重要なはずだと述べている。コンピューティングの時代だからコーディングを学べという風潮に対し、多くの人がエンジンの作り方を知らなくても車は運転できると反論した。
今回も、たとえばSlateのMatthew Yglesiasは、アメリカには読み書きのできない人もまだ多くいて、コードリテラシーを高める云々よりも、本当のリテラシーを高める努力の方が必要なのだと主張している。
いろいろな意見があるが、しかし個人的には、やはりできるだけ多くの人がコードリテラシーを身につけるべきだと考えている。起きている時間のほとんどの時間を蛇口の前で過ごし、議会が将来的な蛇口の多様性に関する法案を熱心に審議しているような世の中なのであれば、確かに配管の知識を学ぶことが重要になるだろう。車の例で言うのなら、Program or be Programmedの著者であるDouglas Rushkoffの意見に与する。曰くコーディングのことを全く知らないというのは、車を運転できないということを意味するのではなく、目隠し運転をするようなものだとのこと。エンジンの組み立て方を知らなくても運転はできるという人がいるが、しかしエンジンの物理的な仕組みや内燃機関の動き方については、ほぼ全ての人が学ぶようになっている。車の世界とテックの世界を比較して言うのなら、確かに多くの人にとってFacebookを独力で構築するようなコーディングスキルをマスターする必要はないだろう。しかしどのように作られているのかといった知識程度はなるべく多くの人が知っておくべきことであると思う。
もちろん、プログラミング教育によって、読み書きや算数など、他の教科学習を犠牲にすべきだなどとは考えていない。そもそも他の教科学習を犠牲にする必要など全くないのだ。コーディング関係の知識というのは、他の教科学習と平行して身に付けることができるものなのだ。
たとえば算数や数学がコンピュータープログラミングと親和性の高いものであることは、誰もが認めるところだと思う。たとえばStephen Wolframの弟であるConrad Wolframは、算数・数学教育に、もっとコンピューターを持ち込むべきであると強硬に主張している。自ら運営するComputerbasedmath.orgでは、繰り返し学習で手順を暗記するようなことはやめて、計算はコンピューターにまかせて、手順の背後にある概念に思いを巡らせることをもって算数・数学教育とすべきなのだとしている。
「なぜコンピューターがはるかにうまく行えること(計算)ばかりを生徒にやらせるのでしょう。現在はまだコンピューターにまかせることのできない創造的思考や分析、問題解決のための方法などを学ぶようにすべきなのではないでしょうか」とブログでも書いている。またエストニア政府に協力して、同国の統計確率についての教育カリキュラムを新規に策定することになっているのだそうだ。この分野をコンピューターなしで行うのは馬鹿げたことだとも言っている。但し、話をこういう国家規模の話にもっていく必要もない。算数や数学の授業に、ちょっとしたプログラミングを伴う演習を入れるのははるかに簡単に行うことができる。
アメリカの高校教育で選択科目として人気なのは経済学だが、プログラミング講座の開講を真剣に検討すべきだろう。またプログラミングは他の科目との連携して学習することもできる。カレッジレベルの生物学や物理学を学ぶのに、プログラミングを通じて行おうとする本はいくつも出ているし、そうした内容を高校レベルに導入することもさほど難しくないはずだ。
もちろん算数/数学や理科といったいわゆる理系関連科目のみが、プログラミング技術との親和性を示すものではない。たとえば音楽理論の習得にSuperColliderやPureDataを使っているところもある。音楽理論自体の学習も楽しくインタラクティブに行うことができ、同時にプログラミングについても学ぶことができるのだ。またNew York UniversityのAdam Parrishはプログラミングを通じた創造的文章講座を開設している。学生にPythonの基礎を教え、Twitter APIを使ってコンピューターに現代詩を生成させるといったことを行っているのだ。
さまざまな教科は、コンピューター科学などと融合させることで一層面白く学べるようになる。プログラミング、電子工学、数学、物理、そして音楽を教え、最終的にArduinoを使ったシンセサイザーを制作するコースなどといったものも面白そうではなかろうか。
学生たちに、学んで何かを実現する楽しみを教えるという意味もある。たとえばあるブログに「People Feel Dumb: That’s Why They Don’t Code」(プログラミングは頭の良い人にしかできないのだと諦める人々)というタイトルの記事があった。これは面白い論考で、確かに自分はもっと優秀になれるのだと考えている生徒こそが良い成績を残すという調査結果もある。自分は愚かだと考える生徒が、どんどん落ちこぼれていくことになるという話だ。これは個人的にもよくわかる話だ。作文や絵画など、創造性を問うような授業にて、自己否定してしまえばまったく良い成果を残せなくなってしまうのだ。
「ぼくには無理」とか「才能がないんだ」という諦めの気持ちを持たせないためには、なるべくはやい段階での成功体験を与えることもひとつの方法だ。プログラミングなどという、難しいものと考えられがちのことが「できる」喜びを伝え、音楽を作ることが出来ると体験させ、算数が楽しいものであることを経験させる。こうした体験は、その後の教育成果に繋がっていくはずだ。
すべてがうまくいきそうなスキームに思えるが、最も困難な問題は教師側にあるだろう。エストニアは昨年、小学校段階からコンピューター科学を教えていくことを決めた。このためにまず行っているのは、やはり教師側のトレーニングだ。アメリカにおいても、こうしたことを念頭において前に進んでいくべきだろうと思う。
Photo by Michael Himbeault
[原文へ]
(翻訳:Maeda, H)