プログラミング初心者の子供に何を教えたらいいの?とお悩みの保護者のためのScratch(スクラッチ)の入門講座。Scratchで猫の動かし方はわかったけど・・・次にどんなことをしたらいいの?という疑問にお答えするシリーズです。
今回は「リスト」について解説します。リストは変数同様、使いこなせるようになるととっても便利です。
1. リストって何?
Scratchのリストの使い方をまずは解説します。
1-1. リストとは?
リストとは、変数の箱がたくさん並んでいるものです。箱の数は自由に増やしたりすることができます。また、箱の中には数値や文字列などのデータを入れることができます。
▼リストのイメージ図 「得点」という名前のリストの中に数値データが入っています。
Scratchでは、スクリプトタブの「データ」から「リストを作る」ボタンからリストを作ることができます。
上の画面で「OK」ボタンを押すと、「テストリスト」という名前のリストが追加されました。最初はリストの中身は空っぽです。
リストの中に「箱」を追加するためにはリストの左下にある+ボタンを押します。すると箱が追加されていきます。「箱」は他のプログラミング言語では「要素」と言います。Scratchではこの「要素」に相当する用語がないみたいですので、この記事では「箱」と呼びたいと思います。
箱の数のことをリストの「長さ」と言います。
<配列の特徴>
・あらかじめ、配列の箱の数は決まっている。
・箱の中へのデータのアクセスが早い
・途中の箱と箱の間ににデータを入れる時は、中身を一旦ずらさないといけないので大変
<リストの特徴>
・リストの箱の数は増やしたりできる
・箱の中へのデータのアクセスは遅い
・箱と箱の間にデータを入れることが簡単にできる。
Scratchで取り扱うのは「リスト」の方だ、と覚えておいてください。
ではリストができたので、次の項目からリストの中にデータを入れる方法について見て見たいと思います。
1-2. リストに値を入れる
リストに値を入れる方法はいくつかありますので、その方法をご紹介します。
(1)既にある「箱」に新しくデータを入れる
直接リストを操作する方法です。リストの「箱」にカーソルを合わせて、直接、文字を打ち込んでいけばリストの中に値が入ります。
もちろん、プログラムのブロックを使ってリストの「箱」に値を入れることもできます。その場合はこちらを使います。
「置き換える」という言葉に違和感を覚えるかもしれませんが「からっぽ」の状態を文字列に置き換えている、という意味になります。上のプログラムブロックをクリックして実行すると、空だったリストの3番目には下記のようにデータが入ります。
(2)データと箱を一緒に追加する
上の図のリストの最後に箱とデータを一緒に追加することもできます。このブロックを使います。
こちらを実行したあとのリストはこのようになります。
リストの途中にデータを追加したいときは、こちらのブロックを使いましょう。
こちらを実行すると、リストの長さが増えましたね。リストの途中に箱とデータが同時に入ります。
1-3. リストのデータを書き換える
リストの中身を書き換えるには、以下のブロックを使います。
このブロックを実行すると次のようになります。
1-4. リストのデータを消す
以下のブロックを実行すると、リストから箱ごとデータを消すことができます。
こちらのブロックを実行すると、次のようになります。
先ほどの「かきくけこ」という箱とデータが消えて、長さが4に減りました。
ブロックを使わずに直接リストを操作して消すこともできます。箱にカーソルを合わせると、箱の右側に×マークが表示されるので、これをクリックします。
×マークをクリックすると、箱とデータが消えました。
1-5. リストの中身を使う
リストの箱の中のデータを使うには、以下のブロックを使います。
このブロックを他のブロックに入れてみましょう。例えばこのようにしてみます。
このプログラムを実行すると、ネコがリストの中身を言いました。
2. リストを使ったプログラム
リストの使い方は簡単でしたね。では、リストはどんな時に使ったらいいのでしょうか?変数ではダメなのでしょうか?リストを使った時と変数を使った時のプログラムを比較してみたいと思います。
2-1. データを呼び出すのが便利
まず、食べたいものをメニューの中から選んでもらい、答えをスプライトが返すという会話プログラムを作ってみます。
メニューはリストで作成しました。
食べたいものを、メニューの番号で答えてもらえば、次のようなブロックを使うことでリスト「メニュー」の中のデータを簡単に呼び出すことができます。
では、これを変数で作ってみたらどうなるでしょうか?変数で作ってみるとこうなります。
「もし〜なら」ブロックをたくさん使うことになり、ちょっとプログラムが長くなりましたね。このような場合にはリストを使った方が楽だということがお分かりいただけたでしょうか?
キャラクターを動かすことが中心のScratchの世界では、このような形でリストを使うプログラムを作ることはあまりないと思います。ですが、大人の世界(業務用のソフトウェア・アプリケーション)ではこのような形でデータを取り出したりしています。変数より配列を使うことの方が多いのです。例えば、顧客情報というリスト(もしくは配列)に名前、住所、電話番号、といった情報をまとめておくと情報を簡単に取り出すことができます。また、データベースに情報を登録するときも、リストごと一括で登録できるので取り扱いが楽になるのです。
2-2. ループを使う時に便利
次に、ループを使って全てのメニューを読み上げてくれるプログラムを作ってみます。
まずは、リストを使った例です。
「番号」という別の変数を使います。そして、番号が1づつ変えていき、番号番目の
変数を使うとこのようになります。
あれ?これだとなんだか変数を使った方が楽そうに見えますね。では、もしメニューが多かったらどうでしょうか?メニューの数を15個まで増やしてみましょう。
メニューが15個の時、リストを使ったメニューの読み上げプログラムはこうなります。
前と変わりませんね。じつは、リストの中身が増えてもプログラムは変えなくていいんです!これがリストを使うメリットです。
一方、変数を使うとどうなるかというと・・・
プログラムが長くなりました。変数を作るのも、変数の中にデータを入れるのも結構大変でした・・・・。
3. Scratchのリストを使った面白プログラム
Scratchならではのリストを使った面白いプログラムがありますので、いくつかご紹介したいと思います。
(1)NHK for スクールの作品
リストをつかったラーメン屋さんです。
https://scratch.mit.edu/projects/168635541/
(2)億万長者をめざせ!
リストを使ったミニゲームがたくさんあります。
https://scratch.mit.edu/projects/169011055/
リストの使用例:宝くじ、買取など
特に宝くじでは、当選番号が上から順にリストに入っていく様子が秀逸です。
(3)リストでジャンプ
リスト内を■がジャンプするという、不思議なプログラム。リストは通常、文字や数値などのデータを取り扱いますが、画像っぽくリストを使うという逆転の発想がユニークです。
https://scratch.mit.edu/projects/91907978/
4. まとめ
今回は、リストの使い方と使用例について解説しました。
「似たようなデータ」をまとめて処理したい時に使います。変数を使った方がいいのか?リストを使った方がいいのか?を迷った時は、どちらの方がプログラムが簡単になるか、両方試してみると良いと思います。試すということが、プログラミング学習ではとても大事です。
正解を覚えるのではなく、プログラミングを体験していく中で身につけていけると良いのではないでしょうか。