最近プログラミング教育に関する世間一般の興味が高まってきています。オバマ大統領がイニシアチブを取り、コンピュータ科学に関する教育を全ての学生に課すため、関連する産業や研究開発に多額の政策投資を行おうというアメリカのCS for Allや、日本の政府成長戦略のなかで挙げられている小中学校でのプログラミング必修化など、国レベルでの取り組みも目立つようになってきました。

これに呼応するように、プログラミング支援に関する研究を引っ張ってきたアメリカの大学教授たちが、研究トピックを教育方面にシフトしてきています。政策とアカデミアの研究開発とがタイムリーに連携していて大変興味深く、日本でも参考にできるところがあるように思います。

日本科学未来館でのPicode Workshopの様子

日本科学未来館でのPicode Workshopの様子

私自身は教育もちょっとだけ(日本科学未来館)手伝ったり(CANVAS)してきましたが、基本的にはプログラミング環境の研究開発を主軸に据えています。先日立ち上げた勉強会(SIGPX)も、教育に限らずプログラミング体験に関する研究開発の情報交換が主目的です。ただ、国際的な研究コミュニティがざわついて見えたので、知っている範囲で事例を共有しておこうと考え、本記事を書いています。ちなみに、きっかけになったのはViscuit開発者である原田さんのFacebookポストです。

さて、人とコンピュータの関係をよくしようというHuman-Computer Interactionの研究は、コンピュータ科学のなかでは最も応用研究に近い部類に入ります。かつてDemo or dieという標語が流行ったのですが、今ではDeploy or dieと言われます。これは、デモできないような研究はないものと等しい、のを超えて、社会のなかに実装できないような研究はないものと等しい、というかなり厳しい標語です。最近では、スタートアップを始めたり会社のプロダクト部門と密接に結びついて社会に直接インパクトを与えようという研究者が増えています。

プログラミング支援ツールを研究開発してきたUniversity of WashingtonのAndy Ko氏は、AnswerDashというスタートアップを立ち上げています。その経験から、支援ツールのようにプログラマの生産性を瞬間的に向上するよりも、よいコードを書けるプログラマを育てる教育のほうが長期的に見て大きなインパクトになるという気付きを得たそうで、研究テーマをプログラミング教育に切り替えつつあります。研究デモは瞬間的にすごいと思わせれば勝ちですが、デプロイされたシステムは長期間にわたって実用的でないといけません。このDemo or dieからDeploy or dieへのシフトと、ツールによる瞬間的な支援から教育による過程の支援へのシフトは、非常に似ていると思います。

同様にプログラミング支援ツールや開発環境を研究開発してきたMIT CSAILのRob Miller氏も、ツール研究から教育系、とくにMOOCsなどのLearning at Scaleの研究に主眼をシフトしつつあるようです。これまで教育系の研究は手法を提案しても効果を実証するのに膨大な時間がかかっていたのですが、MOOCsの台頭により、大量の生徒に異なる教育手法を適用できるようになり、A/Bテストのようにどちらのほうがよかった/悪かったという評価を行うことが可能になってきました。教育のようにコンピュータ登場以前から存在していたトピックがコンピュータの強みを取り込むことによって、研究方法が更新されつつあるように思います。

プログラミング教育に関連する範囲に絞ると、最近では国際会議ACM CHI ’16でプログラミング言語のユーザビリティについて考えようという会がありました。for文はrepeatという単語を使ったほうが意味を理解しやすいことが分かっている…というような低レイヤーの話から、そもそもどんな要素がユーザビリティに影響するのか、文字言語のユーザビリティだけでいいのか、などいろいろな議論を、部屋が溢れるほどの人数で活発にしていました。産業界からも、アカデミアからも、人がきていました。かつてACM CHI ’09ではAPIのユーザビリティについて考えようという試みもありました。それぞれ、リンク先ではいろいろな論文を読むことができます。

日本のプログラミング教育についても、このように、研究内容をもとに議論できる、科学的で建設的な場があるべきだと私は思っています。それで調べてみたら、いろいろあるんですね…ACM SIGCSEみたいに代表的なものが一つあると分かりやすいんですが、どれがどういうものなのか、誰か解説していただけないでしょうか?


No Comments

Be the first to start a conversation

Leave a Reply

  • (will not be published)