更新日:、 作成日:

スクラッチ ブロック定義、メソッドや関数の作成

はじめに

Scratch (スクラッチ) 3 のブロック定義、メソッドや関数を作成する方法を紹介します。

メソッドとは複数の命令をまとめて 1 つの処理にできます。

引数を渡したり、同じ処理を再利用できるなどとても便利です。

Public メソッドを定義するには「Public メソッドを定義する」をご覧ください。

ブロック定義とは

my

ブロック定義とは、自分でブロックを作成できます。それに他のブロックを追加して 1 つの処理を作ります。一般的なプログラミング言語では「メソッド」や「関数」と言います。

メソッドや関数

メソッドとは処理を 1 つにまとめたものです。「関数」と呼ばれることもあります。

例えば 歩動かす ブロックもメソッドと言えます。スプライトを動かすために内部では複数の命令が実行されているはずです。

一般的なプログラミング言語では、すべての処理がメソッドで動いています。メソッドから別のメソッドを呼び出し、そこからまたメソッドを呼び出すというのを繰り返して 1 つのプログラムが完成します。

メソッドを作成すると良いことがあります。詳しくは最後に紹介します。

ブロックを定義する

ブロックを定義するには、ブロックを作成する必要があります。

定義ブロックを作成

[ブロックを作る] をクリックします。

19

[ブロック名] を入力します。必要な数だけ [引数] や [ラベル] を追加して [OK] をクリックします。詳細は次に紹介します。

26

次のようなブロックがコードに追加されます。これを「定義ブロック」や一般的には「メソッド」と言います。これに他のブロックを追加して 1 つの処理を作ります。

20

それを呼び出すブロックも作成されます。これを実行すると定義ブロックが処理されます。

25

ブロック名

ブロック名は定義ブロックに付けられた名前です。「ジャンプ」や「一回転」のように、その処理がわかるような名前を付けます。

21

引数

引数とは、それを呼び出すときに渡された値のことです。それを使って他のブロックに値を設定できます。

[数値またはテキスト] には 歩動かすと言う ブロックのように、入力された数字や文字を受け取れます。

22
27

[真偽値] には もし~なら ブロックのように、入力された条件の結果を受け取れます。

23
28

引数の値を使うには、それをドラッグします。

29

ラベル

[ラベル] はただの文字です。 歩動かす ブロックの「歩動かす」と同じです。

24
30

再描画せずに実行する

チェックすると、処理中の状態を見せないで最後の状態だけ表示されます。

次のようにすると、通常なら 10 歩ずつ動くのを 10 回繰り返して見えます。[再描画せずに実行する] をチェックすると、1 回で 100 歩動いたように見えます。

31

定義ブロックを削除

コードに追加されている定義ブロックを削除すると、それを呼び出すブロックも削除されます。

20

コードの中にそれを呼び出すブロックを使用しているときは、先にそれを削除しておく必要があります。

25

定義ブロック

method method-text method-boolean

この ブロック名 が呼び出されたときに処理をします。引数に 数値文字条件 を受け取れます。

このブロックの処理をするには 呼び出し ブロックを使います。処理を 1 つにまとめたいときに使います。

一回転します。

32

action action-text action-boolean

ブロック名 の定義ブロックを呼び出します。引数に値を入力します。

定義ブロックの処理を呼び出したいときに使います。

[歩動かす] ブロックと同じことを定義ブロックで作成します。

33

スプライトが指定した歩数だけ動きます。

34

メソッドの良いこと

メソッドを作成すると次のような良いことがあります。いずれもバグを作らないことにつながります。

  • 処理に名前を付けられる
  • 同じ処理を再利用できる
  • 修正が簡単

処理に名前を付けられる

次のコードが何をするのか、わかりますか?

35

名前を付けると「一回転」するだろうということが、すぐにわかります。

32

このように処理に名前を付けることで、何をしているのかわかりやすくなります。

プログラムのすべてを自分で作るのではなく、複数の人で 1 つのプログラムを作ることが当たり前です。他の人が作った処理を修正したり追加したりすることがよくあります。その時に処理に名前が付いていれば、プログラムを理解する助けになります。

仕事では 1 つのミスが大きなバグになることがあります。ミスしないためにも、わかりやすいプログラムを作成することは大切なことです。

同じ処理を再利用できる

1 キーを入力してスプライトを一回転させたいとします。そこで次のようにコードを作成しました。

36

後から 2 キーを入力したら二回転させたくなりました。そこで次のようにコードを作成しました。

37

これでも動作します。しかし同じように回転する処理が 2 つ作られました。

同じような処理が複数あることの問題点は、どこかが違うかもしれないということです。全く同じように作ったつもりでも 1 箇所だけ違っていたりすることがあります。これはバグです。

そこでメソッドに回転する処理を作成します。

38

これを各キーが入力したときに呼び出すと、確実に同じように回転できます。

39

このメソッドの処理が正しく動作するかを「1 度」確認すれば、それを呼び出している他の場所でも正しく動作するのがわかります。同じ処理を呼び出しているだけなので。

このようにいろいろな場所から同じ処理をしたいことはよくあります。その処理をメソッドで作成すれば確実に同じ処理にできます。

修正が簡単

先ほどの一回転する処理に「目が回る」と表示したくなりました。メソッドを使わないとすべての回転する処理を修正する必要があります。修正箇所が多くなると 1 つだけ忘れたり、間違って修正するかもしれません。これもまたバグです。

メソッドなら、1 つのメソッドの処理を修正するだけで済みます。

40

このように処理を後から修正することはよくあります。そのときにメソッドを作成していれば、簡単に修正できます。