TED日本語 - ミッチェル・レズニック: 子供達にプログラミングを教えよう



TED日本語 - ミッチェル・レズニック: 子供達にプログラミングを教えよう

TED Talks

Let's teach kids to code
Mitch Resnick




It was a Saturday afternoon in May, and I suddenly realized that the next day was Mother's Day, and I hadn't gotten anything for my mom, so I started thinking about what should I get my mom for Mother's Day? I thought, why don't I make her an interactive Mother's Day card using the Scratch software that I'd been developing with my research group at the MIT Media Lab? We developed it so that people could easily create their own interactive stories and games and animations, and then share their creations with one another. So I thought, this would be an opportunity to use Scratch to make an interactive card for my mom.

Before making my own Mother's Day card, I thought I would take a look at the Scratch website. So over the last several years, kids around the world ages 8 and up, have shared their projects, and I thought, I wonder if, of those three million projects, whether anyone else has thought to put up Mother's Day cards. So in the search box I typed in "Mother's Day," and I was surprised and delighted to see a list of dozens and dozens of Mother's Day cards that showed up on the Scratch website, many of them just in the past 24 hours by procrastinators just like myself. So I started taking a look at them. (Music) I saw one of them that featured a kitten and her mom and wishing her mom a happy Mother's Day. And the creator very considerately offered a replay for her mom. Another one was an interactive project where, when you moved the mouse over the letters of "Happy Mom Day," it reveals a special happy Mother's Day slogan. (Music) In this one, the creator told a narrative about how she had Googled to find out when Mother's Day was happening. (Typing) And then once she found out when Mother's Day was happening, she delivered a special Mother's Day greeting of how much she loved her mom.

So I really enjoyed looking at these projects and interacting with these projects. In fact, I liked it so much that, instead of making my own project, I sent my mom links to about a dozen of these projects. (Laughter) And actually, she reacted exactly the way that I hoped that she would. She wrote back to me and she said, "I'm so proud to have a son that created the software that allowed these kids to make Mother's Day cards for their mothers."

So my mom was happy, and that made me happy, but actually I was even happier for another reason. I was happy because these kids were using Scratch just in the way that we had hoped that they would. As they created their interactive Mother's Day cards, you could see that they were really becoming fluent with new technologies. What do I mean by fluent? I mean that they were able to start expressing themselves and to start expressing their ideas. When you become fluent with language, it means you can write an entry in your journal or tell a joke to someone or write a letter to a friend. And it's similar with new technologies. By writing, be creating these interactive Mother's Day cards, these kids were showing that they were really fluent with new technologies.

Now maybe you won't be so surprised by this, because a lot of times people feel that young people today can do all sorts of things with technology. I mean, all of us have heard young people referred to as "digital natives." But actually I'm sort of skeptical about this term. I'm not so sure we should be thinking of young people as digital natives. When you really look at it, how is it that young people spend most of their time using new technologies? You often see them in situations like this, or like this, and there's no doubt that young people are very comfortable and familiar browsing and chatting and texting and gaming. But that doesn't really make you fluent.

So young people today have lots of experience and lots of familiarity with interacting with new technologies, but a lot less so of creating with new technologies and expressing themselves with new technologies. It's almost as if they can read but not write with new technologies.

And I'm really interested in seeing, how can we help young people become fluent so they can write with new technologies? And that really means that they need to be able to write their own computer programs, or code.

So, increasingly, people are starting to recognize the importance of learning to code. You know, in recent years, there have been hundreds of new organizations and websites that are helping young people learn to code. You look online, you'll see places like Codecademy and events like CoderDojo and sites like Girls Who Code, or Black Girls Code. It seems that everybody is getting into the act. You know, just at the beginning of this year, at the turn of the new year, New York City Mayor Michael Bloomberg made a New Year's resolution that he was going to learn to code in 2012. A few months later, the country of Estonia decided that all of its first graders should learn to code. And that triggered a debate in the U.K. about whether all the children there should learn to code.

Now, for some of you, when you hear about this, it might seem sort of strange about everybody learning to code. When many people think of coding, they think of it as something that only a very narrow sub-community of people are going to be doing, and they think of coding looking like this. And in fact, if this is what coding is like, it will only be a narrow sub-community of people with special mathematical skills and technological background that can code.

But coding doesn't have to be like this. Let me show you about what it's like to code in Scratch. So in Scratch, to code, you just snap blocks together. In this case, you take a move block, snap it into a stack, and the stacks of blocks control the behaviors of the different characters in your game or your story, in this case controlling the big fish. After you've created your program, you can click on "share," and then share your project with other people, so that they can use the project and start working on the project as well.

So, of course, making a fish game isn't the only thing you can do with Scratch. Of the millions of projects on the Scratch website, there's everything from animated stories to school science projects to anime soap operas to virtual construction kits to recreations of classic video games to political opinion polls to trigonometry tutorials to interactive artwork, and, yes, interactive Mother's Day cards.

So I think there's so many different ways that people can express themselves using this, to be able to take their ideas and share their ideas with the world. And it doesn't just stay on the screen. You can also code to interact with the physical world around you. Here's an example from Hong Kong, where some kids made a game and then built their own physical interface device and had a light sensor, so the light sensor detects the hole in the board, so as they move the physical saw, the light sensor detects the hole and controls the virtual saw on the screen and saws down the tree.

We're going to continue to look at new ways of bringing together the physical world and the virtual world and connecting to the world around us. This is an example from a new version of Scratch that we'll be releasing in the next few months, and we're looking again to be able to push you in new directions. Here's an example. It uses the webcam. And as I move my hand, I can pop the balloons or I can move the bug. So it's a little bit like Microsoft Kinect, where you interact with gestures in the world. But instead of just playing someone else's game, you get to create the games, and if you see someone else's game, you can just say "see inside," and you can look at the stacks of blocks that control it. So there's a new block that says how much video motion there is, and then, if there's so much video motion, it will then tell the balloon to pop.

