私共ぱそんこのプログラミング教室でも最近スクラッチが重くなり、子供達の書いたプログラムが動かないことがよくあります。CPUやメモリの負担も大丈夫なのにスクラッチだけが正常に動かなかったり、ブラウザ自体がフリーズしてしまうことがあります。今回はその対応策をご案内します。

1.画像をベクターデータからビットマップに変換する

子供達がスプライトのコスチュームをベクターデータで描写していた場合に消しゴムなどの影響でイラスト自体が重い可能性があります。1つでは問題のないベクターデータでも30個程度のスプライトができた場合かなり重くなる時があります。

画像の赤枠で囲まれた記述が”ビットマップにへんかん”となっている場合、現在コスチュームがベクターデータであることがわかります。ベクターデータは編集が用意で手足などパーツごとの移動や色変えが可能ですが、ビットマップに変更すると全てのパーツは一つとして扱われるので注意が必要です。
また画質の劣化もあるため綺麗なイラストを使用した場合は適しません。

一度ビットマップにへんかんしたデータは比較的にもとのものより軽くなるため、再度ベクターデータに直してもかまいません。が、パーツごとの再編集はできないのでご注意ください。

2.指定している値が大きすぎるまたは小さすぎる

児童に数値を選んでもらっていると指定する値を膨大な数字にしたり、もしくは細かすぎることが多々あります。
一つ一つでは動くのですが、その数が膨大になりプロジェクト自体が重くなります。

上記のような無理な桁のブロックそもそも動かないことが多いですが、ギリギリで動いてしまう桁のブロックだった場合にプロジェクト自体が動かなくなります。
数値の指定の際には適度な数字を入力するように誘導することが適正です。
また、”ずっと”ブロックに含まれる数字が細かい場合にも処理が遅れてしまうことが多々あります。

このブロック自体は正常に機能しますが、細かい数字を永続的に実行させるブロックは全体が重くなる要因となっています。

3.使っていないブロックが稼働し続けている

スクラッチでは上記画像のように稼働しているブロックが黄色の枠で囲まれる機能があります。
実際には非表示になって画面上にはないスプライトでも”ずっとブロック”を使用していた場合使っていないブロックが動き続けてしまっていることがよくあります。
下記のようなブロックを組み終了したスプライトをしっかり終了するようにしましょう。

4.scratchのサーバー側の不具合

非常に稀ではありますが、scratch側のトラブルで新規アカウントが作れなかったり、読み込みなど動作ができない時があります。大体数時間~1日でトラブルは解決されますが、確実に防ぎたい時にはオフライン版のscratchの導入も検討してみましょう!

今回はパソコン起因ではないスクラッチの重くなる動作の解決方法をご案内いたしました^^
今後もどんどん情報を開示していきますので、各SNSのいいねやシェアのご協力をお願いいたします。

5.クローンの削除

子ども達がscratchへの理解を深めよりいい作品を作る際に”クローン”のブロックはとても有用です。
上記のようにクローンを作ると見えない部分まで描写してクローンが残り続けてしまうため、どんどんとプロジェクトの実行が重くなっていってしまいます。

上記のようにクローンを削除するブロックも作ってクローンの上限を制限するなどの対策が有効です。

By pasonko

6 thoughts on “scratchスクラッチが重い場合の対処”
  1. この記事に関係ないのですが、「AまたはBまたはCまたはDまたは…」というようにするにはどうしたらいいでしょうか。

    1. ご連絡ありがとうございます。
      「もし~なら」ブロックの条件を演算の「または」ブロックを連結させることでできます。
      他にも他方やり方があり、
      「もし~なら~でなければ」ブロックを連結することでも確認することができます
      AでなければBでなければCなど連結させることでいずれかの条件をとれます。
      時間のある時に記事もご用意しますのでこれからも旭川ICT教育のぱそんこをよろしくお願いいたします

    1. コメントありがとうございます^^
      もし記事などにしてよければプロジェクトを実際に見て改善してみることもできますので
      必要であればご連絡ください!

  2. 質問です。

    変数を0にする
    「〈(変数)=100〉まで繰り返す
    変数を1ずつ増やす
    (変数)を(リスト)に追加する」

    のプログラムで1~10をリストに入れたいのですが、これだと約1秒かかってしまいます。どうにか0.03秒程で抑える方法はありますか?

    1. 質問ありがとうございます。
      プログラムをブロック定義で作り『画面を再描画せずの実行する』にチェックすることで時短することが可能かと思います。
      0.03秒まで届くかはわかりませんが、こちらの環境ではかなり短くなっています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です