スクラッチの手引き

スクラッチで「プログラムが動き出すきっかけ(イベント)」を学ぼう

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

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

はじめに

今回は、スクラッチで作ったプログラムを「いつ」「どうやって」動かすのか、その“きっかけ”となる「イベント」について解説していきます。作ったプログラムを発動させる「きっかけ」を設定する「イベント」について解説していきたいと思います。

スクラッチの基本操作を一通りされた方は、をクリックして、プログラムをスタートさせた経験があるかと思います。
でも実は、それ以外にもプログラムをスタートさせる「きっかけ(=イベント)」を自由に設定することができるんです。

たとえば、こんな場面でプログラムを動かすことができます。

  • スプライトをクリックしたとき
  • キーボードのスペースキーや矢印キーを押したとき
  • タイマーの時間になったとき
  • 背景が切り替わったとき
  • 他のスプライトからメッセージを受け取ったとき

これらの「きっかけ」は、スクラッチでは「イベントブロック」として用意されています。
種類はそこまで多くありませんが、工夫次第でさまざまな発動タイミングを作ることができます。

この記事では、代表的な「イベントブロック」の使い方を紹介しながら、実際にプログラムを作って「イベント」の仕組みを学んでいきましょう。

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

イベントブロックを見てみよう

まず、どんなイベントブロックがあるのか見てみましょう。

画面左側の「イベント」カテゴリーをクリックすると、イベントブロックが一覧で表示されます。
もし表示されていない場合は、画面左上の「コード」タブをクリックしてください。

イベントをクリック

「旗が押されたとき」

いちばんよく使われるのがこのブロックです。この「が押されたとき」になります。これは、ステージにある同じくのアイコンをクリックするとプログラムが発動するものになります。これは見た目も同じなのでわかりやすいかと思います。

ステージの緑の旗を押すと旗が押されたときのブロックが発動する

「○○キーが押されたとき」

キーボードのキーを押すことで発動するイベントです。最初は「スペースキー」が設定されていますが、「スペース」の部分をクリックすれば、他のキーにも変更できます。

たとえば「aキーが押されたとき」にすると、「a」を押すとプログラムが動くようになります

スペースキーが押されたときのスペースをクリックすると、発動のきかっけにしたいキーが表示されるのでクリックで選択する

「このスプライトが押されたとき」

このブロックは、スプライトがクリックされたときにプログラムを実行します。
たとえば、ネコのスプライトにこのブロックを使えば、ステージ上のネコをクリックしたときに動き出します。

ステージのネコのスプライトをクリックするとこのスプライトがおされた時のブロックが発動する

「背景が○○になったとき」

操作ではなく、プログラムの進行中に背景が切り替わったタイミングを「きっかけ」にするブロックです。

ブロック内の「背景1」の部分をクリックすると、他に設定されている背景から選ぶことができます。
背景が指定したものに変わったとき、続くプログラムが実行されます。

背景が背景1になったときの背景1をクリックし表示される背景のリストから発動のきっかけにしたい背景をクリックで選択する

「○○が△△より大きくなったとき」

音量やタイマーの値が、指定した数値より大きくなったときに発動します。

「音量」または「タイマー」を選択でき、右側の数値も変更可能です。
これは条件分岐と組み合わせて使うこともできますが、単体でもイベントとして利用できます。

下記では、「音量」となっているところをクリックし、「音量」か「タイマー」かの選択が表示されます。選択後、右側に設定されてる数値(下記図では10になっているところ)よりも大きい場合、以下に続くプロくらむが発動するということになります。

音量>10のときの音量をクリックし表示される音量かタイマーのどちらか発動のきっかけにしたいものをクリックで選択する

メッセージを使ったイベント

スクラッチでは、スプライト同士で「メッセージ」をやり取りすることができます。
これにより、別のスプライトや同じスプライト内の別の処理に、動作を連動させることが可能になります。

「○○メッセージを受け取ったとき」

このブロックは、指定されたメッセージを受け取ったときにプログラムを発動させます。
メッセージ名は自由に追加できます。「新しいメッセージ」をクリックして、名前をつけましょう。

メッセージ1を受け取ったときのメッセージ1をクリックし表示されたメッセージのリストから発動のきっかけにしたいメッセージを選択する。新しくメッセージを選択したい場合は新しいメッセージをクリックを選択し作成する

「○○メッセージを送る」

メッセージを送る側のブロックです。こちらはプログラムの中間で使います。
送りたいメッセージ名をリストから選択、または「新しいメッセージ」を作成して追加します。

メッセージ1を送るのメッセージ1をクリックし表示されるメッセージのリストから発動のきっかけにしたいメッセージをクリックで選択する。新しくメッセージを選択したい場合は新しいメッセージをクリックを選択し作成する

