こんにちは。サイエンスコミュニケーターの高知尾です。
現在カミオカラボでは、小中学生向けのワークショップとしてプログラミング教室を行っています。
でも、どうして今プログラミングなのでしょうか。
個人的にプログラミングが大事だと思った理由と、教える際に難しいなと感じたところを記しておこうと思います。
そして、最後に今回行った第一回の内容を講義ノートとして貼り付けておきます。
基本的にはマウスの操作だけで直感的にプログラミングを体験できる
カミオカラボでプログラミングを教える4つの理由
まず一つ目の理由は、「小学校のプログラミング教育必修化」です。来年度から小学校では、これまでの教科をベースにプログラミング的な思考をするための授業が取り入れられていきます。そのため、全国的にプログラミングを学ぶニーズが高まっています。
二つ目は、簡単に楽しくプログラミングを学ぶためのアプリやユーザーインターフェイス、玩具が急増してきたためです。場合によっては、本人がプログラミングを学んでいるという自覚がなくても学べるものまであります。プログラミングを学ぶ目的の一つが「論理的思考力を伸ばすこと」と言われますが、実際にはその前の段階であるプログラミング特有の言語を覚える段階で躓くことがあります。ところが、最近のツールは日本語の文を作るように(もしくはイラストや記号を組み合わせるだけで)プログラミングができるため、論理力を直接的に鍛えることができるのです。
三つ目は、科学技術の進歩によって身の回りに「プログラミング」されているものが溢れてきているということです。冷蔵庫や炊飯器といった身近な電化製品でも温度管理や時間管理を自動でしてくれるようにあらかじめプログラミングされています。少し未来にはハンドルを触らずに目的地に行ける自動運転車が街なかで一般的になる時代も来るでしょう。また、インターネットを使った商品購入だって、最近では自分が買いそうな商品がおすすめとして出てくることがあります。こうした「最適化」の奥でもプログラミングされたとおりにシステムが動くことで成り立っているわけです。そんな時代に自分の意志でものごとを選択して生きていくためには、最低限のプログラミングの知識が必要そうです。
四つ目として、素粒子物理学の実験におけるデータ解析ではプログラミングが必須になります。私自身とても苦労したので、というのもあります。
教えるのが難しいなと感じたところ
さて、今回は小学校3年生から中学生を対象とした1時間のワークショップを行いました。
使用したのは、MITメディアラボが開発した「スクラッチ」です。
文字が書かれたブロックを組み合わせていくことで、誰でも簡単にプログラミングをすることができます。
第一回の目標は「自分で選んだキャラクターをキーボードのカーソルキーで自由に動かすこと」としました。
これを実現するには主に二通りの方法があります。
ひとつが、「向き」を使う方法、もう一つが「座標」を使う方法です。
スクラッチには、「向き」という概念があります。ステージ上に置かれるキャラクター(スプライトという)は、0度から360度の間のある向きを向いています。0度は上向き、90度は右向き、180度は下向き、270度は左向きといった具合です(デフォルトは90度)。
最初は90度(右)を向いているので、「10歩進む」というブロックを使うとキャラクターを右に動かすことができます。
問題は、左に動かすときです。
ひとつは、180度向きを変えてから「10歩進む」という方法。
そしてもうひとつは、向きはそのままで「-10歩進む」という方法です。
2通りのやり方があるのは教育上も面白い部分なのですが、さて1時間という限られた中でどちらを教えるべきか…。
迷った末に、今回は「-10歩進む」つまり負の数という概念を取り入れることにしました。
(理由は、キャラクターを傾けずに水平移動したかったからです。)
負の数は中学一年生で習う概念です。参加者の中には小学校3年生も含まれていたので、まだ習う前ということになります。ところが一度負の数で反対方向に進むことを教えると、その後はどんどん自分から負の数を使ってくれました。
その後、上下に動かす、つまりy座標という概念も取り入れたのですがこちらも使ってもらうことができました。さすが、吸収が早いです。
「座標」を使った例
「向き」を使った例
さて、向きを変えるか負の数を使うかの違いは高校生になると「極座標」か「直交座標」かの違いとして習います。
極座標というと難しいイメージがあった方も多いかと思いますが(私も当時は苦手でした)、こうして考えてみると要は「向きを変えてから移動する」という日常的にはむしろ自然にやっていることを数値化しただけのことだったのですね。(目的地までカニ歩きで行く人はあまり見かけないでしょう。)
左下にいるニュートリノくんは右上にいきたい
右に8マス動く
上に8マス動いてゴール!
45度左に向きを変えてから...
8マス進んでもゴール!
このように、日常生活をモデル化・単純化することで数学や物理学をより身近に感じることができる。これも、プログラミングのもうひとつの魅力と言えるのではないでしょうか。
ということで次回は、キャラクターに「重力」を感じさせることで、簡単なアクションゲームの製作にチャレンジしてみたいと思います。
最後に、今回のプログラミング教室の講義ノートを置いておきます。
それでは!