programming-education

ミッチェル・レズニック 子どもたちにプログラミングを教えよう

「創造的に考えること、系統的な推論、協力して働くことなど、プログラミングを学ぶことでどの仕事に就いても役立つスキルを身につけることができます」レズニックは明るく語りかける。ここでは、50万ビューを超える Mitch Resnick のTED講演を訳し、子どもたちがプログラミングを学ぶ意義を理解する。

要約

プログラミングはコンピュータの専門家だけのものではなく万人のものであると、MITメディアラボのミッチェル・レズニックは言います。この楽しいデモ満載の講演で彼が示しているのは、子どもたちにプログラミングを教えるメリットは彼らが新しい技術を使うだけでなく創造できるようになることにあるということです。(TEDxBeaconStreetにて収録)

Mitch Resnick directs the Lifelong Kindergarten group at MIT Media Lab, dedicated to helping kids of all ages tinker and experiment with design.

 

1 「Scratch」を使って母の日のカード作りをする

それは5月の土曜日の午後のことでした。明日は母の日だということに ふと気が付きました。母にプレゼントを何も用意していなくて プレゼントを 何にしようか考えました。そこでインタラクティブなカードを作るのはどうだろうかと思いました。MITメディアラボの 私のグループで作っている 「Scratch」というソフトを使ってです。このソフトは 誰でもインタラクティブな絵本や ゲームやアニメーションを簡単に作れ、それをみんなで共有できるようにすることを目標として開発しました。だから母の日のカード作りが Scratchを役立てるいい機会になると思いました。

 

2 プロジェクトの多くは24時間以内に作られたもの

自分のカードを作る前に ちょっとScratchのウェブサイトを 見てみようと思いました。数年に渡り 下は8歳からという世界中の子ども達が 自分のプロジェクトをウェブで公開していました。300万件のプロジェクトの中には 母の日のカードもあるかもしれないと思ったのです。検索欄に 「母の日」と打ち込んでみました。うれしい驚きとともに何十件もの 母の日のカードプロジェクトが 検索結果に現れました。その多くは 私と同じような先延ばし屋によって 24時間以内に作られたものでした。そこで作品を見てみる事にしました。これは子猫と母猫が出てきて 母の日を祝うという作品です。その作者は思慮深く お母さんのために「リプレイ」ボタンを用意していました。もう1つの作品はインタラクティブなもので 「母の日おめでとう」の文字をマウスでなぞると 母の日にふさわしい言葉が現れる仕掛けになっていました。この作品では作者がグーグル検索で 母の日が近づいていることを どのように見つけたかが語られていました。そして母の日が近いことがわかったとき 作者は特別な母の日のメッセージで どんなにお母さんのことが好きか伝えていました。

 

3 「このソフトを作った息子を誇りに思います」

これらの作品は本当に素敵なものでした。見ているうちにこれらの作品が 本当に気に入ったので自分の作品を作る代わりに 母には これらの作品へのリンクを10個ばかり 送ることにしました(笑) 母は実際 私の期待していた反応を返してくれました。母の返事はこうです 「子ども達が母の日のカードをお母さんに送れる ソフトを作った息子を持って誇りに思います」

 

4 技術で自己表現でき、自分のアイディアを表現できること

母が喜んでくれて私はうれしくなりました。でも 私にとって さらにうれしい理由がありました。子ども達が 私達の望んでいた使い方で Scratchを使ってくれたのがうれしかったんです。例えば母の日のカードを作ったように 子ども達は新しい技術を 上手に使いこなしています。「上手」というのはその技術で自分を表現でき 自分のアイディアを表現できることだと思います。ある言語が上手になるということは その言語で日記をつけたり誰かに冗談を言ったり 友達に手紙を書いたりできるようになる ということです。それは 新しい技術でも同じことです。インタラクティブな母の日のカードを作ることで その新しい技術を上手に使いこなせることを 子ども達は 示していました。

 

