さくらインターネットでは、さまざまな企業と共同で「KidsVenture」という非営利団体を運営しています。
KidsVentureは2015年に設立され、子ども向けの電子工作・プラグラミング教室を運営しています。電子工作・プログラミングを通じて「ものづくり」の楽しさを伝え、挑戦意欲溢れる次世代の創出に貢献することが目的です。子どもたちの将来の可能性を広げるきっかけとなることを目指しています。
新型コロナウイルスの影響で対面での活動ができずにいましたが、2021年10月15日、約2年ぶりに子ども向けプログラミング教室を開催しました!
開催した場所は、埼玉県にある「埼玉県立越谷特別支援学校」です。こちらの学校は「障害者等が高等学校に準じた教育を受けること」と「学習上または生活上の困難を克服し自立が図られること」を目的としています。
この埼玉県立越谷特別支援学校の高校1年生と2年生に、プログラミングを体験してもらいました。みなさんプログラミング未経験です。
KidsVenture講師のあいさつ
この日講師をつとめるのは、さくらインターネットの尾村亮多です。尾村はKidVentureの代表でもあります。
「身のまわりにあるコンピュータはどのようなものがあるでしょう?」と尾村が尋ねると、学生のみなさんから「パソコン、スマホ、デジタル時計」などの回答が。すべて正解です。
こうしたコンピュータを人が動かすには、コンピュータが理解できる言語を使って命令する必要があります。その言語が「プログラミング言語」です。
実際に授業でプログラミングを体験してもらい、コンピュータに命令していきます。
課題は「ずっとLEDを点滅させる。つける時間と消す時間はどちらも1秒間にする」です。
【1時間目】IchigoJamを使ってLEDを光らせる
授業では「IchigoJam」を使い、プログラミングによってLEDを光らせます。
IchigoJamとは、初心者向けプログラミング言語BASICを現代風に復活させた、子ども用プログラミング専用パソコンです。
テレビとキーボードをつなぐだけのシンプル構造で、インターネットへの接続等ができません。プログラミングのみに集中できる設計になっています。
※IchigoJamは株式会社jig.jpの登録商標です。
さっそく、プログラミング開始です。
まずはじめに、LEDを光らせてみます。
LED1
と入力することで、LEDがつきます。
LED0
と入力することで、LEDが消えます。
LEDが光り、教室では「おお、光った」と声がしました。
続いて「:(コロン)」を使っていきます。
LED1:LED0
と入力することで、LEDがついて消えます。
:(コロン)は命令をつなげる記号です。
LEDを”1秒だけ”光らせたい
LEDをつけて消すことはできました。しかし、ついて消えるまでの時間は一瞬です。課題の中には「つける時間と消す時間はどちらも1秒間にする」という決まりが。そこでコンピュータにLEDがついてから「何もしないで、待つ」ように命令します。
LED1:WAIT 60:LED0
と入力することで、LEDがついて約1秒待ち、LEDが消えるようになりました。
これで「LEDをつけて消す。つける時間と消す時間はどちらも1秒間にする」ができました。
しかし課題は「ずっとLEDを点滅させる。つける時間と消す時間はどちらも1秒間にする」です。
”ずっと点滅”させなければなりません。
LED1:WAIT 60:LED0:LED1:WAIT 60:LED0:LED1:WAIT 60:LED0……
と繰り返し入力すればできますが、これでは入力するのも大変です。そこで繰り返し命令するプログラミングをしていきます。
LEDが点滅するように繰り返し命令する
命令の前に「10、20、30…」と番号をつけていきます。
それぞれのプログラミングの命令内容は次のとおりです。
10 LED1
LEDをつける
20 WAIT 60
1秒待つ
30 LED0
LEDを消す
40 WAIT 60
1秒待つ
50 GOTO 10
10行目(LEDをつける)に戻る
少し難易度が上がったため、スタッフがフォローしながら入力していきます。
結果、全員が「ずっとLEDを点滅させる。つける時間と消す時間はどちらも1秒間にする」の課題をクリアできました。
これで、LEDを使った課題は終了です。
【2時間目】プログラミングでゲームづくり
休憩を挟んで、次におこなったのが「かわくだりゲームづくり」です。こちらもIchigoJamを使ってつくっていきます。
まずはじめに、次のように入力していきます。
10 CLS:X=15
さらに入力していきます。
20 LC X,5:?”O”
RUN
これで自分のキャラ(O)が完成です。
30 LC RND(32),23:?”*”
で敵キャラ(*)があらわれます。
10 CLS:X=15
20 LC X,5:?”O”
30 LC RND(32),23:?”*”
40 GOTO 20
RUN
*が上に向かって高速で動く様子に、「おおー!」と教室から声があがりました。
しかしこれでは、*の動きが速すぎます。
35 WAIT 3
LEDの課題のときにも利用した「WAIT」を入力して、少し動くのを待ってもらいます。
ボタン操作ができるようにプログラミング
続いて、ボタン操作ができるようにプログラミングをしていきます。
36 X=X-BTN(LEFT)+BTN(RIGHT)
を加えることで、自分のキャラをキーボードの← →で操作できるようにします。止めるときは「ESCキー」を押します。
10 CLS:X=15
20 LC X,5:?”O”
30 LC RND(32),23:?”*”
35 WAIT 3
40 GOTO 20
36 X=X-BTN(LEFT)+BTN(RIGHT)
RUN
これで自分のキャラ操作ができるようになりました。少しずつゲームっぽくなってきています。
当たり判定をつける
続いて、「敵に当たったらゲームオーバー」となるようにプログラミングしていきます。
40 IF SCR(X,5)=0 GOTO 20
これを加えることで「*」が「O」に当たったらゲームオーバーと設定します。
10 CLS:X=15
20 LC X,5:?”O”
30 LC RND(32),23:?”*”
35 WAIT 3
36 X=X-BTN(LEFT)+BTN(RIGHT)
40 GOTO 20
40 IF SCR(X,5)=0 GOTO 20
RUN
これで自分のキャラが敵キャラに当たったら、スタート地点に戻るようになりました。
得点を出すようにプログラミング
次に得点を出すようにプログラミングします。得点を友だち同士で競えるようになります。これでゲームはほとんど完成です。
10 CLS:X=15
20 LC X,5:?”O”
30 LC RND(32),23:?”*”
35 WAIT 3
37 X=X-BTN(LEFT)+BTN(RIGHT)
40 IF SCR(X,5)=0 GOTO 20
15 CLT
50 ?TICK()
RUN
バグ修正&完成
キーボードで自分のキャラを操作し、敵に当たるまで得点が加算されていくゲームができました。
しかし、ある生徒がゲームにバグがあることに気がつきました。
「これ、端にずっといれば敵に当たらないよ」
そうなんです。じつはこのままだと、端にいれば敵に当たらない「無敵状態」になってしまうバグがあります。その無敵状態バグを直すためのプログラミングをしていきます。
38 X=X&31
これを入力することで、無敵状態バグを直せます。
10 CLS:X=15
15 CLT
20 LC X,5:?”O”
30 LC RND(32),23:?”*”
35 WAIT 3
37 X=X-BTN(LEFT)+BTN(RIGHT)
40 IF SCR(X,5)=0 GOTO 20
50 ?TICK()
38 X=X&31
RUN
プログラミングにはバグはつきものです。バグを見つけ、それを修正することでプログラミングはより良いものになっていきます。これの繰り返しが必要です。
以上でかわくだりゲームが完成しました。
完成したゲームを遊び、友だちと点数を競います。
ゲームの基本形はこれで完成ですが、プログラミングによってさまざまなアレンジが可能です。
たとえば、自分のキャラや敵キャラを変えたい場合は
20 LC X,5:?”O”
30 LC RND(32),23:?”*”
の”O”と”*”の部分を変えます。そうすることで、自分だけのキャラを作成できます。
このように、それぞれがアレンジしてゲームを楽しんでいました
これで「かわくだりゲームをつくる」課題は終了です。全員が課題を達成できました。
授業の終わりに
「ずっとLEDを点滅させる。つける時間と消す時間はどちらも1秒間にする」
「かわくだりゲームをつくる」
といった課題が終わり、講師の尾村から学生のみなさんにメッセージを伝えました。
「デジタルトランスフォーメーション(DX)時代の到来によって、これからITはあらゆる業種で”なくてなならない技術”になっていきます。今日、学んだことを頭の片隅においておくと役立つはずです」
これからの進路について考えている学生のみなさんは、真剣な眼差しで尾村の話を聞いていました。
学生のみなさんには、はじめてプログラミングに触れて自分でつくる楽しさを感じてもらえたと思います。この授業をきっかけに、ITやIT業界への興味を持ってもらえたらうれしいです。