スクラッチの手引き

スクラッチでメッセージを使ったプログラムを作ろう

最終更新日 2025年4月27日 by toytune

スクラッチはアメリカの大学、MIT(マサチューセッツ工科大学)メディアラボで開発されたビジュアルプログラミング言語です。

はじめに

スクラッチでは、プログラムが動き出す「きっかけ」を「イベント」と呼びます。その中でも、スプライト同士のやりとりに使う「メッセージ」について、今回は詳しく学んでいきましょう。

メッセージを使うと、スプライト同士で「合図」を送り合い、タイミングよく動かすことができます。
今回は、2つのスプライトを使って、片方の動きが終わったらもう一方が動き出す、という連携プログラムを作ってみます。

▼ 今回作成するプログラム(の旗をクリックして動作を確認することができます)

「ネコ」のスプライトのプログラムの初期設定をする

まずは、もともとある「ネコ」のスプライトを使ってプログラムを作っていきます。

新しくプロジェクトを作ったばかりならそのままでよいのですが、念のため右下のスプライトと背景のところから、「ネコ」のスプライト のアイコンをクリックして選択状態にしておきましょう。

ステージ下になるスプライト1をクリック

「ネコ」のスプライトが選択された状態になったので、「ネコ」のプログラムを作っていきます。

まず最初のきっかけは、ステージのをクリックしたタイミングで動作させ、「ネコ」の位置を左端にしたいと思うので、画面左側のコードの中から下記をドラッグして、中の数値を変更してください。手順は下記となります。画像も参照してください。

  1. 「イベント」から「旗が押されたとき」をドラッグ
  2. 「動き」から「x座標を0、y 座標を0にする」をドラッグし、ドラッグした2つをくっつける
  3. 「x座標を0、y 座標を0にする」の「x座標」数字を「-200」と入力
イベントから旗が押された時をドラッグし動きからx座標を0、y座標を0にするをドラッグしx座標を0のところを-200に変更する
一旦これでどうなるか確認してみます。

ステージのをクリックすると、中央にいた「ネコ」のスプライトがx座標-200方向となる左端へ移動し、意図した通りになりました。

ここからもう一つのスプライトを追加して、2つのスプライトが右端まで動くプログラムを作りたいと思います。

ステージの旗をクリックするとネコのスプライトがx座標-200、つまり左側で移動する

ネコが動いてメッセージを送るプログラムを追加しよう

続けて、ネコが右へ歩きながら、端に着いたときにメッセージを送るプログラムを作っていきます。

「制御」から「1秒待つ」をドラッグし、下にくっつけます。そのあと、「1秒待つ」の「1」は短くてわかりにくいかもしれないので、「2」と入力し、「2秒待つ」と変更します。

制御から1秒待つをドラッグし1を2に変更する
「ネコ」のスプライトが左端から右端まで歩くアニメーションを作りたいので、「制御」から「ずっと」をドラッグし下にくつけます。
制御からずっとをドラッグし2秒待つの下にくっつける

今回「ずっと」動作させたいものは、歩くアニメーションになるので、「動き」から「10歩動かす」をドラッグし、「ずっと」の中に入れます。

動きから10歩動かすをドラッグしずっとの中にいれる

右端まで動かしたいので、右端に到着したときの条件分岐を設置しておきます。
「制御」から「もし〜なら」をドラッグし、「ずっと」の中、「10歩動かす」の下にくっつけます。

制御からもし〜ならをドラッグしずっとの中、10歩動かすの下にいれる

右端まで到着したことを確認したいので、「調べる」から「マウスのポインターに触れた」をドラッグし、
「もし〜なら」の六角形のところに入れます。

調べるからマウスポインターに触れたをドラッグしもし〜ならの〜の中にいれる

現在は「マウスのポインターに触れた」ことを調べるとなっているので、「マウスのポインター」をクリックし、出てきた選択肢の中から「端」をクリックで選択します。

これで、「もし端に触れたなら」になりました。

マウスポインターに触れたのマウスポインターのところをクリックし表示されるリストから端を選択する

