中学校技術・家庭［技術分野］

教授用資料「やってみよう プログラミング」 補助資料 －Scratch 編－
Scratch は MIT メディア・ラボのライフロング・キンダーガルテン・グループによって開発されました。
詳しくは http://scratch.mit.edu をご参照ください。

● p5

スプライトをダンスさせるスクリプト● p5 Challenge 「新しい音を読み込んだり，録音したり，新しいコスチュームにカメラを使ってコマ撮りしたりすることで，マルチメディアの学習を考えてみましょう」（実践のヒント）・新しい音を読み込みたいとき…スクリプトエリア上部のタブ「音」を選択することで，音声の読み込みや録音ができます（読み込む場合は音声を用意しておく必要があります）。
・新しいコスチュームを追加したいとき…コスチュームを追加したいスプライトを，スプライトエリアから選択した後，スクリプトエリア上部のタブ「コスチューム」を選択することで，コスチュームの追加ができます。
● p6

ネコ（スプライト１）をクリックすると，クリックされた総回数をネコ（スプライト１）がセリフとして言い，スペースキーを押すと回数がリセットされて０に戻るスクリプト

● p6 Challenge 「クリックされた回数が偶数の時にネコ（スプライト１）が鳴く」 スクリプト例※スペースキーを押すと回数がリセットされるスクリプトは変更がないため割愛しています。

● p8① ネコ（スプライト１）をクリックすることで任意の文字列を入力し，「messageA」を合図に文字列を送るスクリプト（A さん側）

● p8 ② 「messageA」の合図を受け取って共有された変数（message）の値を表示するスクリプト（B さん側）

● p9 ① A さんの画像イメージとプログラム

スプライト２

スプライト３

スプライト１● p10③，④ B さんのスクリプト（A さんが入力した文字列（answer1）を２秒間表示し，正解であれば「y」，不正解であれば「n」の入力を促す）

● p10

Challenge 「繰り返しスクリプトを実行することを前提に，正解した数をカウントして表示する等の工夫をしてみよう」（考え方）問題に正解すると右上の変数「正解数」が１つずつプラスされていきます。

あらかじめ，変数「正解数」を用意します（変数の使い方については p.6 を参照）。それから，正解したときに表示する「〇（スプライト 2）」に，「correct」を受け取ったときに「表示する」プログラムの下に「正解数を１ずつ変える」というブロックをつけ足します。

正解数をリセットするためのブロック（スプライト 4）を作ります。クリックされたときに，変数「正解数」の値を０に戻します。

● p11 ① A さんの画面イメージとプログラム

● p11 ② B さんの画面イメージとプログラム。

● p12 Challenge 「会話の履歴が残るにはどうしたらよいかな？」（考え方）
・変数ではなく，リストを使用します。
・自分と相手の発言内容を，送受信時にリストに加えていくようにします（例えば，「（なにか）を（リスト）に追加する」のブロックを使用します）。

● p12 Challenge 「メッセージが送られてきたことを相手に確実に通知するにはどうしたらよいかな？」（考え方）
メッセージが伝わったことを知らせる方法としてさまざまなものが考えられますが，視覚的に知らせる方法を例示します。送信が完了したら送信側の画面の「相手」とかかれたスプライトが点滅して，あたかも相手が受信しているかのようなプログラムを制作します。
・A さん（送信側）のスクリプトエリアの「コスチューム」タブ
スプライトの点滅はコスチュームの切り替えで表現するため，色を変えた２つめのコスチュームを用意します（任意で設定します）。

・B さん（受信側）の画面イメージとプログラム受信側の「相手」（ここではネコ（cat））に「response を送る」というブロックを追加します。

・A さん（送信側）の画面イメージとプログラム送信側の「相手」（ここでは蝶（butterfly））にプログラムを追加します。受信側に届いたことが「response」ブロ
ックを通じて返ってきたら，スプライトを点滅させます（ここでは 0.1 秒刻みで 10 回，コスチュームを変化させることで点滅を表現しています）。

