サイトについて      連絡先   検索

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

はじめに

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

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

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

  • 目次
    • デバッグとは
    • 処理の流れを確認する
    • プログラムの状態を確認する
    • ブレークポイントを設定する
    • よくあるバグ