昨日はプログラミングを教える理由について考えてみたのですが、今日はもう少し違う切り口で考えてみました。
パソコンやスマホの画面だけで良いですか?
いま、私たちがこどもにプログラミングを教えるときは、アーテック社の教材を使っています。アーテック社の教材は、Scratchベースのプログラミング環境、Arduinoベースの基板、いくつかのモーターやセンサー、そしてモノの形をつくるためのブロックと一揃えになっているので、プログラミングした結果を画面の中だけでなく、モノの動きとして見ることができます。
パソコンの画面の中だけでできる教材も独自で準備したりもしています。Scratchでゲームを作ったりするもので、それはそれで学ぶ意味もあるだろうし、ゲームなのでこどもたちで喜んでくれるのですが、やっぱりモノの動きには敵わないような気もしています。
センサーやモーターをつなげば楽しい
私たちがやっている体験講座は、2時間程度で自動車のロボットを作り、それをScratchのプログラムで思うように動かそうというものです。講座の開始からだいたい30分ほどで、まずパソコンと基板、それにモーターをつないで、Scratchからモーターを動かすことをやります。
教室の中で最初に歓声が上がるのが、このモーターが動き出したタイミングです。何度やっても、必ずここで最初に歓声が上がります。やっぱり、自分の意思で何かが物理的に動くのって楽しいんですよね。
センサーやモーターがつながるとIoTの芽生え
体験講座ではモーターしか使っていませんが、後々はセンサーも出てきます。温度とか赤外線とかいろいろ。
たしかにこども向けの教材としてアレンジされているのですが、中身をよく見るとArduinoだしモーターやセンサーはふつうに秋月電気なんかに売っているものを少し加工しただけだし。プログラミング環境がScratchというのがちょっとアレかもしれませんが、環境としてはいわゆるIoTをやるためのものです。
ArduinoにWiFiを付けるか、基板をRaspberry Piあたりに変えて、データをクラウドに送ったりしてみる。プログラミングはPythonあたりでやってみる・・・とかすると、本当に大人がやっていることになります。そういうアレンジにして大人向けの研修とかにも十分対応できるんじゃないかと思うわけです。(プログラミング環境をNode-REDくらいにすると、プログラミングに詳しくない人でも手が出せる研修になりそうです。)
人工知能も含めると尚可
もうここまで来たらってことで、人工知能もくっつけてみましょう。せっかくデータをクラウドに送るならIBM WatsonとかAmazon MLとかありますね。どちらもIoT Platformが整っているので、比較的簡単に実装できます。
ただ、人工知能をつないでどうするの?という話はあります。くっつけるセンサーがカメラやマイクなら、例えばWatsonで画像認識するとか音声認識してテキストの文章にして自然言語解析とか考えられます。
温度とか湿度みたいな数値データなら、Watsonよりは他の環境の方が良いかもしれませんね。
数学って社会に出て役立つんですね・・・と言われる社会
で、その「他の環境」というのが何だ?という話ですが、たぶん統計解析の処理系が良いのではないかと思います。IBMのBluemixなら、Cloudantに入れておいて、後でDashDBに移してR言語で云々とか。あと、ロボットを動かすとかしたら、三角関数もいるよねとか。
そうなると、今までは「数学って世の中に出て何の役に立つんですか?」と言われる社会が一変します。数学って本当に役立ちますね、いやーこれが知りたかったんですよ!ってテンションが上がる世界。
(私がこどもの頃はそうじゃなかったので、数学が苦手な文系大人になってしまいました。いま、ちゃんと学び直し中。)
日本はモノ作りで勝負しよう
で、こんなことを考えていると思い浮かぶのは、東京大学准教授の松尾豊氏の講演で語られていたことです。
日本はもともとモノ作りの強い国です。メールやスケジュール管理といった言語処理系のシステムでは英語圏に勝てないので、日本はモノ作り系で勝負した方が良いという話で、それがこれからはIoT+AIがモノ作りにどんどん入っていくようになります。
それが日本の産業の命綱になるとしたら、プログラミングができると言うだけではなくて、きちんと物理的にモノが動くところを知っているか、さらに言えばAIの素養も兼ね備えて成長するこどもたちが非常に心強い存在となることは間違いありません。
やっぱり、プログラミングを学ぶならハードウェアも含めてやりましょう。(私たち、大人のプログラマはいままで物理的なモノの世界からは遠い場所にいたので、これから学んでいく必要がありますね。)’