5 技術を使うことと上手に扱えることは違う

この話を聞いて 皆さんはそんなに驚かないかも知れません。なぜなら 若い人たちは技術を使いこなして いろいろなことができると感じているからです。我々はみんな 若い人が「デジタル世代」と呼ばれていることを知っています。私はこれに疑問を感じています。若い人たちを「デジタル世代」と考えていいのかどうか。若い人たちの新しい技術の使い方に 注意を払うなら よく見かけるのはこのような光景や このような場面です。若い人たちがウェブを見たり チャットや メールや ゲームをすることに 抵抗がないのは疑いようがありません。しかし それは技術を上手に扱えることとは違います

 

6 プログラムを読めることと書けることは違う

若い人たちは 新しい技術に対して豊富な経験があり それらを操作することに慣れています。しかし新しい技術で何かを作ったり 自分を表現するとなるとそれほどでもありません。それはまるで新しい技術で読むことはできても 書くことはできないようなものです。若い人たちが新しい技術を上手に使って書けるようになることを どう助けられるかに私は興味を持っています。それには 彼ら自身がコンピュータの プログラムを書けるようになる必要があります。

 

7 プログラムの書き方を学ぶ重要性に気づく人が増えてきている

プログラムの書き方を学ぶ重要性に 気づく人たちが増えてきています。ここ数年 若い人がプログラミングを学ぶのを サポートする新しい組織やウェブサイトが 数多く出来ました。ネット上にはCodecademy のようなサイトや CoderDojo のようなイベントや 女の子向けのサイトのGirls Who Code や Black Girls Code などがあります。多くの人が行動を始めたように見えます。今年の始め 新しい年が始まったときに ニューヨーク市長のマイケル・ブルームバーグが 2012年の新年の抱負として プログラミングを覚えると述べていました。数ヶ月後 エストニアでは 小学一年生にプログラミングを教えることに決めました。このことがきっかけとなりイギリスでも子ども達みんなにプログラミングを教えるべきかという議論が起こりました。

 

8 多くの人はプログラミングを誤解している

このような話を聞くとすべての人がプログラミングを習うことに違和感を覚える方もいるかも知れません。多くの人はプログラミングというものを 非常に限られた世界の人だけが 必要とすることと考え こんなプログラムを書くことを想像しています。プログラミングがこのようなものなら それができるのは特別な数学の知恵をもち 技術的な素養のある限られた世界の人だけということになるかもしれません。

 

9 Scratchでのプログラミングはブロックをはめ込むだけ

しかし このようなものばかりではないんです。Scratchでどのようにプログラミングできるかお見せしましょう。Scratchでのプログラミングはブロックをはめ込むだけです。この例では 青いブロックを動かして こちらの塊にはめ込むだけです。これらの塊はゲームや物語の中の いろいろなキャラクターの動きをコントロールしています。この例では大きな魚をコントロールしています。プログラムが完成したら「共有」と書かれたボタンを 押すことで プロジェクトを他の人たちと共有して みんながそのプロジェクトを利用したり 参加できるようになります。

 

10 アイディアを実現し世界中の人と共有することができる

もちろん 魚のゲームだけがScratchでできることではありません。何百万というプロジェクトの中には アニメーションから 学校の科学プロジェクト ホームドラマのアニメ 仮想的な組み立てキット 古いテレビゲームの再現 政治的な意見の投票 三角法のチュートリアル インタラクティブな芸術作品 そして母の日のカードがあります。

ここには人々が自分自身を表現する 本当に多くの方法があり アイディアを実現し世界中の人と共有することができます。画面の中だけとは限りません。周りの実際の世界と連携することもできます。これは香港からの例です。子ども達が作ったゲームで 自分たちで光センサを利用した インターフェース装置を作りました。この装置は板の穴を検知し 板のノコギリを操作することで 光センサが板の穴を検知し 画面の中のノコギリを動かし 木を切り倒すというものです。

 

