
Scratchで物語を作る方法|逐次処理と並列処理のプログラミング解説
Scratch(スクラッチ)を使うと、キャラクターにセリフを話させたり場面を切り替えたりして、まるでアニメーションのような物語を作り出せます。この記事では「こだまでしょうか」をテーマにしたサンプルをもとに、逐次処理と並列処理という2つの処理の考え方とその実装方法をやさしく解説します。
実際の動きは以下のプロジェクトで確認できます:スクラッチプロジェクト「こだまでしょうか echo」(外部リンク)
サンプル「こだまでしょうか」のスクリプト構成
このプロジェクトは「ステージ」「スプライトA(Giga)」「スプライトB(Pico)」の3要素から成り立っています。各要素のスクリプトを見ていきましょう。
ステージのスクリプト

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

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

逐次処理と並列処理の考え方
このプロジェクトの要となる概念が「逐次処理」と「並列処理」です。映画・ドラマ制作に例えると、それぞれの違いが直感的につかめます。
逐次処理:前の処理が終わったら次へ進む
映画の台本では、セリフやト書きが順序通りに並んでいます。「AがセリフAを言い終えてから、BがセリフBを話す」という流れがそのまま逐次処理のイメージです。Scratchでは「〜を送って待つ」ブロックを使うことで、前の処理の完了を待ってから次に進む順番制御を実現できます。
並列処理:合図と同時に複数の処理が走り出す
撮影現場で「よーい、スタート!」の声とともに全員が一斉に動き出すシーンを思い浮かべてください。Scratchではメッセージの受信や背景の切り替えを合図に、複数のスプライトが同時に動き出す仕組みが並列処理にあたります。
「イベント」ブロックの6種類
逐次処理・並列処理の両方を制御するのが「イベント」ブロックです。スクリプトの先頭にのみ配置できるブロックで、基本となる6種類は次のとおりです。
- 緑の旗が押されたとき
- (任意のキーボードの)キーが押されたとき
- このスプライトが押されたとき
- 背景が(任意のステージ)になったとき
- (音量やタイマー)>(任意の数値)のとき
- (任意のメッセージ)を受け取ったとき
プログラミングの要点を解説
メッセージイベントを入れ子にした逐次処理
このプロジェクトでは、ステージ・スプライトA(Giga)・スプライトB(Pico)の3者をメッセージイベントで連結しています。
ステージの「(01_会話スタート)を送って待つ」がプロジェクト全体の起点です。その中でスプライトAとBが「遊ぼう」「ばか」「もう遊ばない」という3段階のやり取りを順番通りに進めていきます。これが逐次処理の具体的な形です。
スプライトB(Pico)は、Aから送られる3つのメッセージをそれぞれ独立したスクリプトで受け取り、処理が完了するごとに終了を返す構造になっています。
背景切り替えをきっかけにした並列処理
「(01_会話スタート)を送って待つ」がすべて終わると、ステージの背景が自動的に切り替わります。この瞬間を合図に、スプライトAとBはそれぞれ「背景が(Hearts)になったとき」ブロックから一斉に動き出します。これが並列処理のデモンストレーションです。
各スプライトは表情の変化・セリフの表示・待機時間を組み合わせており、視聴者に動きの変化が伝わりやすい演出になっています。
並列処理は実際には「ほぼ同時」
背景切り替えで2つのスプライトが同時に動いているように見えますが、厳密には処理にわずかな時間差があると言われています。ただし視覚的にはほぼ同時に見えるため、実用上は問題になりません。
まとめ
Scratchでは逐次処理と並列処理を組み合わせることで、キャラクター同士が掛け合いをするような物語アニメーションを作れます。台本のようにキャラクターの行動を設計し、メッセージや背景切り替えで各スプライトをつなぐのがポイントです。
オリジナルのストーリーをプログラミングして、ぜひ作品を公開してみましょう。

