きょうは、レゴ マインドストーム NXTに付属している、開発環境のお話。
NXTの心臓部といえるコンピュータモジュールのことをTHE NXTと言うらしい。このTHE NXTにはARM7というマイクロプロセッサが入っていて、プログラムを書くことができる。
具体的には、PC上でプログラムを作成し、USBやBluetoothでプログラムを転送し、実行する。
THE NXTにはOSのようなBIOSプログラムが内蔵されており、バイトコードとなるプログラムを転送すると、仮想環境の上でそのプログラムは実行される。
パソコン上で作成するプログラムは、正確に言うとバイトコードを作成することになる。
ソフトウエアをインストールすると、
というアイコンがデスクトップに出来上がる。こいつをダブルクリックすれば、開発環境が起動する。
起動には結構時間がかかる。
こんなようなダイアログが表示されてしばらくすると、開発環境が起動してくる。
中央と右側の画面にはFlashが埋め込まれており、アニメーションとともに解説をしてくれる。
中央の画面に出ている、Getting Started を選択すれば、右側のRobo Centerの一番上から順番にチュートリアルを進めることができる。このチュートリアルを進めれば大体のNXTの使い方がわかってくる。
中央の画面に出ている、Software Overviewでは、本開発環境の画面の説明がアニメーションでなされる。
中央下あたりにある、[Start New Program]のところに、新しいプログラム名を入力して[Go >>]を押せば、新しいプログラムを書く準備ができあがる。
では、画面の様子をひとつひとつ見ていこう。
右側のRobo Centerはチュートリアルの画面である。ステップごとに手順が示され、LEGOの組み立て方から始まり、プログラムの作成の仕方まで、サンプルを通してアニメーションで説明される。チュートリアルを見ながら進める場合は、この画面のままで進めることだろう。
右上のTabを切り替えると、My Potalとして、LegoのWebページと連携される。最新のソフトウエアのアップデートのニュースであったり、新しい組み立て図の紹介が表示されたりしている。
右上の[x]を押すことにより、右側の表示を隠すことができる。上のタブのボタンをもう一度押せば、再び表示される。
一からプログラムを描く際は、チュートリアルなどは必要ないので、この状態の画面を使用することになるだろう。
左側にあるこいつがパレットと呼ばれる、部品の集まりだ。これらの部品のことをNXTではLegoらしく、ブロックと呼んでいる。
このブロックをつなげていくことで、プログラムを作成していく。
プログラムを作成すると言えば、テキストエディタでがりがり書く印象が強いのだが、NXTではほとんどマウスでプログラムを書くことができる。マウスでプログラムを書くので、たいしたことができないと思われがちだが、実は強力なコマンド軍であり、逆にテキストエディタで書くプログラムよりも高度なプログラムを作成することができる。
もちろん、いくつかの問題点もあるのだが、それらを忘れてしまうほど、この環境は強力なのである。
パレットにはコモンパレット(共通パレット?)、コンプリートパレット(完全パレット?)、カスタムパレットの3種があり、コモンパレットは一般的なブロックが、コンプリートパレットは、NXTで使用できる全てのブロックが並んでいる。
カスタムパレットでは、ユーザーが作成したブロックの集合を新しいブロックとして登録することができる。オブジェクト指向で言うところの部品の再利用である。
画面上にひとつブロックを置いてみた。 ブロックを画面上に並べるには、左のパレットから、ドラックアンドドロップするだけである。
画面の下の方を注目して欲しい。
画面上の部品を選択すると下のこの部分の表示が変化する。
この部分はコンフィグレーションパネル(設定パネル?)と呼ばれる。
Software Overviewでは、選択されているブロックの調整(adjust)を行うところと説明されているが、プログラマ的な言い方をすれば、ブロックのプロパティ(属性)を設定する場所である。
ブロックごとに違ったプロパティが設定できるため、選択するブロックによってこの画面は随時変化していく。
現在、選択されているブロックはサウンド(音声)に関連するブロックであるため、サウンドに関連する属性が表示されている。
その右にはヘルプが表示されている。現在選択されているブロックに関連するヘルプが表示されているので、非常に便利である。[More help >>]をクリックするとWebブラウザが起動され、詳細なヘルプが表示されるはずなのであるが、何故か僕の環境では表示されない。FireFoxじゃだめなのかなぁ。
ヘルプの部分を切り替えると、マップビューとなる。これは、メインの画面に部品が収まらなくなった際に、サテライトビューの役目を果たす。メインの画面が、全体のどの部分を表示しているのかをあらわすのである。
残念ながら、まだ部品を一個しか置いてないので、あまり意味をなさない。
これは、先日Webを参考にして、時計を作った際のプログラムである。ここまで大規模なプログラムだと、マップビューの効果がよくわかる。
おそらく、慣れてくると、ヘルプではなくこちらのマップビューを表示しておくことになると思う。
メインの画面の右下にあるのがこいつ。 The Controller(コントローラ)と呼ばれるものである。これは、パソコンからNXTにプログラムを転送したり、NXTの設定を変更したりするのに使われる。
左下のボタンが、プログラムの転送である。
画面上のプログラムをバイトコードにコンパイルし、結果をNXTに転送する。
右上は画面上で選択されているブロックの部分だけプログラムをコンパイルし、「Selection」というテンポラリの名前で転送して実行までする。部分的に動作を確認したいときに使う。プログラムのデバッグの際はこのボタンを多用することになる。
中央のボタンはプログラムをコンパイルし、現在のプログラムの名前でプログラムをNXTに転送する。間違えて同じ名前で転送して上書きしまう可能性があるので注意。警告は出ない。
右下のボタンはプログラムの停止。
左上は、現在のNXTの状態を表示するボタンである。
この様な画面が出てきて、どのNXTと接続するかを選択することができる。右側には、現在接続されているNXTの状態を表示している。
タブをMemoryに切り替えると、NXTのメモリ内の状態、どんなファイルが入っているかなどが、表示される。ここで、必要の無いファイルを削除したり、転送したりすることもできる。
間違えて消しちゃって、買ってきたときの状態に戻したい場合は、コールドリブートからFirmwareのUpdateをするとよい。
コールドリブートは、電源を入れた状態で、リセットスイッチを4秒以上押すことでなされる。コールドブートしたら、Firmwareの再転送をしない限り、起動しない。
リセットスイッチは丁度USBコネクタの裏あたりにある、LEGO Technic hole(要するにポッチの穴)の奥深くにある。爪楊枝などで押せばOK。
Firmwareの再転送はメニューのToolsの中に、Update NXT Firmware…というのがあると思う。こちらから、Firmwareの再転送をすることができる。再転送の際に、内部のファイルもすべて転送され復元される。
まず最初のブロック。
一番左から、 「New Program(新しいプログラム)」「Open Program(プログラムを開く)」「Save Program(プログラムの保存)」「Cut(切り取り)」「Copy(コピー)」「Paste(貼り付け)」「Undo(元に戻す)」「Redo(やり直し)」。このへんは、Windowsの標準と同じである。
次のブロックは、「Pointer Tool(選択ツール)」「Pan Tool(移動ツール)」「Comment Tool(コメントツール)」。これは、中央の画面におけるマウスのモードを切り替えるものである。
Pointer Toolは、マウスをブロックを選択したり、移動したりするモードにする。
Pan Toolは、マウスを使って中央の画面を移動させる。もちろん、ブロックをたくさん置いて、十分中央の画面が広くならないと移動はできない。
Comment Toolは画面上の任意の場所に文字を書くことができる。この文字はプログラムの動きにはまったく影響を与えない。しかし、プログラムを書いた経験のある人なら、コメントの重要性が理解できると思う。このようなLegoのツールでもちゃんとコメントの機能が用意されているところが、とても興味深い。