● p12 Challenge 「p9～10 のクイズ作品と組み合わせて，お互いに問題を出し合い，結果を返す作品を作ってみよう！」（考え方）・双方向性のチャットに，p.9 の「○（スプライト 2）」と「×（スプライト 3）」を追加します。
・「自分」のスプライトに，p.10 の④のような，正解，不正解を送るスクリプトを追加します。

● p12「安全性を高めるために使用時にパスワードを入れる」

画面イメージとプログラム
①

①

②

②

③

（手順）
①パスワード設定ボタン（スプライト 1）を作成します。ボタンを押すと，「パスワード設定」を求められます。
②「自分」のスプライト（cat）をクリックすると，パスワードの入力を求められます。
③設定したパスワードと認証を行い，一致すればチャットを開始します。間違えるともう一度入力を求められます。
④B さんの方も同様に作成することで，お互いにパスワードを設定し，解除してからチャットを行うプログラムとなります。
※注意：ここでは，パスワードの設定から解除の一連の流れを表現するため何度でもパスワード設定ができるようになっています。現実のプログラムでは，最初の 1 回，もしくは変更のためにはそれなりの手続きが必要になることも忘れずに生徒に伝えたいところです。

● p15 ⑤ センサーの値をネコ（スプライト 1）に表示させる● p16 ② センサーで測定した明るさによってネコ（スプライト 1）の言葉が変わる

● p16 Challenge 「微妙な明るさのときでも表現が安定するようにしてみよう！」（考え方）
この Challenge は，生徒が計測・制御を行うときに，センサーの値によって変化することが正解と見なすことから設定しました。実際に計測・制御を行う機器，例えばエアコンでは，設定温度で ON/OFF の制御はしていないと思われます。実際の生活とのつながりを意識したものとなるように，次のスクリプト例を示します。
スクリプト例

・このスクリプト例では，明るさセンサーの値が直前と比較して「10」より大きい差が無いときには無視をするようにしています。
・リストという機能を使い，センサーの値をリストの 1 番目と 2 番目に入れ，それを比較しています。

● p16 Challenge 「Mesh を利用して，センサーの値を違うコンピュータに送れるようにしてみよう」※Mesh 機能を ON にして，変数（ここでは「light」と「sound」）を共有していることを前提に，以下の例を提示します。コンピュータは 2 台使用してそれぞれ，「PC01」「PC02」とします。
スクリプト例

PC01

PC02

（考え方）
・変数にセンサーの値を入れることが鍵となります。
・変数名は自由に設定できますが，MESH ネットワーク内で同じ変数名を使わないように注意して下さい。
同じ変数名を利用すると，ネットワーク内に異なるコンピュータから異なる値が送信されるため，以下の不具合が出る可能性があります。
→値の異常→２つのデータがつながった値（例）「センサー１＝２」，「センサー２＝１０」のとき，「２１０」と表示される可能性があります。
・下側のスクリプト例は表示側です。
数値だけの表示もできますが，「明るさは，」と付け加えることもできます。センサーを接続して送信側で付けることも可能ですが，日本語を変数内に格納して送ることはできません。また，センサーの値の再利用が難しくなるのでおすすめしません。

● p17 ② 複数のセンサーを同時に利用する例

● p17 Challenge 「複数のセンサーを使って目的の動作をさせてみよう」
ここでは変数を使用して，複数のセンサーを使って目的の動作をさせています。p.17 で示されたやり方でもできますが，他で使用しやすくするために整理をしています。
スクリプト例（考え方）・湿度センサーと照度センサーを使用し，両方の値が 50 より大きければ「雨が降りそうです」と表示し，どちらかの値が 50 より大きければ「雨雲が近づいている可能性があります」と表示します。
・上のスクリプト例では，変数を初期化し，センサーの値を変数に代入しています。
・下のスクリプト例では，２つのセンサーの値を比較し，条件によって文字の出力を変えています。