エントリー

ozobotでアンプラグドプログラミング

  • 2018/06/13 13:47
  • カテゴリー:散財

 人間というのはどうも偏った考えをしがちで,それもまあ,自然に起きることの時間軸に対して人間の一生は極めて短く,自ずと短期的な視点になりがちであることに理由を求めることになるのですが,社会というのは人間が作った環境であり,当然のこととしてその時間軸は人間の一生に最適化されています。

 ゆえに,親が子の幸せを願って,あれこれと手を打つのは当たり前のことであって,噴煙を上げる活火山や燃えさかる太陽がそれを見て「なんと滑稽な事よ」と冷笑しても,それは全然構わないように思います。

 ここ数年で,STEMだのプログラミングだのと,小さな子供を「理系頭」にすることが流行っています。誤解のないように言っておくと,私自身は理系頭ですし,そのことをとても気に入っているので,自分の子供にはお勧めしたいと思っていますが,100人いて100人が理系頭だと面白くもなんともありませんし,話もややこしくなるばかりで,きっと社会は立ちゆかなくなるんじゃないかと思います。

 こうしたブームは20年サイクルくらいで繰り返しているように思うのですが,今回の理系頭ブームというのはちょっと違っていて,人を出し抜くのに必要という最終ゴールは同じであっても,今回についてはAIなどコンピュータと一緒に生活するのが当たり前のになる世の中で,コンピュータがどう考えるかを知らないと困るから,と言う割にリアルな理由が掲げられています。

 これは私見ですが,コンピュータが考えると言うよりも,コンピュータの考える仕組みをカリカリの理系が考えたりするもんだから,理系の思考プロセスが前に出てきてしまうだけの話であって,いわばその面倒くさい思考プロセスに周囲の人が歩み寄っているという状況を積極的に肯定しているだけに過ぎないと思うのです。

 人によるかも知れませんが,商品の設計を仕事とする私のような場末の理系でも,ユーザーが我々に歩み寄ったら負け,どんな人でも同じように使えて,どんな人にも等しくそのパワーを提供出来ることを目指しています。

 だから,なにも一般の人が我々の思考をくみ取るために子供の頃から特訓をする必要などないし,それはかえって我々にとって申し訳ないことだと感じるのですが,裏返すと親の世代のコンピュータとそれを作った理系の人への漠然とした不信感が,いよいよ危機感のようなものに昇華し始めたということかも知れません。

 思い出して欲しいのですが,コマンドラインをゴリゴリ打ち込むCUIベースのコンピューティングも,その頃のコンピュータを作った人の都合でそうなっていたのが実際ですが,だからといってこれを子供に学ばせないとこの先やっていけなくなるとは誰も思わなかったはずで,現在のスマートフォンのような優れたユーザーインターフェースが登場してようやく,その強力な計算能力が広く一般の人々に開放されたわけです。

 むしろ,そうしたユーザーインターフェースによって,我々は余計な事を考えずに,自分の目的に到達するまでの「近道」を手に入れたことを素直に喜ぶべきであり,それがまだ近道でないと思うなら,「まだまだ遠回りだ」と文句を言えばいいと思うのです。

 さすれば,きっと頭のいい理系の人が,さらに近い道を作ってくれるはずです。
