今回、こうしろうは登場しない。マインドストーム(正式名称:Mindstorms 「Robotics Invention System(通称RIS)」)のプログラム開発環境について説明させていただきたい。RIS標準のプログラム開発環境は、付属のCD-ROMをセットアップした際にPCにインストールされる。起動すると「キィーン、ガシャーン、ゴゴゴーン」と雷鳴が響き渡り、宇宙を背景にRCXコードをブロックのようにつないでプログラムを作成していく環境である。近未来的な開発環境であるがRISの心臓部RCXの機能をフルに活用できるわけではない。実は、この環境はSpirit.ocxというActiveXコンポートネントを利用している。ということは、ActiveXコンポーネントを利用可能な言語ソフトなら、RCX用のプログラムを作成できるということである。候補としては、Visual Basic(VB)やDelphiなどが考えられる。AccessやExcelでも良いだろう。Visual BasicでRCXのプログラムを作成する方法は日経ソフトウエアの2000年5月号に詳しく書かれている。

 もうひとつ、フリーソフトを使う方法がある。NQC(Not Quite C = 完全ではないC)という言語とRCX Command Center(RCXCC)の組み合わせは強力で快適な開発環境である。NQCはC言語に似た文法を持つプログラム言語であり、RCX Command CenterはNQCをコンパイラとして使用する統合開発環境である。NQCはDOSベースのコンパイラであるが、RCX Command Centerから起動することにより簡単に使える。RCX Command Centerにはエディタや、RCXへのプログラム転送機能はもちろんのこと、『RCX Joystick』や『Direct Control』などのリモートコントール・ツールも用意されている。ロボットを作成して、プログラムを組む前に動きを確認したい時、リモコン・ツールは便利だ。また『Watching the RCX』というツールを使えば、RCXのバッテリの状態まで確認できる。RCX Command Center もSpirit.ocx を利用している。

 NQCの開発者はDave Baum氏で、RCX Command CenterはMark Overmars教授の手によるものだ。NQCの構造はC言語に近いが、RCXを文字通り暴走させてしまうポインタはサポートされていない。そのかわり、モーターをコントールする関数やセンサーをウォッチする関数などが豊富に用意されている。つまり『C for Mindstroms』なのである。RIS標準のプログラムプログラム開発環境に比して、NQCが優位な点は以下の3点である(と思う)。

1. 変数が32個まで使える。(「さっき右に曲がったから、こんどは左に曲がる」などの制御が変数を使えば簡単にできる。)
2. NQC+ RCX Command Centerは、RIS標準のプログラム開発環境よりも軽い。(我が家の非力なPCでも快適なスピードで動作する。)
3. RCXはマルチタスクをサポートしているが、RIS標準のプログラム開発環境ではタスク間の干渉をきちんとコントールできない。NQCを使えば、RCXにスムーズな動作をさせることができる。

 さて、話は変わってティーン・エイジャーが初めてプログラムを学習する場合、どの言語がもっとも適しているのであろうか。現在のプログラム言語の2大勢力はVBに代表されるBasic系言語とC言語である。VBの仲間は、AccessやExcelで利用可能なVBAや VBScriptである。Basic系の言語はビル・ゲイツ氏の目の黒いうちは万全である。(ゲイツさんの目は青かったか。)

 もう一方の雄、C言語の仲間はオブジェクト指向のC++、インターネットで活躍するJavaやPerlである。ほとんどのOSがC言語で書かれていることを考えれば、この言語に触れておいて損はない。Pascal系のDelphiも孤軍奮闘している。一時、過去の遺物のように疎ましがられたCOBOLもWebアプリケーション開発という新しい働き場を得て、息を吹き返しつつある。

 適用範囲の広さと将来性を考慮すると、やはりBasicかCだろう。VBはインタープリタとしてもコンパイラとして使用できるので、プログラムの動作を確認しながら学習を進めていくことができる。しかし、言語の仕様としてはどうだろうか?初めてプログラミングを学習する人には、プログラムの構造がわかりやすくかつエレガントなものが良いであろう。Basicは気を付けていないと、だらだらとしたコードになりやすいし、突然Goto文でラベルにジャンプしたりする。きれいなコードを書くことが難しい言語である。ティーン・エイジャーが初めて学ぶ言語はオブジェクト指向ではなく、ポインタも使えないC言語が一番適しているのではないだろうか。ポインタを使うとコードが妙な記号だらけになって暗号文みたいなプログラムになってしまう。

 オブジェクト指向ではなく、ポインタも使えないC言語とは正に『NQC』である。プログラムを少しずつ(部分的に)作成して、RCXとレゴ・ブロックで作成したロボットに転送し、動作を確認できるのだから、楽しい学習環境であることに間違いはない。

 そういうわけで、私は『ティーン・エイジャーのためのNQC入門』と題するテクストを作成しようと計画している。いつ完成するかもわからないし、こうしろうが使ってくれるという保証もないのであるが…。