完成サンプルをみる
動画を見る
スクラッチはアメリカのMIT(マサチューセッツ工科大学)で開発されたビジュアルプログラミング言語です。
世界中のたくさんの人に利用されており、2020年からはじまった小中学校のプログラミング教育の教材としても採用されました。
スクラッチの利用はWEBブラウザを使って行います。プロジェクトを作るだけでなく、作ったプロジェクトを公開したり、他の人が作ったプロジェクトを見たり、触ったりすることができます。
通常プログラムは、コードを書くことでプログラミングを行いますが、スクラッチはコードブロックという処理が書かれたブロックを重ねることで、プログラミングを行います。
簡単ではありますが、プログラム的思考がしっかりと組み込まれており、プログラミング勉強の第一歩として最適なプログラムです。
スクラッチではプログラミングで作成する1つの作品を、プロジェクトと言います。図はスクラッチのプロジェクト作成画面です。この画面を一つ一つ見ていきましょう。
作っている作品の結果を確認する最も重要なエリアです。追加したスプライト(キャラクター)や背景、作成したプログラムによる動きなどを確認することができます。
スプライトとはプロジェクトに配置するキャラクターです。初期状態では、キャラクターのネコが選択されています。このエリアで、スプライトの選択、新規追加、削除、状態の変更などを行います。
ステージの背景を指定するためのエリアです。このエリアで、背景の追加、背景画像のアップロードなどを行います。
選択中のスプライト(または背景)に対して、コードブロックを追加するためのエリアです。コードブロックはいくつかのカテゴリに分かれており、左側のカテゴリ名をおすとコードの種類が変わります。
ブロックパレットから追加したコードブロックに対する指定をするためのエリアです。コードブロックの合体、分解、順番の変更、値の変更など、最もよく使うエリアと言えるでしょう。
コスチュームとは、スプライトに属する別の状態の事で、スプライトに2つ以上の状態をもたせ、それをプログラムで切り替えてることで、動きをつけることが可能です。このエリアでコスチュームの追加、編集、順番の変更、削除などの処理を行います。
コスチュームと同様に、ステージの背景の中に別の背景を用意し、プログラムで切り替えることができます。このエリアで背景の追加、編集、順番の変更、削除などの処理を行います。
選択中のスプライト(または背景)に対して、音の指定をするためのエリアになります。このエリアで、音の追加、音色の加工、順番の変更、削除などの処理を行います。
複雑な処理ができるプログラムですが、基本的には、順次型、分岐型、反復型の3種類の動きを組み合わせて作られています。
一般的には、3つの動きをフローチャートを使ってあらわしますが、スクラッチにはブロックコードがあるので、3つの動きとブロックの関係について説明します。
順次型は最も一般的な処理で、上から順番に一つずつ実行します。
スクラッチでは、この図のように、普通に(他のブロックを囲まないで)ブロックを重ねた状態が順次型になります。
順次型は常に同じ処理を行うので、状況によって違う処理を行うことはできません。しかし実際のプログラムでは、状況によって別々の処理をさせたい場合はたくさんあります。そのような場合に使うのが分岐型の処理で、条件を満たした場合にのみ処理を実行します。
スクラッチでは「もし」というブロックが分岐型にあたります。「もし」のブロックで挟まれたブロックは、指定した条件を満たしているときのみ実行されます。
一般的なプログラム言語では、if文が分岐型として使われます。
同じ処理を繰り返して実行したいときに使うのが反復型になります。
スクラッチでは「ずっと」というブロックが反復型にあたります。「ずっと」のブロックに挟まれたブロックの処理は、連続して実行されます。
これら順次型、分岐型、反復型がプログラムの基本的な3つの動きですが、別々に使うのではなく、実際には組み合わせて使います。
例えば分岐型の中に、順次型や反復型を入れたりはもちろん、さらに分岐型を入れることもよくあります。型の組み合わせや、中に入れる回数に制限はありません。
プログラムが実行されるタイミングのことをイベントと言います。イベントは自分で作るというよりは、プログラムに最初から用意されていて、その中から最も適切なイベントを選んで利用します。
スクラッチではイベントの指定もコードブロックを使います。イベントのブロックは、ブロックパレットの中のイベントカテゴリに用意されています。
スクラッチで利用されるイベントは大きく2つに分けて考えることができます。
スクラッチで作った作品は、緑色の旗のボタンを押すことで実行されます。スクラッチでは、まずこのボタンが押されたイベントでプログラムが動くようにします。
そのためにコードブロックを用意し、その下に旗のボタンが押されたタイミングで実行させたいブロックをつなぎます。
複数のスプライトや背景を同時に動かす場合は、それぞれのスプライトに対しコードブロックを用意します。
もうひとつのタイプのイベントは、ユーザーのキーボードやマウスによる操作で発生するイベントです。
それぞれのイベントごとにコードブロックを用意し、実行する処理をつなげます。例え実行する処理が少なくても、用意したいイベントの数だけ、コードブロック群ができることになります。
プログラムは高速で計算ができ、一度覚えたものは絶対忘れません。しかし記憶するように命令を設定しないと、一瞬で(次の処理で)記憶から消去します。
プログラムで何かを記憶させたいときに使用するのが変数です。変数は値を記憶するための箱のようなものです。
スクラッチではブロックパレットの変数カテゴリから変数を作ります。それを「もし」ブロックの条件に指定するなど、より高度な処理を作ることができるようになります。
一般的にプログラムは、初期化とメインの処理の2つで構成されることが多いです。「スペースキーが押されたらボールが上から下に落ちる」という処理を例に考えてみましょう。
メインの処理の前に、状態などをリセットして初期状態に戻す処理が初期化です。この例では、ボールをスタート地点に移動するという処理が初期化にあたります。
そして「ボールが上から下に落ちる」という処理がメインの処理になります。メインの処理は初期化のあとに実行させます。