「○○メッセージを送って待つ」

「送る」ブロックに似ていますが、メッセージを送ったあと、そのメッセージを受け取ったスプライトの処理が終わるまで待機するという違いがあります。連携の順序をコントロールしたいときに便利です。

メッセージ1を送って待つのメッセージ1をクリックし表示されるメッセージのリストから発動のきっかけいにしたいメッセージをクリックで選択する。新しくメッセージを選択したい場合は新しいメッセージをクリックを選択し作成する

イベントブロックを実際に使ってみよう

まずは簡単なプログラムを作ってみます。
先頭に「が押されたとき」をドラッグし、すぐ下に「10歩動かす」のブロックをくっつけます。

ここまでできたら、ステージのをクリックしてください。「ネコ」のスプライトが少し右に動くかと思います。続けてをクリックと、クリックするたびに「ネコ」のスプライトは少しづつ右に動いていくかと思います。

プログラムした通り、が押されたとき」「10歩動かす」ができているということになります。

旗が押されたときと10ほ動かすのブロックの組み合わせの場合、ステージの旗をクリックするとネコのスプライトが右に10歩動く

このままではをクリックしたままになるので、赤い「六角形」のアイコンをクリックしプログラムを止めます。あと、「スプライト」の位置もこのままでは右の方にあるので、ステージ下の座標の「x」ところを「0」と入力します。

これで元に戻っているかと思います。この状態で次の「イベント」を使ったプログラムを作っていきたいと思います。

ステージの赤い六角形をクリックでプログラムを止める。スプライトのxを0と入力

複数のイベントブロックを組み合わせてみよう

今度は少し発展させて、複数のイベントブロックを使って連動した動きを作ってみます。

まず、が押されたとき」のブロックの下に「制御」から「ずっと」をドラッグしくっつけます。

制御からずっとのブロックをドラッグし旗が押されたときの下にくっつける

先ほども使った「10歩動かす」を「ずっと」の中に入れます。
試しませんが、この時点で、ステージのを1回クリックすると、「スプライト」はずっと右に進み続けます。

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

今度は、条件分岐を入れていきます。
「制御」から「もし〜なら」をドラッグし、「ずっと」の中、「10歩動かす」の下にドラッグで入れます。

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

「もし〜なら」の条件部分となる「六角形」のところに条件となるブロックを入れます。
「調べる」から「マウスのポインターに触れた」をドラッグして、「もし〜なら」の「六角形」のところに入れます。

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

「マウスのポインターに触れたなら」の「マウスのポインター」を変更したいので、そこをクリックします。
出てきた選択肢の中からより「端」をクリックで選択します。

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

「イベント」から「メッセージ1を送る」をドラッグし、「もし〜なら」(「もし端に触れたなら」)の中に入れます。

これで1つ目のプログラムは終了です。

イベントからメッセージ1を送るをドラッグしもし端に触れたならの中にいれる

2つ目のプログラムを作っていきます。

1つ目の隣などでいいので、「イベント」から「メッセージ1を受け取ったとき」をドラッグしてきます。

イベントからメッセージ1を受け取ったときをドラッグし旗が押されたときのブロックの塊のとなりに置く

そのすぐ下に「見た目」から「うーん…と考える」をドラッグして、くっつけます。

簡単ですが、これで2つ目のプログラムも完成です。

できたプログラムは、をクリックすると、「ネコ」のスプライトが右に10歩づつ動き続け、端に到達したらメッセージを送信し、メッセージを受け取ったら「うーん…」という吹き出しがでます。

本来であれば、同じスプライト内であれば、「メッセージ」を送信しなくても同じプログラムは作れますが、「イベント」を理解するためにこのようにしています。

見た目からうーん...と考えるのブロックをドラッグしメッセージ1を受け取ったときの下にくっつける
では、意図した通りにプログラムが動くのか試してみます。ステージのをクリックします。
「ネコ」のスプライトが右に動いていき、ステージの右端に達すると「うーん…」という吹き出しが出てきました。
ステージの旗をクリックするとネコのスプライトが右へ移動して行き、端に到達するとうーん...と吹き出しが表示される

まとめ

スクラッチの「イベントブロック」では、以下のようなタイミングでプログラムをスタートできます。

  • スプライトをクリックしたとき
  • キーが押されたとき
  • タイマーや音量が変化したとき
  • 背景が変わったとき
  • メッセージを受け取ったとき

特にメッセージを使ったイベントは、スプライト同士の連携に欠かせません。
少し複雑に感じるかもしれませんが、慣れてくるととても便利に使えるようになります。

また、イベントブロックを使わずに「もし〜なら」などの条件分岐で同じような動きを作ることも可能です。
目的に応じて使い分けながら、楽しくプログラミングを学んでいきましょう!