10月1日に,ジュニアドクター育成塾事業「科学イノベーション挑戦講座」第3テーマ「プログラミングで未来社会を創造しよう」を実施しました。今回の講師は,テックプログレス社の重松宏規取締役が実施しています。

1 はじめに
プログラミングは,今後20年間で重要性が大きく高まる分野だとかんがえられています。私の所属する日本化学会でも,三菱総合研究所の方が「今後20年,重要になるのは3つあります。ひとつは生物模倣,ひとつはAI,さいごのひとつはIoEです」と言われていました。

生物模倣は,ヤモリの吸盤やモルフォ蝶の美しい青など,生物がつくった仕組みを人間が真似ていこうというものです。いくつかは商品にもなっていますね。

de7d8e9722f727ec79b7c2d2303bc1f2acc9c4d3
図1 モルフォ蝶のハネは青いわけではなく,光によって青く見えています

IoEは,あまり聞いたことがないと思います。IoTはどうでしょうか?
IoT(モノのインターネット)は,さまざまなものがインターネットを通じてつながり,情報をやり取りするシステムのことです。たとえば,スマートフォンをつかって出先からエアコンを操作したりすることを言います。

2ef5a48b2b68328395ec829070c1067cd3d0e405
図2 モノのインターネット

IoEは,これがさらに進んで,すべてのものがインターネットにつながっていく時代を指した言葉です。私たちの周りのあらゆるモノがインターネットにつながる時代はすぐそこに来ています。

このIoEとAI(人工知能)は,いずれもプログラムによって動きます。こうした時代になったとき,少なくともプログラムが何をしているのか,何ができて,何ができないのかを知っていることは,より良い暮らしのためにとても重要なのです。だからこそ,プログラミングの基礎を学んでおく必要があるのです。

0c0cdc7957659030b09c1e072dbdca17e96ea706
図3 プログラミングをバリバリ行おう!

2 達成目標を設定しよう
今回の内容について整理しましょう

最終目標(Why)
プログラムを使って実現したい未来を想像し,その未来の実現のためにどんなことをやっていくのか

具体的な目的(How) 
・プログラムが何をしているのか
・何ができて,何ができないのか
を知る。

計画(What)
スクラッチというプログラミング言語をつかって,mbotというロボットを制御して,プログラムの基本について学ぶ。

たのしかった,おもしろかった,で終わらせず,学びを深めていくためには,自分が何をしなければならないのかを明確にしておくことが重要です。

3 プログラムとはなにか
重松取締役のお話は,まずプログラムとは何かから始まりました。
受講生からは,プログラムはコンピュータの言葉など,いくつかの答えがありました。そう。いま,あなたが言葉を読んでいるように,コンピュータはコンピュータの言葉を読むことができます。これがプログラムです。コンピュータの言葉ですから,プログラムは正しい文法で書かなければなりません。

日本語で考えてみましょう。文法がめちゃくちゃだといっている意味がわかりません。
ただしい例文:私はコンピュータ言語を使って,ロボットを思った通りに動かすことができる。
まちがった例文:コンピュータ言語をロボットは,私を思った通りに使って動かすことができる。

日本語とおなじようにプログラムもコンピュータがわかる「ただしい文」で書く必要があるのです。

4 ロボットとは何か
つぎはロボットについてかんがえました。ロボットは,なにを目標にして開発されているのでしょうか。ロボットとは,さまざまな場面で,人間の代わりに働いて,私たちの生活をより良いものにしてくれる存在であって,プログラムとは,そのロボットを動かすための言葉であることが紹介されました。そこで,今回の講座では,実際にプログラムを組んで,ロボット(mbot)を自分の思うとおりに動かすことが目的として示されました。

687fedf3ccad62f52467d401c806ce5e595abf83
図4 重松取締役による講義

5 プログラミングをしよう
プログラミングには,スクラッチを利用しました。スクラッチは,マサチューセッツ工科大学の人たちがつくった,コンピュータプログラムを学ぶためのかんたんな言語です。かんたんとは言っても,できることはたくさんあります。今回は教育用ロボットmbotを制御するプログラムを組みますし,ゲームやアニメーションをつくることもできるのです。ぜひ試してください。

d839dd7a26e61559a5e5b469e66133c774bd77e7
図5 プログラムの基本を学ぼう

mbotとパソコンをつないで,プログラムを動かすとmbotを制御することができます。かんたんなプログラムを組んで,mbotの動かし方を学びました。

目標とする距離まで進んだあと,転回してもどってくるというプログラムです。言葉で言うとかんたんに感じますが,「何cm進んで」というプログラムはありません。速度○○で,△△秒進むというプログラムをつかって,目的とする距離を動かさなければなりません。また,止まるときもピタッと止めるには,別のプログラムが必要になります。