The same way that this uses the camera to get information into Scratch, you can also use the microphone. Here's an example of a project using the microphone. So I'm going to let all of you control this game using your voices.

(Crickets chirping) (Shouts) (Chomping) (Laughter) (Applause)

As kids are creating projects like this, they're learning to code, but even more importantly, they're coding to learn. Because as they learn to code, it enables them to learn many other things, opens up many new opportunities for learning. Again, it's useful to make an analogy to reading and writing. When you learn to read and write, it opens up opportunities for you to learn so many other things. When you learn to read, you can then read to learn. And it's the same thing with coding. If you learn to code, you can code to learn. Now some of the things you can learn are sort of obvious. You learn more about how computers work. But that's just where it starts. When you learn to code, it opens up for you to learn many other things.

Let me show you an example. Here's another project, and I saw this when I was visiting one of the computer clubhouses. These are after-school learning centers that we helped start that help young people from low-income communities learn to express themselves creatively with new technologies. And when I went to one of the clubhouses a couple years ago, I saw a 13-year-old boy who was using our Scratch software to create a game somewhat like this one, and he was very happy with his game and proud of his game, but also he wanted to do more. He wanted to keep score. So this was a game where the big fish eats the little fish, but he wanted to keep score, so that each time the big fish eats the little fish, the score would go up and it would keep track, and he didn't know how to do that. So I showed him. In Scratch, you can create something called a variable. I'll call it score. And that creates some new blocks for you, and also creates a little scoreboard that keeps track of the score, so each time I click on "change score," it increments the score. So I showed this to the clubhouse member -- let's call him Victor -- and Victor, when he saw that this block would let him increment the score, he knew exactly what to do. He took the block and he put it into the program exactly where the big fish eats the little fish. So then, each time the big fish eats the little fish, he will increment the score, and the score will go up by one. And it's in fact working. And he saw this, and he was so excited, he reached his hand out to me, and he said, "Thank you, thank you, thank you." And what went through my mind was, how often is it that teachers are thanked by their students for teaching them variables? (Laughter) It doesn't happen in most classrooms, but that's because in most classrooms, when kids learn about variables, they don't know why they're learning it. It's nothing that, really, they can make use of. When you learn ideas like this in Scratch, you can learn it in a way that's really meaningful and motivating for you, that you can understand the reason for learning variables, and we see that kids learn it more deeply and learn it better. Victor had, I'm sure, been taught about variables in schools, but he really didn't -- he wasn't paying attention. Now he had a reason for learning variables. So when you learn through coding, and coding to learn, you're learning it in a meaningful context, and that's the best way of learning things.

So as kids like Victor are creating projects like this, they're learning important concepts like variables, but that's just the start. As Victor worked on this project and created the scripts, he was also learning about the process of design, how to start with the glimmer of an idea and turn it into a fully-fledged, functioning project like you see here. So he was learning many different core principles of design, about how to experiment with new ideas, how to take complex ideas and break them down into simpler parts, how to collaborate with other people on your projects, about how to find and fix bugs when things go wrong, how to keep persistent and to persevere in the face of frustrations when things aren't working well. Now those are important skills that aren't just relevant for coding. They're relevant for all sorts of different activities.

Now, who knows if Victor is going to grow up and become a programmer or a professional computer scientist? It's probably not so likely, but regardless of what he does, he'll be able to make use of these design skills that he learned. Regardless of whether he grows up to be a marketing manager or a mechanic or a community organizer, that these ideas are useful for everybody. Again, it's useful to think about this analogy with language. When you become fluent with reading and writing, it's not something that you're doing just to become a professional writer. Very few people become professional writers. But it's useful for everybody to learn how to read and write. Again, the same thing with coding. Most people won't grow up to become professional computer scientists or programmers, but those skills of thinking creatively, reasoning systematically, working collaboratively -- skills you develop when you code in Scratch -- are things that people can use no matter what they're doing in their work lives.

And it's not just about your work life. Coding can also enable you to express your ideas and feelings in your personal life. Let me end with just one more example. So this is an example that came from after I had sent the Mother's Day cards to my mom, she decided that she wanted to learn Scratch. So she made this project for my birthday and sent me a happy birthday Scratch card. Now this project is not going to win any prizes for design, and you can rest assured that my 83-year-old mom is not training to become a professional programmer or computer scientist. But working on this project enabled her to make a connection to someone that she cares about and enabled her to keep on learning new things and continuing to practice her creativity and developing new ways of expressing herself.

So as we take a look and we see that Michael Bloomberg is learning to code, all of the children of Estonia learn to code, even my mom has learned to code, don't you think it's about time that you might be thinking about learning to code? If you're interested in giving it a try, I'd encourage you to go to the Scratch website. It's scratch.mit.edu, and give a try at coding.

Thanks very much. (Applause)

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

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

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

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

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

若い人たちは 新しい技術に対して豊富な経験があり それらを操作することに慣れています しかし新しい技術で何かを作ったり 自分を表現するとなるとそれほどでもありません それはまるで新しい技術で読むことはできても 書くことはできないようなものです

若い人たちが新しい技術を上手に使って書けるようになることを どう助けられるかに私は興味を持っています それには 彼ら自身がコンピュータの プログラムを書けるようになる必要があります

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

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

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

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

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

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

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

(虫の音)(叫び)(ガブッ) (笑) (拍手)

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

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

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

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

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

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


― もっと見る ―
― 折りたたむ ―


  • 主語
  • 動詞
  • 助動詞
  • 準動詞
  • 関係詞等