なにも,一緒になって遠回りに付き合ってもらわなくてもいいんじゃないでしょうか。

 閑話休題。

 そんなわけで,読み書きと同じ扱いで理系の思考が行えるように子供を仕込むことを,STEMなどと言ったりするわけですが,確かにそういう分野に興味がある子供は,早めに理系の空気を吸わせた方が楽しく過ごせると思います。

 でもこれはなにも理系に限った話ではなく,音楽でもバレエでも書道でも水泳でもなんでもそうで,早めに取り組めばその分伸びるし,早めに取り組むには興味を持つことが必須なのですから,至極当たり前の話でしょう。

 ただ,理系というのはまだまだマイノリティであり,いざ子供が興味を持ち,ピアノなんかと同じように取り組んでもらおうと思っても,そうした環境が整っていないし,学習のためのメソッドも確立されていないのが現状です。

 そこで欧米を中心に,いかに子供に科学的な視点を持ってもらうかが試行錯誤されてきました。私に言わせれば,それも「自分が理系で良かった」と思う人が,自分が偶然接した(そしてそれは往々にして希な)楽しかった経験を,広くどんな人にも手軽に経験出来るようにしようという,少々お節介な動機によるものです。

 でも,そういう動機を発端とし,実際に子供に幅広く面白がってもらえるような仕組みが,近年の技術の進歩で可能になってきています。その1つが,ロボットとビジュアル的なプログラム開発環境の組み合わせです。

 大きく重く壊れやすく,高価なロボットはこれまでにもありました。子供向けに簡単な開発環境が用意されることも珍しくなく,これはこれで教育用途に面白いだろうと思ったのですが,いかんせん高価で大きいことは子供が扱うものとして,まず最初にアウトです。

 おおむね,普通の理系は自分のレベルでしかものを見ることができないので,そうしたロボットを作ってはダメ出しされると「なんでやねん」と逆ギレするので始末の負えません。

 ですが,世の中には冷静で客観的な理系もいるんですね。先日素晴らしいロボットを見つけたので,買ってしまいました。

 Ozobot Evoといいます。

 Ozobot Evoはこの春に登場した最新機種ですが,1つ前の機種はOzobot bitと言います。ピンポン球くらいの大きさで自走するロボットなのですが,面白いのはこれは基本的には,電子工作の定番であるライントレーサーであることです。

 ライントレーサーは地面に引いた線をトレースするロボットなのですが,簡単なものは線の左右に配置した光センサが黒い線を感知すると,感知した側のモーターの回転数を上げて曲がり,線を跨がないようにするというしくみで動きます。

 Ozobot bitも基本的にはそれそのものなのですが,これが大変面白いのは,黒い線の途中に赤や青,緑と言った色が感知されると,その色の組み合わせでロボットの動きに変化を付けられるということです。

 この色の組み合わせを「ozocode」と言います。速度を変えたり止めたりというのは誰でも想像がつくと思いますが,ozoodeが面白いのは,動きだけではなく指示を出したり条件分岐をしたりという,複雑な指示が出来ることにあります。

 例えば,線が交差する部分を通過するとき,ozobotはランダムにその進行方向を変えます。これはこれで面白いのですが,常に右に曲がって欲しい時には「右に行け」というコードを置けば,その通りに動いてくれます。左もしかりです。

 また,ジャンプと言って黒い線を無視して進む事も指示できますし,30秒後に止まったり,3秒間止まったりという「実時間」に従う指示も存在します。これ,結構大きな事ですよ。なぜなら,リアルタイム処理ですからね,30秒後に止まるという指示を出せば,そこから30秒間の間にどんな指示があっても止まることになるので,OSでいうところのプリエンプティブな世界なわけです。

 ジグザグに動いたり,クルクル回ったりする動作も1命令です。これは本来複数の命令で実装される動作ですが,ozocodeではそうした細かい動作をひとまとめにして1命令にした「マクロ」をよういしてあるわけですね。なかなか本格的じゃないですか・

 さらに決定的と思うのは,カウンタを持っていることです。マシン語を使える人なら想像がつくと思いますが,CPUの条件分岐はすべからく,カウンタの中身を比較することで行われます。つまり,カウンタこそコンピュータのコンピュータたるゆえんであるのです。

 ozocodeには,なんと4つのカウンタが用意されています。線が交差した時に増えるカウンタ,曲がったときに増えるカウンタ(つまり交差点を直進した場合には増えない),(コードではない)色が変化したときに増えるカウンタ,そしてコードによって増減可能なカウンタです。

 それぞれ,カウンタが5になったら,ozobotは停止します。

 特に面白いのは,やはり増減可能なカウンタです。カウンタを+1する(インクリメントと言いましょう)コードと,-1する(デクリメントと言いましょう)コードが存在し,カウンタが5になると止まるというものになります。ただし,カウンタが持てる数は最大で5なので,インクリメントを10回繰り返しても5までしか増えません。

 止まるというのが物足りないところではありますが,動くか止まるかですので,立派な条件分岐です。

 これを使えば,ループが書けます。5回のループでも何度か繰り返せば任意の回数をループできます。

 さて,こんな風にozobotに指示を出すのに,紙と何色かのペンがあればいい,といのはなかなか興味深いもので,コンピュータや電気で動く機械を使わずにプログラムを作る事を「アンプラグドプログラミング」と呼んだりします。

 実のところ,プログラムを書くことには,コンピュータに指示を与えることとや,論理的な思考を鍛えることにゴールがあるにもかかわらず,プログラムを書くために覚えないといけない作法や決まり事,プログラムを書いたり走らせたりするために覚えないといけない機器の使い方がたくさんあり,これがプログラム作成という本質に届く前に大変面倒なこととして立ちはだかります。

 我々は,プログラムを書くのに当然のこととしてエディタを使っていますが,エディタの使い方を知らないとプログラムを書けないため,まずはエディタの使い方を習得しないといけないわけです。急にviで書けと言われて困惑した経験,ありませんか?

 プログラムを書くことで食べていく覚悟のある人は商売道具としてエディタの習得をする価値がありますが,プログラム作成を通じて論理的思考を学ぶ子供たちにとって,エディタの使い方は本質ではありません。

 そこで,アンプラグドです。何色かのサインペンに紙があれば,ozobotをプログラムできるわけです。

 そして,さながらozobotは,擬人化したCPUです。これは楽しいですね。

 こんな風に,ozobotに指示を出し,思い通りに動かす事が出来ればもう立派なプログラマーです。

 ozobotにはもう1つのプログラム方法があります。それがozoblockyです。

 Scratchというプログラミング環境をご存じの方も多いと思います。子供たちのプログラム学習によく使われる学習環境で,GUIベース,直感的,そして文字を打ち込む必要がほとんどないというものです。

 やりたいことを選んで並べて完成なのですが,これとほとんど同じ方法でozobotをプログラムするのが,webベースの環境「ozoblocky」です。

 ozoblockyはなかなか本格的な機能を持っていて,ループも分岐も自由です。変数を持つこともサブルーチンを作る事も出来るので,かなり本気のプログラムが作れるはずです。

 そして作ったプログラムは,ライントレーサらしく,光センサ経由で転送されます。ozoblockyの画面の一部が明滅し,これをozobotの光センサが受信してプログラムが転送されるのです。

 時間はかかるし信頼性も今ひとつなのですが,これまた転送のためにあれこれと設定したり作法を学んだりするのも面倒ですし,物理的なインターフェースを用いるなら,それが利用可能な環境でしかozoblockyを使えません。

 転送できない場合のトラブルシューティングに手間も時間もかかることを考えると,こういう方法はとても賢いと思います。

 6歳になる娘に,ozoblockyの使い方を少し説明し,ozobotに転送して動かしてみると,娘は目をキラキラさせて自分でやりたいと言い出しました。

 娘は動きよりも綺麗な色で光ることに興味を持っているので,ozobotを様々な色で光らせて遊んでいますが,すでにループも組み込んで,自分のやりたいことをプログラムに書き,その結果を実際に確かめて修正と改良を繰り返すという,まさのプログラミングの醍醐味を楽しんでいます。

 自分のやったことのフィードバックを得ることやものを作るという事は,普遍的な楽しさがあるということなんでしょうね。

 ozobotの最新版でるevoでは,BLEを使ってスマートフォンをリモコン代わりにしたり,ozoblockyのプログラム転送をBLEで行ったりして,さらに便利に面白くなっています。障害物センサも搭載しているので,これもうまく使えば面白い事が出来そうです。

 うちは,子供が使えるiPadが古いせいでBLEが使えず,せっかくのevoの機能を生かせていません。しかし,それでも6歳の子供は面白がってozobotにプログラムを書いていますし,それが「プログラミング」であることをすでに知っていて,およそどんなコンピュータも同じ理屈で誰かが動かしていることを理解しています。

 残念なのは,結構高価な事です。evoのスタータキットが約2万円です。bitだと海外では50ドルくらいから買えそうなのですが,日本では残念ながら2万円弱と大変高価です。

 2つで1万円くらいだと,むしろbitをおすすめしたいところなのですが,しゃべることが思いのほか楽しい事もあり,この際evoをおすすめしたいと思います。

 最近,コンピュータが必修に決まった事で,親御さんが浮き足立っているようです。そうした人々を狙った業者も続々出ていて,なんだか不気味な感じがするのですが,小学校でプログラムに触れた私などからすれば,子供の好奇心はきっかけで開花するもので,そのきっかけとして今どきの子供にはozobotがあることを,とても羨ましくおもったりするのです。

 惜しいのは,私が子供の頃のパソコンは,子供自身が欲しくて欲しくてたまらず,親にねだって買ってもらったものなのに,ozobotは肝心の子供の目に触れるが少なく,いわゆる意識の高い親が子供に買い与えるものになっていることでしょうか。

 子供の好奇心は,自らの内側から発生したものこそ,本物である事を書いておきたいと思います。

 さて,私ももう少しアンプラグドプログラミングを愉しもうかね。

 

ページ移動

ユーティリティ

2020年05月

- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

新着エントリー

過去ログ

Feed