小学校の先生のためのSwift Playgrounds講座 コードを学ぼう1<簡単なコマンド>【解答】

f:id:PSYuki:20170403225928p:plain

こんばんは。ツムさんです。

 

プログラミングなんてやったことないぜキリッ

 

という先生のための Swift Playgrounds を使ったセミナーです。

 

 

 

プログラムって何なのさ

そもそもプログラムって一言でいえば、

 

式次第

 

のようなものと考えるとイメージが湧きやすいかも。

 

もうすぐ入学式がありますよね。入学式の式次第(プログラム)は大体どの学校も、こんな感じになってませんか??

  1. 開式のことば
  2. 国歌斉唱
  3. 学校長挨拶
  4. 来賓挨拶
  5. 記念品授与
  6. 校歌斉唱
  7. 閉式のことば

開式のことばは、教頭がステージに上がり、国歌斉唱は音楽の先生がピアノを弾きながら全員でうたう。校長先生やPTA会長の挨拶が続く・・・

 

まぁ、新入生からすると退屈な会なのかもしれませんが、入学式を成功させるために、「裏」では学校の先生が会場の設営や段取りの確認、記念品の準備、来賓への招待状の発想など、いろいろなことをやっているわけです。

 

現実の入学式のプログラムは、「人」が式次第どおりに動いてはじめて正しい意味のある「入学式」になりますが、コンピュータの世界でプログラムを作る(プログラミング)というのは、「人」の代わりに文字通り「コンピュータ」を動かすことになります。

 

ここで、いきなりコンピュータは「計算器」であるとイメージすると、ハードルが上がってしまうので、ここでは動かす対象物としての「コンピュータ」というものがあるという程度で大丈夫です。

 

Swift Playgroundsは一体何を動かすのか

AppleがiPadのアプリとしてリリースした Swift Playgroundsは、プログラムを作るためのアプリです。

プログラムは、「コンピュータ」を動かすための「式次第」でしたよね。Swift Playgroundsのアプリを使うと、「コンピュータ」を「式次第」に沿って動かすことが出来るプログラムを作れるわけです。Swift Playgroundsが動かせる「コンピュータ」はこいつらです。真ん中のキャラクターがデフォルトのByte(バイト)くん。両隣のキャラの名前は不明です。。

 

f:id:PSYuki:20170403225928p:plain

人の世界の入学式で、校長先生やPTAの会長が式次第に沿って動くのと同じです。Swift Playgroundsは、プログラムを正しく書いてこのキャラクターを動かして用意された「ステージ」をクリアします。

校長先生やPTA会長を動かして(挨拶させて)入学式を無事に終える(クリア)するのと全く同じです。

 

どうやって動かすのか?

入学式の式次第には、どの学校でも共通で必須となる「校長先生の挨拶」「校歌斉唱」というような項目が並びますよね。どの学校でも同じなので、日本の小学校はどこでも同じような入学式が行われます。

コンピュータの世界のプログラムも同じで、皆が同じようにコンピュータを動かせるように、プログラムに使える命令(=コマンドと呼ぶ)があらかじめ決まっています。

 

たとえば、Byteくんを前に進めるためのコマンド(moveForward())だったり、宝石を取るためのコマンド(collectGem())だったりという具合です。

 

たとえば、下の「ステージ」の場合、Byteくんを動かして宝石を取るためのプログラムを作ります。Byteくんが立っている位置から3マス先に宝石が落ちているので、まずByteくんを3マス進める必要があります。そのあと、Byteくんに宝石を取らせることでこのステージはクリアとなります。

 

f:id:PSYuki:20170403231000p:plain

プログラムは、

moveForward()を3回

collectGem()を1回

組み込んだもの(式次第)になるわけです。

 

f:id:PSYuki:20170403231559p:plain

 

どうですか?

 

プログラムを作るって思っていたよりも簡単ですよね?

 

Swift Playgroundは、プログラムを教えるためのアプリなので、Byteくんを動かして「ステージ」をクリアすることしかできませんが、Swift Playgroundsとは別の環境を使うことで例えばiPadのアプリを作れたりするようになります。

 

 コードを学ぼう1<簡単なコマンド>編には全部で7つの「ステージ」が用意されていて、上の画面はそのまま最初の「ステージ」の解答になります。3マス先の宝石を取るためのプログラムは、

moveForward()

moveForward()

moveForward()

