大西ブログ

All your blog are belong to us

Scratchを使った子どもへのプログラミング教育

この記事は、はてなエンジニア Advent Calendar 2017 の19日目の記事です。
昨日の記事は, id:papix の「「雑に文章を書く」活動と, そこから得たもの - Masteries」でした.

僕には今、小6と小4と二人の子どもがいるのですが、2年ほど前から子どもたちに Scratch を使ってプログラミングを教えています。そこから得た知見などを書いてみます。(最近はサボってるのでごめんよ子どもたちよ)

Scratch とは

説明も不要なくらい有名になってますが、Scratchとは、MITメディアラボが開発している子ども向けのビジュアルプログラミング言語です。アラン・ケイのスクイークをベースに開発されています。
ブロックのように命令を組み合わせてマウスでプログラミングでき、マウスだけでも簡単なプログラムは作れるので児童にプログラムの基本概念を教えるのによい(とされている)。
Scratch 2.0 はFlashプレーヤーを搭載したブラウザだけで動くので、今すぐあなたもプログラミングできます。この記事の中にも動くプログラムを幾つか埋め込んでいるので是非試してみてください。

https://scratch.mit.edu/

なぜ子どもにプログラミングを教えるか

義務教育でプログラミングが必須授業だとか、AI社会に向けて、とか色々言われています。が、割とどうでもよくて、僕は子どもと共通言語ができる、自分のやっている仕事を子どもに理解してもらえる、というのが大きいと感じています。

我が家での導入

プログラミングスクールの体験会に参加

Scratch自体はエンジニアなら触れば大体わかると思いますが、子どもにどういうテンション、カリキュラムで教えるのか、を体験するために、無料体験会に参加してみました。
PC触るのも初めての子どもを対象にしていたので、すごくわかりやすいテキストを写経するだけの簡単なものでしたが、子どもが熱中し、できたものを自分で作り上げたものとして誇らしげにしている様が印象的でした。

書籍の購入

子どもが読めるテキストを購入しました。教えるテキストとして、また自分の理解のために。ある程度進んだら、本を与えると自分で勝手にプログラムを作る、本を発展させて自分で作りたいものを考えるようになるといいですね。

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

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

阿部先生の本。アラン・ケイのメッセージも載っててグッときます。Scratch1.4ベースですが最初に読ませる本としてはベストでは。

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

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

2冊目。Scratch2.0ベースになってるし、2冊目として高度化した内容。この2冊は最初に買う本としておすすめです。

その他の書籍の紹介

(我が家では)子ども受けはイマイチだったものの、面白かった本も紹介します

10才からはじめるゲームプログラミング図鑑: スクラッチでたのしくまなぶ

10才からはじめるゲームプログラミング図鑑: スクラッチでたのしくまなぶ

ヴォーダマンの本。前半Scratch、後半Pythonという構成。Scratchで学んで手続き型プログラミングって、Pythonでも一緒だよ、という主旨だけど子どもはタイピングできなくて詰む。

Scratchではじめよう! プログラミング入門

Scratchではじめよう! プログラミング入門

こちらはもう少し高度な内容。一冊かけてシューティングゲームを作る。基本~応用初級くらいまでが学べる。

Scratchで学ぶプログラミングとアルゴリズムの基本

Scratchで学ぶプログラミングとアルゴリズムの基本

Scratch でアルゴリズムを学べる。線形探索とかソートのアルゴリズムをScratchで学べる。自分は面白く読んだけど、子どもに読ませるのは少し先かな。

do it yourself

本で基礎を学んで、なんとなく「何でもできる」感を感じてもらったら、あとは好きに作らせるといいですね。音を鳴らすもいい、カメラを使うもいい、Scratchでできることに限界を感じたら、もっと高級な言語を学ばすなり、ロボティクスにいくなり、どっちに行っても楽しいです!(子どもも親も)プログラミング教育最高。

やってみる

前置きが長くなりましたが、Scratchプログラミングの例として fizzbazz を書いてみましょう。

f:id:onishi:20151021190649p:plain:w400

https://scratch.mit.edu/projects/194480042/#editor


Perl ならこんな感じですね

my $i = 1;
my $serif = '';

while (1) {
    $serif = $i . '! ';
    if ($i % 15 == 0) {
        $serif = $serif . 'fizzbuzz';
    } elsif ($i % 3 == 0) {
        $serif = $serif . 'fizz';
    } elsif ($i % 5 == 0) {
        $serif = $serif . 'buzz';
    }
    print $serif . "\n";
    sleep(1);
    $i++;
}

一緒じゃん、ということで、子どもに手続き型プログラミングを教えるのに Scratch は最初の一歩に良いなと思っています。
とにかく、マウス(トラックパッド)の操作さえ教えれば、キーボードをほぼ触らずにプログラミングが組めるのは画期的で、参入障壁が低いです。

メッセージング

Scratch の基本は手続き型プログラミングですが、スプライトのクローンでオブジェクトも作れるぞ!(ちょっと違う)
そして複数のスプライトとその間のメッセージ通信ができるぞ!(ただしブロードキャストのみ)

f:id:onishi:20151021180930p:plain


リミックス

GitHubのソーシャルコーディング、素晴らしいですね!Scratchでもソーシャルコーディングできる!
クリエイティブ・コモンズの継承ライセンスで公開、リミックスができます。リミックスツリーというビューがあり、ビジュアライズされます。他の人の作ったプログラムに自由に改変を加えて発表でき、それがさらにという循環が生まれます。
自分の作ったプログラミングが公開できて、コメントがもらえたり、forkして新しいプログラムが生まれるという体験をローティーンでできるのはすごい!僕も実際コメントをもらったりforkされたことがありましたが、ちょっと感動がありました。

いろいろやってみた

というわけで、Scratch が楽しいので、勉強がてら自分でも Scratch ブログを始めてみました。
まだ記事数は少ないですし最近更新も滞っていますが、興味ある方は是非読んでいただければと思います。
oniscratch.hatenablog.com

おすすめ記事

その他いろいろやってます!見てください!&アドバイスください!

Scratch の発展・今後

Scratch2MCPI

みんな大好きマインクラフトでプログラミングを勉強しよう!ラズパイで Mincraft Pi を動かして、Scratch でプログラミングできます!子どもの興味を引く「自作PC(ラズパイ)」「マイクラ」「Scratch」で完全勝利ですね

Scratch 3.0

Flashで動作していた Scratch が HTML5, WebGL といった標準化技術で使えるようになるぞ!

Appendix

教育

最後に

駆け足になりましたが、プログラミングは楽しいですよね、それを子どもに教えるのもまた楽しい。未来の日本のために、我が子の未来のために、自己満足のために、子どもとの対話のために、プログラミングを教えましょう!
あなたの知見も教えてください!