Hour of Codeとパズル型プログラミング教材の功罪

さて、Computer Science Education Week (コンピュータサイエンス教育週間, 今年は12/5–11)が近づいてきました。そして今年も、Hour of Codeを中心として世界中の学校やその他の教育機関でComputer Scienceの授業/ワークショップが行われるのではないでしょうか。日本でも、昨年からみんなのコードが運動を盛り上げてくれていて、頼もしい限りです。

そもそもHour of Codeって?

アメリカのプログラミング教育NPO、Code.orgがComputer Science Education Weekの中で1時間だけでも全米の学校でComputer Scienceの授業をしよう、と提唱している運動です。

どういう教材が提供されているの?

Code.orgはHour of Codeの授業の中で使える様々な教材をピックアップして、先生方に提供しています。一方でCode.org自身も、毎年この週間に合わせて様々な企業と協力をして自ら監修した教材を提供しています。昨年はMinecraft (with Microsoft/Mojang)とStarwars (with Disney)でした。基本的には、いわゆる「パズル型プログラミング教材」になっていて、キャラクター(例えば、SteveやAlex、Angry Bird)をプログラムを書いて動かして教材の中にあるステージを解いていくものです。ステージの数は教材によって異なりますが、概ね30–40分程度で全てのステージをクリアできるようになっています。この教材そのもののことを”Hour of Code”と呼ぶ場合もありますが、このポストではHour of Codeはこのキャンペーンそのもののことを指しています。

Hour of Codeの教材をやったらコンピュータサイエンス/プログラミングに詳しくなれるの?

なれません(断言) ていうかそういう風に作られてません。

Hour of Codeの公式ホームページでも以下のように述べられています。

The goal of the Hour of Code is not to teach anybody to become an expert computer scientist in one hour.

じゃあ何がゴールなの?

One hour is only enough to learn that computer science is fun and creative, that it is accessible at all ages, for all students, regardless of background. The measure of success of this campaign is not in how much CS students learn — the success is reflected in broad participation across gender and ethnic and socioeconomic groups, and the resulting increase in enrollment and participation we see in CS courses at all grade levels. Millions of the participating teachers and students have decided to go beyond one hour — to learn for a whole day or a whole week or longer, and many students have decided to enroll in a whole course (or even a college major) as a result.

ざくっと訳すと…

1時間では、コンピュータサイエンスを学ぶことが楽しくて創造的であること、またどんな年齢でもどんな人でも始められることを気づかせることだけしかできません。Hour of Codeのキャンペーンの成功は、どのくらいコンピュータサイエンスを生徒たちが学んだかで測るわけではないのです。むしろ、1) 幅広い性別と人種、社会階層の人々が参加していること 2) 中長期的に、コンピュータサイエンスをもっと学んでみよう と思った人が多い事が大事です。既に多くの生徒や先生方が、1時間のHour of Codeの授業を通じて、より長く(1日、1週間、もっと長く…いくつかの生徒は1学期間、はたまた大学で専門として)コンピュータサイエンスを学ぶことを決めています。

人種や社会階層の話が出てくるのはアメリカ、という感じですが、まぁ要は「コンピュータサイエンス/プログラミングを教える」というよりかは「コンピュータサイエンスを学ぶことがどれだけ身近で簡単で、どれだけ面白いか、そしてどれだけ価値があるのか可能な限り多くの人々に気づかせることで、長期的にコンピュータサイエンスを学ぶ人を増やす」ことを目指すキャンペーンなわけです。一種の啓蒙活動ですね。時間も短いですし。そういったゴール設定もありHour of Codeの教材は、「コンピュータサイエンスを学ぶことがどれだけ身近で簡単で、面白いか可能かなぎり多くの人々に気づかせる」ことだけに特化してデザインされています。

一方で、Hour of Codeのゴールをよく理解していない人を中心に、Hour of Codeの教材に関する批判をよく耳にすることも事実です。

何が批判されているの?

「これはパズルで、プログラミングではない」
「与えられた問題を解くだけで、子どもたちの創造性、問題発見力を伸ばすものではない」

というのがよく聞くHour of Codeのパズル型プログラミング教材への批判です。全くもって、その通りだと思います。なぜなら、「プログラミングを教えること」を目的としても「創造性、問題発見力を養う」ことを目的としても開発されていないからです。