collectGem()

でした。

 

新しいコマンドを追加する 

次のステージは、turnLeft()というコマンドが追加になりました。字のごとく、左へ向くためのコマンドです。

f:id:PSYuki:20170403232126p:plain

宝石は、2マス進んで左へ向いた先、2マス目に落ちているので、このマスに向かってByteくんを動かすためのプログラムを作ります。

 

f:id:PSYuki:20170403232322p:plain

要領が分かれば簡単ですよね。

気をつけたいのは、turnLeft()コマンドは、「その場で左を向く」だけで「左を向いて進む」ではないということです。turnLeft()コマンドは1マスも進まないのです。

 

スイッチを切り替える

おっと、次は宝石だけでなくて、スイッチ(灰色のパネル)が登場しました。宝石を取るコマンド(collectGem())とは別にスイッチを点灯/消灯するコマンド(toggleSwitch())が追加されました。

 

f:id:PSYuki:20170403232455p:plain

 入学式の式次第で言えば、「在校生のことば」が増えるようなものなので、式次第のだたしい位置に「在校生のことば」を組み込んで、より一層盛り上がるプログラムを作ればいいだけの話です。

 

f:id:PSYuki:20170403232739p:plain

2マス進んで左を向いて、1マス進んで宝石とって、、

って頭の中でByteくんの動きをイメージしながらコマンドを並べていくだけでプログラムが出来ていきます。スイッチパネルまでたどり着いたら、最後はスイッチをOn(toggleSwitch())してこのステージもクリアです。

 

ワープの練習

ワープの練習といっても、ワープするコマンドが使えるようになるわけではなくて、ワープマスに入ると同じ色のワープマスへ「勝手にワープ」するだけです。 

 

f:id:PSYuki:20170403233020p:plain

このステージも落ち着いて宝石までの道順を数えてみると、、

  • 3マス進む
  • 左を向く
  • 2マス進む
  • スイッチを押す
  • 2マス進む
  • 左を向く
  • 2マス進む
  • 宝石を取る

頭の中でイメージできましたか?

あとはこれを一つずつコマンドへ置き換えていくだけですよ。

 

バグを見つけて直す

このステージは今までのステージと異なっていて、あらかじめプログラムが用意されています。ただし、そのプログラムにはバグ(=間違い)があって、手直しする必要があります。

 

f:id:PSYuki:20170403233456p:plain

用意されたプログラムを使ってByteくんを頭の中で動かしてみると、、

1マス進む

左を向く

2マス進む

宝石を取る

???

宝石とれますか?

というかその前の2マス進む時点で、Byteくんは切り立った崖から落ちてしまいそうです。

 

f:id:PSYuki:20170403233948p:plain

Byteくんを崖から突き落とさないように、プログラムを直してあげると、

  • 2マス進む
  • 左を向く
  • 1マス進む
  • 宝石を取る
  • 1マス進む
  • スイッチを押す

で無事にゴールできました。

 

バグつぶしの練習

このステージも前のステージと同じように、間違えたプログラムを正しく直します。

 

f:id:PSYuki:20170403234200p:plain

与えられたプログラムは3マス先のスイッチを押していますが、このスイッチは点灯状態のスイッチなのでこいつを押してしまうとスイッチが切れてしまいます。このスイッチは押す必要がないのです。

 

f:id:PSYuki:20170403234450p:plain

3マス先のスイッチは無視して、落ち着いて他の「切れているスイッチ」と宝石を目指してByteくんを動かしましょう。

 

f:id:PSYuki:20170403234550p:plain

途中にワープマスもあるので、マスの数を数えるときに間違えないように。

 

最短の道順

ワープマスが青と緑の2つ登場します。緑のワープマスを使うほうが最短(コマンドの数が少ない)か青のワープマスを使うほうが早いか、このステージはプログラムを何通りか選んで作ることができます。

 

f:id:PSYuki:20170403234708p:plain

 

f:id:PSYuki:20170403235014p:plain

上のプログラムが最短コースです。緑のワープマスを使うほうが早いですね。

 

 

どうでしたか?

思っていたよりも簡単すぎて拍子抜けしませんか?

子どもに教えるのは自分が理解するよりも何倍も大変ですが、自分が理解できていないことを教えることはできないので、プログラミングの授業がスタートする2020年までに簡単なプログラムなら書けちゃう先生を目指しましょう。