11 出来合いのゲームで遊ぶ代わりに自分のゲームを作ることができる

これからも物理的な実際の世界と 仮想的な世界を一緒にして 結びつける新しい方法を探っていくことになるでしょう。これは数ヶ月後にリリースを予定している 新しいバージョンのScratchを使った例です。ここでまた皆さんに新しい可能性を 示しています。これがその例です。ウェブカメラを使って 手で風船を割ることができます。虫を動かすこともできます。マイクロソフトの「キネクト」に似ていて ジェスチャーで世界を操作します。しかし 出来合いのゲームで遊ぶ代わりに 自分のゲームを作ることができます。そして他の人が作ったゲームの 中身を見ることで どうやってこれを実現しているか知ることができます。どのくらいの動きがあったかが判る新しいブロックを使って 動きが大きい場合に 風船が割れるように指示しています。

ここでカメラを使って情報をScratchに 取り込んだのと同じような方法で マイクを使うこともできます。これはマイクを使用したプロジェクトの例です 皆さん全員が声を使って ゲームに参加できます(虫の音)(叫び)(ガブッ) (笑) (拍手)

 

12 プログラミングを学ぶことで他のいろいろなことを学ぶことができる

子ども達はこのようなプロジェクトを作りながら プログラミングを覚えていきますが さらに重要なのはプログラムを書くことで学ぶということです。プログラミングを学ぶことで 他のいろいろなことを学ぶことができるのです。いろいろな新しい学習への道が開けます。読み書きとの類似性でまた説明したいと思います。読み書きを学ぶことで他の多くのことを 学ぶ可能性が開けます。読む事ができるようになると読むことで学べるようになります。同様に プログラミングができるようになると プログラミングすることで学べるようになります。学ぶことの中には当然のこともあります。コンピューターがどのように動くかとか。しかしそれは始まりに過ぎません。プログラミングを学ぶことで他のいろいろなことを 学ぶ機会が開けます。

 

13 意味のある文脈で学ぶことが物事を学ぶ最上の方法

例を示します。これは別のプロジェクトです。コンピューター教室を訪れたときに このプロジェクトを見かけました。私達が立ち上げに協力した放課後のラーニングセンターで 低所得層の若者に新しい技術を使って 自分をクリエイティブに表現する方法を教えています。数年前に そのコンピューター教室に行ったとき これと似たゲームをScratchで作っている 13才の少年がいました。自分の作ったゲームが気に入っていて誇りに思っていました。しかし したいことがもう少しありました。得点が表示されるようにしたかったのです。これは大きな魚が小さな魚を食べるゲームで 彼は得点をつけて大きな魚が 小さな魚を食べる度に 得点が上がるようにしたいと思っていました。でも どのようにすればいいのか分かりませんでした。そこで彼に Scratchでは 変数というものが使えることを教えました。ここでは変数の名前を「得点」としましょう。すると新しいブロックができます。また得点を表示する小さな表示板もできます。「得点の更新」をクリックする度に得点が加算されます。これを コンピューター教室のその子に見せました。彼をビクターとしておきましょう。ビクターはこのブロックで得点が加算できることが判ると どうすればいいかを理解しました。彼はブロックを選んで それをプログラムの中の大きな魚が小さな魚を食べる部分に置きました。すると 大きな魚が小さな魚を食べる度に 得点が加算され得点が1点づつ増えていきます。それは実際正しく動いていました。彼は興奮して 私の手を握ると 「ありがとう ありがとう」と言いました。その時 思ったのは 先生が変数を教えて生徒に感謝されることなんて どのくらいあるのだろうかということでした(笑) 授業では ほとんどそのようなことは起きません。それは授業で生徒達が変数を習うときに なぜ変数を習うのかを知らないからです。それは彼らが自分で使うものではないのです。Scratchでこのようなアイディアを習うときは 意味やモチベーションのある方法で学ぶことができます。なぜ変数を学ぶ必要があるかを理解することができます。子ども達は より深くより良く 理解します。ビクターは学校で既に変数を習っていたと思いますが 彼は変数に注意を払っていませんでした。今や彼には変数を学ぶ理由がありました。プログラミングを通して学び学ぶためにプログラミングすることで 意味のある文脈で学ぶことができます。それは物事を学ぶ最上の方法です。

 

