
Scratchで物語を作る方法【逐次処理と並列処理のプログラミング例】
Scratch(スクラッチ)では、キャラクターに台詞を言わせたり背景を切り替えたりして、アニメーションのような物語を作れます。この記事では「こだまでしょうか」をテーマにしたサンプルプロジェクトを例に、逐次処理・並列処理の考え方とプログラミングのポイントを解説します。
動作確認の参考URL:スクラッチ(Scratch)プロジェクト「こだまでしょうか echo」(外部リンク)
サンプルプロジェクト「こだまでしょうか」のスクリプト
このプロジェクトは「ステージ」「スプライトA(Giga)」「スプライトB(Pico)」の3要素で構成されています。それぞれのスクリプトを確認しましょう。
ステージのスクリプト

スプライトA(Giga)のスクリプト

スプライトB(Pico)のスクリプト

逐次処理と並列処理とは
今回のプログラミングの核心は「逐次処理」と「並列処理」の使い分けです。映画・ドラマを例に考えると理解しやすくなります。
逐次処理:脚本の順番通りに動く
映画の脚本には、セリフやト書きが一行ずつ順番に書かれています。「AがセリフAを言い終わったら、BがセリフBを言う」というように、1つの処理が終わってから次の処理に進む仕組みが逐次処理です。Scratchでは「〜を送って待つ」ブロックを使うことで実現できます。
並列処理:「よーいスタート」で一斉に動く
撮影現場では「よーい、スタート!」の掛け声とともに全員が同時に演技を始めます。Scratchでは、ひとつのメッセージや背景の切り替えをきっかけに、複数のスプライトが同時に動き出すのが並列処理です。
「イベント」ブロックの6種類
Scratchで逐次処理・並列処理を制御するのが「イベント」ブロックです。スクリプトの先頭にしか置けないという特徴があります。基本の6種類は以下のとおりです。
- 緑の旗が押されたとき
- (任意のキーボードの)キーが押されたとき
- このスプライトが押されたとき
- 背景が(任意のステージ)になったとき
- (音量やタイマー)>(任意の数値)のとき
- (任意のメッセージ)を受け取ったとき
プログラミングのポイント解説
メッセージイベントの入れ子構造
このプロジェクトでは、ステージ・スプライトA(Giga)・スプライトB(Pico)をメッセージイベントでつないでいます。
ステージの「(01_会話スタート)を送って待つ」がプロジェクト全体を包括します。その中でスプライトAとBが「遊ぼう」「ばか」「もう遊ばない」の3回のメッセージイベントを順番に処理します。これが逐次処理の実例です。
スプライトB(Pico)は、Aから送られてくる3回のメッセージをそれぞれ独立したスクリプトで受け取り、処理が終わるたびに終了を返す仕組みになっています。
背景の切り替えをきっかけにした並列処理
「(01_会話スタート)を送って待つ」が完了するとステージの背景画像が切り替わります。これをきっかけに、スプライトAとBが「背景が(Hearts)になったとき」ブロックで同時に動き出します。これが並列処理の実例です。
それぞれのスプライトは表情の変化・セリフ・1秒待ちを組み合わせており、見る人に変化が伝わりやすい作りになっています。
実は「ほぼ同時」の並列処理
背景切り替えで2つのスプライトが同時に動いているように見えますが、厳密には微妙なズレがあると言われています。ただし見た目には同時に見えるため、実用上は気にする必要はありません。
まとめ:Scratchで物語作りを楽しもう
Scratchでは逐次処理と並列処理を組み合わせることで、本格的な物語アニメーションを作ることができます。脚本と同じようにキャラクターの動きを設計し、メッセージや背景切り替えでつなぐのがポイントです。
思い思いのオリジナルストーリーをプログラミングして、ぜひ一般公開してみましょう。