「もし端に触れたなら」の場合の動作を作っていきます。右端に到達したことが見た目でわかるように
「見た目」から「こんにちは!2秒言う」をドラッグし、「もし端に触れたなら」の中に入れます。

見た目からこんにちは!と2秒言うをドラッグしもし端に触れたならの中にいれる

今回のプログラムに合わせたいので、「こんにちは!」を「おいでよ!」などに変更します。

こんにちは!のところをおいでよ!に変更する

いよいよこのタイミングで、あとから追加するスプライトへメッセージを送りたいと思うので、
「イベント」から「メッセージ1を送って待つ」をドラッグし、「おいでよ!と2秒言う」の下にくっつけます。

イベントからメッセージ1を送って待つをドラッグしもし端に触れたならの中、おいでよ!と2秒言うの下にいれる

このままでもいいのですが、せっかくなので新しくメッセージを作ります。
「メッセージ1を送って待つ」の「メッセージ1」をクリックし、出てきた選択肢の中から「新しいメッセージ」をクリックで選択します。

メッセージ1を送って待つのメッセージ1をクリックし表示されたリストから新しいメッセージをクリックで選択する

「新しいメッセージ」をクリックすると青い画面に切り替わり、「新しいメッセージ」を設定します。
設定といっても、「新しいメッセージ」の名前を入れるだけです。

ここではわかりやすく「おいでよ」と入力します。入力できたら右下の「OK」をクリックします。

新しいメッセージ名においでよと入力しOKをクリック

「OK」をクリックすると画面が戻ります。
さきほどまで「メッセージ1」だったところが「おいでよ」に自動的に変わっています。もしかわってなけばもう一度クリックで開き、出てきた選択肢から「おいでよ」をクリックで選択します。

おいでよに変わっている

これで、ネコのスプライトが端まで歩いて「おいでよ!」と言ったあと、メッセージ「おいでよ」を送るようになりました。

クマのスプライトを追加してプログラムを作ろう

次に、メッセージを受け取る側のスプライトを作成します。

画面右下のスプライトと背景のところから、「スプライトを選ぶ」をクリックしてください。

スプライトを選ぶをクリック

画面がスプライトの一覧に遷移します。
わかりやすいように「ネコ」のスプライトとは違うもので、さらに右側に向いているものが良いので、
「Bear-walking」という「クマ」のスプライトを見つけてクリックしてください。

Bear-walkingをクリックする

画面が戻ると、スプライトと背景のところと、ステージに「クマ」のスプライトが表示されました。

Bear-walking(くま)のスプライトが追加されている

「クマ」のスプライトがそのまま選択されている状態になると思うので、このスプライトにプログラムを追加していきたいと思います。

「ネコ」のスプライトと同じく、ステージのをクリックしたタイミングで「クマ」のスプライトの位置や、大きさを設定したいので、画面左側のコードの中から下記をドラッグして、中の数値を変更してください。手順は下記となります。画像も参照してください。

  1. 「イベント」から「旗が押されたとき」をドラッグ
  2. 「見た目」から「大きさを100%にする」をドラッグし、くっつける
  3. 「大きさを100%にする」の「100」を「50」に変更する

「クマ」のスプライトが少し大きかったですが、これで半分の大きさになります。

イベントから旗が押されたときをドラッグ、見た目から大きさを100%にするをドラッグしてくっつける。100を50に変更する

続けて、「ネコ」のスプライトと同じ位置にしたいので、「動き」から「x座標を0、y座標を0にする」をドラッグし、その下にくっつけます。

「x座標を0、y座標を0にする」のx座標の「0」を「-200」に変更します。
もし「-200」になっていたら、そのままで大丈夫です。

動きからx座標を0、y座標を0にするをドラッグし大きさを50%にするの下にくっつける。x座標を0のところを-200に変更する

これで、ステージのをクリックしたとき、「クマ」のスプライトは大きさは半分になり、「ネコ」と同じ左端になるプログラムが完成しました。

クマがメッセージを受け取ったときのプログラムを作ろう

