更新日:、 作成日:

スクラッチ デバッグの仕方

はじめに

Scratch (スクラッチ) 3 のデバッグの仕方を紹介します。

デバッグとは、プログラムの問題を見つけて正しい動作に修正することです。

ブレークポイントを設定して処理の流れや変数の値を確認する機能がないため、別のやり方を紹介します。

デバッグとは

デバッグとは、プログラムが正常に動いているか、不具合のある個所がどこなのかを調査して修正することです。

自分で思っているのと違う動きをするのはよくあることです。また不具合やバグと呼ばれる異常な動きをするとエラーになり、プログラムが終了してしまうこともあります。

プログラムを少し作ったらデバッグして動作を確認する。また少し作ったらデバッグする。というのを繰り返してバグがないプログラムを作ります。

デバッグの仕方

デバッグする方法として、バグがありそうなところで処理を止め、プログラムの状態を確認し、そこから 1 つずつ処理を実行して確認するのが基本です。しかしスクラッチにはそういう機能はありません。

そこで次の方法を紹介します。

  • 処理の流れを確認する
  • プログラムの状態を確認する
  • ブレークポイントを設定する

処理の流れを確認する

一般的なプログラミング言語には 1 つずつ処理を進めていくステップ実行という機能があります。しかしスクラッチにはその機能はないので、代わりに と言う ブロックと 秒待つ ブロックを組み合わせて似たようなことができます。

30

このブロックを処理が分岐する箇所に入れます。 と言う ブロックを右クリックして [複製] をクリックするとコピーできます。

31

プログラムを実行すると、どのように処理が流れたかを確認できます。

32

プログラムの状態を確認する

スプライトの位置や向き、変数などの値を確認する方法を紹介します。

最新の値を確認

チェックボックスになっているブロックがあります。これをチェックします。

20

ステージに、その現在の値が表示されます。

21

この方法で常にその値を確認できます。しかし常に最新の値が表示されるので、問題のあった時点の値が何だったのかわからなくなります。そこで次の方法を使用します。

その時点の値を確認

と言う ブロックを使用します。

say

と言う ブロックを値を確認したい場所に入れます。

22

確認したい [値ブロック] を と言う ブロックにドラッグします。

23

x座標と言う のように 1 つになります。

24

プログラムを実行すると、その値がずっと表示されます。

25

デバッグ用に追加しているのでプログラムが完成したときは忘れずに削除します。

ブレークポイントを設定する

処理を止めたい場所のことを「ブレークポイント」と言います。スクラッチでも似たようなことはできます。

まで待つ ブロックを使用します。

wait-until

まで待つ ブロックを処理を止めたい場所に入れます。

26

= ブロックを まで待つ ブロックにドラッグします。

27

適当な変数を作成し、その変数を = ブロックの左側にドラッグして 変数名=1 のように変数と違う値を入力します。

28
変数の作成については「変数ブロックの使い方」をご覧ください。

プログラムを実行すると、そこで処理が止まります。上記の「プログラムの状態を確認する」方法で紹介した方法で値を確認できます。

処理を続行するには [変数] を [値] にする ブロックに [変数名] と [1] を入力してクリックします。

29

止まっていた処理が再開されます。

よくあるバグ

よくあるバグとして、条件に一致するはずが、一致しないときです。原因は変数の値が思っているのと違うのがほとんどです。そのため変数を使用している所には、バグがあると思ったほうがいいです。

if until-loop

バグを見つけるには、処理の流れが正常か確認します。違う部分があったら、プログラムの状態を確認してなぜ違うのかを調査します。そして、それを修正します。

プログラムが複雑になるほど変数をよく使用します。変数の値が思っているのと違うとバグなので、その値を変更している所を念入りにデバッグすれば修正できると思います。