高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

MindStorm

 先週より学校で、MindStormというものを使って遊んで勉強しています。多分キーワードになってると思うので説明は省略します*1が、レゴブロックみたいなの(というよりそのもの)を組み立てて、それにモーターやコントローラをつけて動かそうと言うものです。
PCとUSB接続出来るタワーというツールを使うことで、ブロックについてるコントローラと赤外線通信が出来、それでプログラムを送信、指定通りに動かすことが出来る というものです。
 プログラムは結構いろんなことが出来て、前進、後退、ジグザグ移動などといった基本動作から、三つまで装備可能なモーターのうち、どれを動かすだとか、どっち向きに動かすとかいったことまで指定できます。
プログラミングの仕方もちょっと変わっていて、ブロックをつなげることでプログラミングを行います。たとえば前進なら前進、後退なら後退 というような。
さらにこれも面白く、「前進」という命令もいくつかの基本的な命令の組み合わせです。ユーザーはその小さなブロック(命令)を組み替えて、いろいろなプログラミングをすることも出来るし、大きなブロック(命令)をとりあえず並べても動かすことが出来る という仕組み。

 今思うと、この組み立てる流れが、id:yurliさんとしていた授業の様子と重なります。「命令をブロックにして考える」というのを何度も強調して話したものです。ブロックはいくつかの関数や演算の組み合わせ。そんなかんじがこのMindStormのプログラミングに似てるなあ・・・っと思いました。


 まあ、わたしもこんな流れを予期していなかったわけではありません、それにこんな流れになるのかな…と想像もしていました が、やっぱりこれが、初心者向けプログラム言語のあるべきやり方かなあ。

  1. ブロックを組み合わせてステートメントを作る
  2. 気に入らなければブロックの中身を改造して(新しいブロックを)作る
  3. できあがったらコンパイル .NET言語のバイナリアセンブリ完成!

 っていう感じで。ブロックを構成するのは、もちろんC#などのコードです(もっと小さい単位があっても良いけど。大ブロック→子ブロック→コードみたいな)。プロユースにも一応耐えられるし、初心者でもOKな言語…になるかな?

*1:なってませんでした(^_^;) http://www.tani.cs.chs.nihon-u.ac.jp/RC/lego.html など参照です