14 実際に機能するプロジェクトにする方法も学んでいる

ビクターのような子ども達がこのようなプロジェクトを作ることで 彼らは変数といった重要な概念を学んでいます。しかしそれは始まりに過ぎません。ビクターがこのプロジェクトに取り組みスクリプトを作っていたとき 彼はデザインのプロセスも学んでいました。ぼんやりしたアイディアのから始めて ご覧いただいたようにそれを本格的な 実際に機能するプロジェクトにする方法です。彼はデザインの核となるいろいろな概念を学んでいたのです。新しいアイディアをどうやって試すかとか、複雑なアイディアを 単純な部分へと分割する方法や、他の人とどう協力していくかとか、期待したように動かないときにどうバグを見つけて直すかとか、物事がうまくいかない状況で いかに粘り強く方向性をもって前に進んでいくかなどこれはプログラミングに限らず 重要なスキルです。いろいろな活動において重要なものです。

 

15 プログラミングのスキルは全ての人の役に立つ

ビクターは大人になったときに プログラマーやコンピューター科学者になるのでしょうか? ならない可能性の方が高いと思います。しかし彼が何をすることになろうとも ここで学んだデザインのスキルは利用することができます。販売責任者になろうとも 機械工や コミュニティーのまとめ役になろうとも このようなアイディアは誰にでも役に立つものです。言語との比較で考えてみましょう。自由に読み書きができるようになることは プロの物書きになるためにだけに 必要なことではありません。プロの物書きになる人は非常に少ないと思います。けれども読み書きのスキルは全ての人の役に立つものです。これはプログラミングも同じです。多くの人は大人になって コンピュータ科学者やプログラマーになるわけではありません。しかし創造的に考えるスキル、系統的な推論、協力して働くこと Scratchでプログラムを書くことで学ぶこのようなスキルは どのような仕事に就こうとも役立てることができるのです。

 

16 プログラミングで自分のアイディアや感情も表現できる

これは仕事に限ったものでもありません。プログラミングは生活の中で自分のアイディアや感情を 表現するときにも使えます。最後に もう1つ例を挙げさせてください。この作品は 私が母の日のカードを 母に送った後に作られたものです。母はScratchを学んでみたいと思ったのです。それで私の誕生日のためのプロジェクトを作り 私にScratchのバースデーカードを送ってくれました。この作品はデザイン賞を取るようなものではありません。83才の母がプログラマーや コンピュータ科学者になろうと学んでいるわけではないのも明らかでしょう。しかしこの作品を通じて 母は気にかける人とのつながりを深め 新しいことを学び続けることができました。創造性を発揮し 自分を表現する新しい方法を見つけることができました。

 

17 そろそろプログラミングを覚えてみれば?

見渡してみると マイケル・ブルームバーグはプログラミングを学び始め エストニアの子ども達もプログラミングを学んでおり 私の母でさえプログラミングを覚えました。みなさんも そろそろプログラミングを覚えていい時期だと思いませんか? 興味をもたれたら Scratchのウェブサイトを覗いてみてください。scratch.mit.eduです。そしてプログラミングを試してみてください。ありがとうございました(拍手)

 

最後に

プログラミングは読み書きのゲーム。学習の手段としても、仕事の進め方としても、自己表現の手段としても使える。シンプルに創造しよう

和訳してくださった Shigeto Oeda 氏、レビューしてくださった Yasushi Aoki 氏に感謝する(2013年1月)。

小学生からはじめるわくわくプログラミング


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>