子供向けプログラミング言語Scratch(スクラッチ)-Scratchはエラーにおおらかなプログラミング言語

子供向けプログラミング言語 Scratch(スクラッチ)エラーに関するお話しをします。

エラー

エラーとは、コンピューターを使う中で出てきた誤りのことです。

デバッグ

間違っている箇所を探して修正する作業のことです。

Scratchのエラーへの対応

Scratchエラーに関して非常におおらかな対応をするプログラミング言語です。
エラーメッセージや警告音などがほとんど出されません。
これは、多分、子供向けに作られた言語だから。
間違いの指摘が少ないので、子供が、そして、大人も、めげることなく試行錯誤を繰り返すことができる言語です。

一般にプログラミング言語のシステムは、エラーを見つけるとエラーメッセージを出したり実行などを途中で強制的に止めたりします。
これは、コンピューターをプログラムによって壊さないようにするためであって、この仕組み自体はとても大事なものですが、初心者には少しきつく感じることもあります。

Scratchは結果を及ぼせる範囲が音やステージへの画像の出力などに限定されているので、コンピューターをプログラムから守りやすくなっているのだろうと想像できます。
子供が雑に作るプログラム=プロジェクトでもできる限り最後まで動かしてくれるので、頻繁にエラーを指摘されることによって必要となるデバッグなどのわずらわしさやバツの悪さなどから子供がやる気や自信を失ってしまうような心配がなく、安心して学習を続けさせられるプログラミング言語です。

Scratchエラーをあまり出さないことを示す、具体的な例を2つのプロジェクトで見ていきます。

エラーを出されないプロジェクト例1

1つめのプロジェクトでは、整数の0割りを3回行います。
一般に、ソフトウェアでは、整数割る0を行うとエラーを出され、ものによっては強制終了させられる場合もありますが、Scratchは整数割る0にエラーを出さないことをこのプロジェクト例で見てみます。

このプロジェクトでは、
まず、10/0を行い、実行が続いているかを確認するために猫の色の効果を変えています。
次に、0/0を行い、実行が続いているかを確認するために猫の色の効果を変えています。
最後に、-10/0を行い、実行が続いているかを確認するために猫の色の効果を変えています。

一般的なプログラミング言語ではデータ型を厳格に区別して使用することが要求されます。
例えば、10や0、-10は整数であり、整数同士の演算では結果も整数になります。
Scratchではデータ型を柔軟に適用し、今回のこれらの(整数同士の演算の)計算結果を、ほとんどのCPUやソフトウェアなどで採用されているIEEE 754(IEEE浮動小数点数演算標準)での結果と同じにしてくれます。
具体的にIEEE754では、浮動小数点xを使った計算で、xが正のとき、x/0は無限大(infinity)、xが0.0のとき、x/0は数でない(NaN:Not a number)、xが負のとき、x/0は-無限大(-infinity)がその結果となります。
全体的にも、Scratchはデータ型を柔軟に扱うプログラミング言語です。

では、1つめのプロジェクト例を実行してみましょう。
以下のリンクをクリックすると、IT企画研究所が作って共有にしておいたこのプロジェクトオンラインエディターで開くことになり、スクリプトも見ることができます。
緑の旗をクリックして実行します。
https://scratch.mit.edu/projects/110704614/

実行のみ行いたい方は、下の埋め込みのステージから緑の旗をクリックして実行してください。

エラーを出されないプロジェクト例2

2つめのプロジェクトでは、猫のスプライトを永遠に右に進めています。
一般に、他のプログラミング言語では、永遠にある値などが増え続けたり減り続けたりするプログラムを作って実行すると、ある限度に達して、強制的に実行にストップがかかります。
このことはそのプログラムが使用を許されているコンピューター内部の特定の領域を超えてデータを書き変えてしまうことを阻止するために必要なことです。
Scratchで、永遠にステージを右に進むということは、ステージのx座標の上限の数値240を超えてさらに大きな数の座標である右の位置にどんどん進めようとすることになりますが、Scratchはそれを強制的に止めることなく、実行を続けます。
実際の見た目の動きでは、ステージの右側の見えなくなるほど向こうまで移動するわけではなく、ステージ右端のちょっと手前あたりで移動し続けているように居続けるだけです。

そこで、是非覚えていただきたいのは、自分で開始したプロジェクト実行を途中で止める方法です。
ステージ右上の赤い八角形のボタンが強制終了ボタンになっていて、プロジェクト実行途中にこのボタンをクリックすれば、実行を終了させることができます。

また、プログラミング時に実行時のスプライトの位置のカーソルでの操作をあえて禁止していなければプロジェクトの途中や、プロジェクトの終了後、スプライトの図の大半がステージの枠から外れてしまった場合でも、カーソルでスプライトのどこか一部分でも触ることができるくらいステージスプライトの図の一部が残って表示されていれば、エディターの中ではスプライトの図をドラッグしてステージ上の違う位置に持ってくることは可能ですが、スプライトの形などによっては、完全にステージからその姿を隠してしまう場合もあります。
そのときは、一旦実行を止めてから、ブログ記事「実行開始時の絵の位置を決める方法」 を参考にしてスプライトの位置を[動き]グループの[x座標を○、y座標を○にする]ブロックを使って調整したりします。

今回用意したプロジェクト例のように、スプライトを適当な位置(今回は座標(0,0))に移動させるためだけのスクリプトをあらかじめ作っておくのもよいと思います。
そうすれば、エディターの中だけでなく、埋め込みのステージで実行するときでも、今回用意した適当な位置(座標(0,0))に移動するためのスクリプトの機能で、スペースキーを押せばいつでも(右への移動の最中でも)、猫のスプライトが座標(0,0)に移動します。

では、2つめのプロジェクト実行してみましょう。
以下のリンクをクリックすると、IT企画研究所が作って共有にしておいたこのプロジェクトオンラインエディターで開くことになり、スクリプトも見ることができます。
緑の旗をクリックして実行を開始します。
実行を止めたいときは、ステージ右上の赤い八角形のボタンをクリックします。
猫のスプライトを真ん中(座標(0,0))に戻したいときは、スペースキーを押します。
https://scratch.mit.edu/projects/110704242/

実行のみ行いたい方は、下の埋め込みのステージから緑の旗をクリックして実行してください。
実行を止めたいときは、ステージ右上の赤い八角形のボタンをクリックします。
猫のスプライトを真ん中(座標(0,0))に戻したいときは、スペースキーを押します。

まとめ:
Scratchは、極力エラーへの反応を出さない仕様になっています。
安心して大胆なプログラム=プロジェクトを子供たちと共に作ってみてください。

コメントを残す