caa975f16d2cd02f1d9ba72f93bdcae688263958
図6 基本的な動かし方を学ぶ

展開するときも「何°回って」というプログラムはありません。右(左)に○秒回るというプログラムで,うまく180°回さないとちがった方向にもどってしまいます。

かんたんに見えるロボットの制御をするためには,コツがありました。それは,プログラムはひとつで,行動をひとつずつ行うことです。プログラムは文章とおなじように,どんどんつぎ足していくことができますが,行動をつぎ足していくと,前の動きがつぎの動きに影響してしまい,行動の制御がむずかしくなります(中学校3年生のベクトルの合力ですね)。そこで,プログラムとしては,前に進む→止まる,右に回る→止まる,前に進む→止まるなど,動きを「止める」動作を入れることが重要になるのです。

6 停止線で止めよう
mbotの基本的な動かし方を学んだので,つぎは停止線(黒い線)で止まるプログラムを組みました。mbotはにっこりとわらった口の下赤外線センサーがついています。

de5bba4e5dca1ad30ce3d017fe65e1021f8de326
図7 mbot

赤外線センサーは,床の赤外線の反射を読み取っています。そのため,たとえば反射があるときは進み,反射がなくなったら止まるという制御をすることができます。そこで,赤外線センサーをつかって,停止線まできたら止まるプログラムを組みました。そして,停止線で止まるプログラムが完成したら,つぎは先ほどとおなじように,停止線で止まってもどるプログラムを組みました。

9e35e8c69bc8889a720cf570ee4b5e34ea6dc6ad
図8 停止線で止めるには

7 障害物をよけよう
mbotの可愛らしい目に見える部分は,超音波センサーです。ここで,コウモリのように超音波を発して,受け取ることで,距離をはかることができます。これを利用すれば,障害物にぶつからないようにロボットを制御することができるのです。そう。自動運転技術とおなじことができるのです

そこで,まず超音波センサーをつかって,障害物を感知して止まるプログラムを組みました。ここで大事なことは,ロボットの移動速度と動きを止める距離の関係です。超音波センサーは,障害物との距離をはかっているだけで,ぶつからないようにするためには,自分で「障害物との距離の数値が□□になったら,速度を0にする」と指定しなければなりません。しかし,命令が出てから止まるまで,多少時間がかかります。そのため,速度によっては止まりきれないのです。動く速度を速くすればするほど,停止命令を早く出さなければならなくなります。これも言葉では,かんたんに聞こえますが,実際に行うとなかなかに難しい制御です。こちらも止まれるようになったら,転回してもどるプログラムを組みました。

a786a77c94404e7c23bff8db648ae6beddc2d4e1
図9 超音波センサーで障害物にぶつからないように

9 組み合わせて,動かそう
赤外線センサーと超音波センサーを組み合わせてつかって,停止線と障害物をよけながら動くようプログラムを組みました。回転する角度を,180°から変えることで,いろいろな方向に回転しながら,障害物をよけ,停止線で引き返すことができるようになりました。

停止線は,はみ出ないように少しもどって回転,障害物は止まって回転など,ロボットの行動を複雑に制御するなど各班のアイディアが活かされたプログラムができました。

2aac8eea1593c622552b2a398ef3b0606cdb28c7
図10 みんなでかんがえよう

c85aab513376f40437546f4dd15266fed9078a72
図11 障害物と停止線で転回するmbot

10 まとめ
課題とおなじように,結果がおなじでも人によってプログラムの組み方はちがいます。また,停止線で引き返すとき,そのまま回転するか,バックしてから回転するかなど,アイディアによって,mbotの行動はちがいます。ほかの人のアイディアを参考にすることで,より良いプログラムが組めるでしょう。そう。ここでも大事なことは,いつもとおなじです。

d6981102bffef531fdca6c29b9a789a57e86be39
図12 複雑なプログラムも組めるようになりました

さて,今回の達成目標について,何が,どこまで解決したでしょうか?
最終目標(Why),具体的な目的(How) ,計画(What),それぞれについてかんがえることが大事ですね。すべてが達成されたはずはありませんし,いますぐすべてが達成される必要もありません。しかし,ふりかえらなければ,学びは何も深まりません。おなじところをグルグル回っているだけになってしまいます。良くかんがえて,学びを深めていきましょう。

今回の実施では,事前学習課題,実施,実施におけるアイディアで,テックプログレス社に大変お世話になっております。もし,あなたがプログラミングに興味があるなら,テックプログレス社で話を聞いてみることをオススメします。無料体験もありますし,愛媛県以外にも広島県,大阪府に教室があります。

2f75e451277182e805a361aec1dde11d343951d9