じゃあ、なんでパズル型プログラミング教材なの?

Code.orgのサイトでも言及されていますが、パズル型プログラミング教材の一番の利点はスケールすることです。いかにサポートする側の人数を少なくした上で、より多くの子どもたちにコンピュータサイエンスを学ぶことがどれだけ身近で簡単で、面白いかをわかってもらうか、という問題に対しては、パズル型プログラミング教材はとても良い解決策だと思います。

具体的には、ステージ1から最後まで、途中途中に挟み込まれる動画による説明を見ながら順番にやれば解けるようになっているので、Computer Scienceに関する知識のない、もしくは自信がない先生方でも負担が少ないです。しかも、子どもたちがよく知っているキャラクターが登場するので、恐らく何も言わなくても勝手に楽しんでくれるでしょう。

じゃあHour of Codeの教材のURLだけ子どもたちに渡せばいんだ?!

いえ、Code.orgはファシリテータとして先生方がHour of Codeの授業を行ってくれることを期待しています。何か、Hour of Codeの教材だけ子どもに渡せば「プログラミング教育できてる」と思ってしまっている方も多いように見受けられますが、Code.orgでは「コンピュータサイエンスを学ぶことがどれだけ価値があって、どれだけ面白いか気づかせる」ためには、Hour of Codeの教材にトライする前に時間を取ってゲストスピーカ、主にIT企業で働くエンジニアに自らの経験(なんでコンピュータサイエンスを学んだのか、何が楽しくてどんなものを開発したのか)を話してもらって、きちんと意味づけをすることを強く推奨しています。このゲストスピーカを呼ぶために、IT企業で働くエンジニアで講演したい人と学校を繋ぐ仕組みをCode.orgは提供していたりもします。また一応、ゲストスピーカを呼ぶことが難しい場合用に、最近の教材では上記の内容を、実際にMinecraftやStarwarsの開発に携わっている開発者が語る動画も用意されています。

Minecraftの教材で準備されているJensからのメッセージ

自分が日本でHour of Codeの教材を使って授業をさせて頂いた際も、教材をやる時間は授業の半分以下の時間にするようにして、残りの時間で上記のような話を可能な限りするようにしていました。

Beyond Hour of Code (Hour of Codeを超えて)

上記のメッセージがよくCode.orgで使われています。Hour of Codeをやって「プログラミング教育やってる」となるのではなく、Hour of Codeのキャンペーンでコンピュータサイエンス/プログラミングの面白さ、重要性に気づかせて、より長い時間コンピュータサイエンス/プログラミングを学んでもらえたら良いな、と思っています。

実際にCode.orgは、Beyond Hour of Codeに向けて年間を通してのカリキュラムを提供しています。小学校向けのComputer Science Fundamentals、高校向けのComputer Science Principlesは既に提供されていて、中学校向けのComputer Science Discoveriesも2017年度に向けて公開される予定です。

まとめ

  1. Hour of Codeはパズル型プログラミング教材で、子どもたちの創造力を伸ばすものではないとして批判されることも多いが、先生方の負担を減らしてスケールするために意図的にデザインされている。一方で、Hour of Codeの教材は、ものすごく特化した目的にデザインされているので、これだけで「プログラミング教育やった」となるわけではない。
  2. Hour of Codeの授業を通してコンピュータサイエンスが、面白くて価値があると伝えるためには、ゲストスピーカや動画によってきちんと意味づけをすることが大事。それによって、最終的にコンピュータサイエンスを学ぶ人が増える事を期待している。

最後に

10/29に行われる高校教科「情報」シンポジウム2016秋に間に合うように、10/28に帰国します。昨年までも、コンピュータサイエンス教育週間にあわせてワークショップのファシリテータをやらせてもらったり、小学校で授業をするチャンスを頂いたりしてきましたが、今年の冬はこういった活動にもっと時間と労力を割くつもりです。基本的には、1コマ(45–60分)でHour of Codeの教材の体験を通じて、「コンピュータサイエンスを学ぶことがどれだけ価値があって、どれだけ面白いか気づかせる」事を目的とた授業になります。既に何校かご縁を頂いて、授業を行わせて頂く予定になっていますが、何かご相談があれば yu@ukay.jp までお気軽にご連絡ください。