Wednesday, June 10, 2015

Scratch を学ぶ (1)

しばらく前から私は Scratch [1] というプログラム言語を10歳から12歳の生徒達に教えています.時々見る生徒の創造力というのはかなり驚くものです.その1つをここに書いておこうと思います.

まずはプログラムを少し知っている人に向けての概念的な説明をしましょう.後で10歳の生徒にする例による説明も書きます.概念を理解した方が応用がきくのですが,どうしてもとっつきにくいものです.また,例による説明はその例についてはわかるのですが,その他の場合にどうなるかがわからないことが多いという問題があります.

Scratch というのは言語名でもありますが,プログラム環境でもあります.その環境ではスプライトキャラクター[2]というものをイベントリブンで動かすプログラムができます.スプライトキャラクターはオブジェクトと考えても良いもので,イベントによってプログラムが起動し,それぞれのプログラムは並列に走ります.

しかし,このような説明ではプログラムをしたことのない人には何のことはわからないでしょう.プログラム環境,スプライト,イベント,オブジェクトなどはプログラミングで使う概念なので,それぞれについて理解する必要があります.しかし,もちろんこのような概念は10歳の生徒にはあまり話をすることはありません.先に述べたように例による説明には問題点がありますが,ここではまず例を使って説明をしたいと思います.

たとえば scratch を起動すると,猫がいます(図 1).この猫に何かが起こるとどうするかということをプログラムするのです.ここで何かが起こるというのは,マウスのボタンが押されたとか,何かキーが押されたとか,そういうことです.それをイベントが発生すると言います.イベントが発生するとプログラムが動き出すので,イベントで駆動(driven: ドリブン)のプログラムと言います.それぞれのキャラクター,猫とか犬とかは自分の状態を持っており,その状態を使ってプログラムが動きます.状態というのは,猫がどこにいるかという位置とか,猫がどちらの方向を向いているとかのことです.プログラミングでは,状態を持っているものをオブジェクトということがあります.ここでは猫は1つのオブジェクトであり,犬もまた1つのオブジェクトです.

Figure 1. Scratch programming environment
Scratch では緑色の旗のボタンがスタートの合図になっています.そこで,それを最初のイベントとして使うことが多いです.緑の旗ボタンを押すと猫を中央に移動させて,「こんにちは!」と言わせたりすることがプログラムになります.私が10歳の生徒に最初に教えていることは「座標」です.とはいっても,x は横のことで y が縦のこと,両方を 0 にするとキャラクターは真ん中に行き,x を大きくすると右に移動とかいう話をします.それぞれのキャラクターの座標は常に表示されています.マウスでキャラクターを動かすとその座標が変化するのがその場で見えます.それを見せながら,(コンピュータの)マウスで猫をつかまえて,「ほら右にいくと x が増えていく」などと教えるのです.

今回は scratch の話で終わってしまいましたが,次回にはこの環境でキャラクターを動かした10歳の生徒の話をしましょう.


No comments:

Post a Comment