gracetory’s blog

東池袋にある合同会社グレストリのエンジニアブログです

小学校でプログラミング教育が必修化されるのでScratchを触ってみた

f:id:grnishi:20200124140147p:plain

はじめに

小学校の頃は石ころを家まで蹴り続けたり、形の良い枝を見つけては「エクスカリバーゲット」とか言ってみたり、目を瞑ってどこまで進めるか競争したりと論理的思考のかけらも養われていないがプログラマをやっておりますgrnishiです。こんにちわ。

本題

さて、ご存知だとは思いますが2020年度から小学校でプログラミング教育が必修化されます。で、いろいろ見ていたら下記のようなサイトがあるのを知りました。

miraino-manabi.jp

このサイトが我が国のIT教育の限界を示している気分になったのですが、それは良いとしましょう。

いろいろ読んでいますと、教材にはScratchを使うとありました。Scratchが世に出てきたときは、小学生でプログラム書いている子がいたりと色々話題になったのを思い出します。

scratch.mit.edu

せっかくなら日本製のツールでも良かったんじゃないかな。MOONBlockとか。

さて、わたくしはこれまでいくつかの言語は触ってきましたが、実はビジュアルプログラミング言語ってほとんど経験がなく、Max/MSPぐらいなのです。Max/MSPも相当マイナーなので知らない人も多いかと思います。

というわけで、scratchを触ってみようかと思います。

Scratchの基本

Scratchにはステージとスプライトの2種類があります。それらにプログラムを埋め込んでいく事で全体を制御していきます。

デフォルトでは猫スプライトが置かれています。というわけでまず猫スプライトを動かしてみます。

f:id:grnishi:20200124000549p:plain

普通のプログラムで書くと

for (i = 0; i < 10; i++) {
  x += 10;
  sleep(0.1);
}

こんな感じですかね。

if文を使ってみよう

if文といえばFizzBuzzですよ。というわけでFizzBuzzを作ってみました。

f:id:grnishi:20200124142041p:plain

elseif の書き方がわからなくて悲しくなってきました。

猫にsinの動きをつけよう

最初から用意されている猫スプライトを、sin曲線に合わせて動かしてみます。

f:id:grnishi:20200126233112p:plain

だからなんだって話ですが、sinやcos、eなどの数学関数も用意されています。

BGMを入れてみよう

Scratchでは簡単にBGMを入れる事が出来ます。単純に

f:id:grnishi:20200126233509p:plain

これだけでも良いのですが、ゲームではシーン毎にBGMを変えたりする必要があります。

フィールドのBGM、バトルのBGM、演出の時のBGMなどなど。

それには少し工夫が必要になりまして、音スプライトを作りまして、そのスプライトの中に

f:id:grnishi:20200126233616p:plain

こんな感じにしました。クローン作成時に無限ループでBGMを鳴らし、シーン変更時にはメッセージを送ってクローンを削除してしまうというやり方です。

どこからでもクローンは作成できますが、削除は自分自身しか出来ないというのが少々イケてないのですが。

プロジェクトを保存するには

Scratchは誰でもプログラムを書いたりできますが保存する事ができません。保存するにはユーザ登録が必要になります。

ユーザ登録をするとプロジェクトの保存だけでなく他の人と共有する事でみんなに遊んでもらえるようになります。

f:id:grnishi:20200125144817p:plain まずは右上の「Scratchに参加しよう」をクリック。

f:id:grnishi:20200125144823p:plain 「名前」と「パスワード」を入力する。

f:id:grnishi:20200125144826p:plain 住んでいる場所。ほとんどの人はJapanですよね。

f:id:grnishi:20200125144830p:plain 誕生日。何かプレゼントもらえるんですかね。

f:id:grnishi:20200125144833p:plain 性別。海外のサービスなのでこの辺はある意味新鮮ですよね。いずれは日本もこんな感じになるでしょう。

f:id:grnishi:20200125144839p:plain 最後にメールアドレスを入力すれば完了です。

最後に

他にもScratchには翻訳や音声合成、LEGOとの連携など様々な拡張機能が用意されています。

また、膨大な数の他人の作品のソースコードも見る事ができますので割と敷居は低そうです。

プログラムに慣れている人はどうしても頭の中でプログラムを書きながらオブジェクトを配置していく事になりそうですが、こういうビジュアル言語から入った人がどういう風に考えてプログラムを構築していくのか?という事は興味深いテーマです。