プログラミングにおける回転と方向

本来,プログラミング教育の中に方向をどうやって教えるか,という問題は入っていないと思います.それは別の遊びやなにかで教えてゆく,というか普通に遊んでて年齢が上がれば自然と獲得できるものだとは思います.

それでも,ある種のプログラミング教材で,ロボットなどの制御からプログラミングにつなげているタイプでは方向感が必要になってしまいます.ロボットへの命令が「前へ進め」「右に曲がれ」となっていて,実際に画面上ではロボットはどっちに進むのか,わけがわからないですから.

それと区別するためなのか,ロボットから見た相対的な方向に対して,画面上で見た絶対的な方向を示すために,上や右の代わりに,北や東という方角を使ったりしていますが.そもそも地図が読める学年にならないとその言葉自体意味がないのではと思います.

こういうプログラミング能力とは直接関係のないことをプログラミングを学ぶ上で求めてしまうのは遠回りというか,そこで混乱してしまう子供をみるととても悲しい気持ちになります.

ビスケットでの回転と方向の教え方はずいぶんと進化しました.そのあたりは,特に丁寧に小さなステップに分けて教えています.

まず,絵を回転させるというボタンは最初はありません.

絵には進むべき方向というのがあって,その方向に絵を動かすことができたら,とても自然に見えるということを丁寧に教えます.

2016-11-07_08h12_41
ここでは,ロケットは上に進み,流れ星は左下に進みます.流れ星には尾が描かれていて,その方向に進むメガネを作って動かすと,とても気持ちがよいようになります.最初に変な方向に動かしてみて,正し方向があるんだということを見せています.印象では幼稚園児に対してはここくらいまでは全員なんとか付いてこれています.

もう少し進んでから(何回か後です)回転ボタンが現れて,絵を斜めにして画面におけるという機能が新たに追加されます.これは小1くらいからですね.

2016-11-07_08h13_09
こうすると,画面にいろんな方向に置いたロケットは上ではなくいろんな方向にすすみます.このメガネの本当の意味は「ロケットは上に進む」ではなくて「ロケットの絵の方向に進む」ということだったのです.ここで初めて相対座標(ロケットにとっての方向)という概念が登場します.このロケットがいろんな方向に飛ぶことで,びっくりする大人の方が何人もいらっしゃるのも面白いです.地図を読むのが苦手というのと関係があるかもしれません.

次にメガネの中の絵を斜めにする方法を教えます.絵を斜めにするということを連続すると絵が回転します.

2016-11-07_08h50_11
その場で回転する方法と大きな円弧に沿って回転する方法があって,それらを意識できるような絵を使って教えます.ここでも方向感がそれほどしっかりしていなくても大丈夫です.

さらにレッスンが進んで,絵が衝突したときに動きが変わるというところに来た時に,やっと相対的な方向がプログラムの中に出てきます.
2016-11-07_08h21_51
これは,「ロケットがまっすぐ進む」「ロケットの右に星があると,左によける」「ロケットの左に星があると,右によける」というメガネです.これを画面上でいろんな方向のロケットで走らせると,ロケットが星にぶつからないように右や左によけた動きになります.いまメガネの意味を言葉で言ってしまいましたが,右や左と言わなくても図を指示しながら「こっち側に星があったらこっちによける」という言い方でも十分通じます.メガネの上では上向きのロケットに対して右や左を使ってますから,そこで混乱することはなく,画面の上でいろんな方向になったときにそれがいろんな方向によけてくれるということが自然に受け入れることができます.

ここまで教えると,星を並べて自分の好きなコースでロケットを誘導して進ませて遊ぶ子がでてきます.ロボットのライントレースを自分で発見して試してみている,ということですよね.その遊びができるとロケットに対する相対的な方向感がしっかりと身についているように思います.

このようにライントレースまでの道のりがとても長いということと,ロケットに対する右や左という相対的な方向の概念が十分に理解できていなくても,つまづくことなくロケットを制御するプログラムが書けるようになっています.

これらの一連の遊びを丁寧に確実に行ったとして,その子に方向感覚が身につくようになるのかどうかは分かりません.僕自身それにはあまり興味がありません.しかしその能力が無ければプログラミングの楽しさを理解できない,という風になってしまうのはなんとも.

シェアする

  • このエントリーをはてなブックマークに追加

フォローする