続いて、ネコからのメッセージ「おいでよ」を受け取ったらクマが反応して動くようにします。

「イベント」から「おいでよを受け取ったとき」を最初につくったプログラムの下などにドラッグしてください。画像は下にドラッグしていますが、場所はどこでも構いません。

イベントからおいでよを受け取ったときをドラッグする

ここからは、「ネコ」のスプライトから「おいでよ」のメッセージを受け取ったときの動作をプログラムしていきます。

「見た目」から「こんにちわ!と2秒言う」をドラッグして下にくっつけます。
もしこのとき、「おいでよ!と2秒言う」になっていれば、それをドラッグしてください。

「こんにちわ!」または「おいでよ!」を「いくよ!」と入力し変更してください。

見た目からこんにちは!と2秒言うをドラッグしておいでよを受け取ったときの下にくっつける。こんにちは!をいくよ!に変更する

続けて右端に動くアニメーションを作っていきます。

歩き続けてほしいので、「制御」から「ずっと」をドラッグして下にくっつけます。

制御からずっとをドラッグしいくよ!と2秒言うの下にくっつける

今度は「動き」の中から「10歩動かす」をドラッグし、「ずっと」の中に入れます。

これで完成です。

動きから10歩動かすをドラッグしずっとの中にいれる

「クマ」のスプライトのプログラムは2つ作りました。改めて2つのプログラムを見てみます。

1つ目は、ステージのをクリックしたタイミングで、「クマ」のスプライトの大きさが半分(50%)になり、左端に移動します。

2つ目は、「おいでよ」のメッセージを受け取ったとき、「いくよ!」と2秒言ってから、右へ歩き出すアニメーションになります。

ステージの旗が押されたときとおいでよのメッセージを受け取ったときのそれぞれのプログラムができた

これで、クマは「おいでよ」のメッセージを受け取ったあと、「いくよ!」と表示し、右へ歩き続けるようになります。

プログラムの動きを確認してみよう

それでは、完成したプログラムを実行してみましょう。

「クマ」のスプライトのだいたいの大きさと位置に注目しながら、ステージのをクリックします。

ステージのクマはまだ大きいまま。旗をクリックする

ステージのをクリックしたあと、「ネコ」のスプライトが右へ動き出しました。
同時に「クマ」のスプライトは半分の大きさになり、左端へ移動しました。

クマのスプライトが半分の大きさになり左端へ移動。ネコのスプライトが右へ歩き出す

「ネコ」のスプライトが右端まで到達すると、「おいでよ!」の吹き出しが表示されました。

ネコのスプライトが右端へ到達、おいでよ!の吹き出しが表示

その後、「ネコ」のスプライト のプログラムはここまでで終了です。
今度は、「クマ」のスプライトから「いくよ!」の吹き出しが表示されました。

ここで、「ネコ」のスプライトから、「おいでよ」のメッセージが「クマ」のスプライトへ送られて、
「クマ」のスプライトが受け取ったのでこの動作が開始されたということになります。

クマのスプライトからいくよ!の吹き出しが表示

「クマ」のスプライトの「いくよ!」の吹き出しが消えたあと、右への移動を開始しました。

クマのスプライトが右へ歩き出す

「クマ」のスプライトも右端まで到達しました。

ステージの端に到達したあとのプログラムを作っていないので、これで終了です。

クマのスプライトが右端へ到達しプログラム終了

まとめ

今回の学びポイントを振り返ってみましょう。

  • 「メッセージ」を使えば、他のスプライトに動きのきっかけを伝えることができる
  • 「もし〜なら」を使えば、条件によってメッセージを送ることもできる
  • 「メッセージを送って待つ」にすることで、次の動作まで待機できる
  • メッセージは好きな名前でいくつでも作ることができる

今回はスプライト2つで簡単なやり取りをしましたが、慣れてくると背景や変数の操作とも組み合わせて、もっと複雑な動きも作れるようになります。

メッセージは送るだけでなく、受け取ることで連携を作れる便利な機能です。ぜひいろいろ試して、自分だけの動きのある作品を作ってみてください!