6月16日 「LejOS(レホス)でもするか」とJavaでプログラムを作成し,MindStormsの頭脳RCXにダウンロードする方法をこうしろうに説明する。RCXには前回,標準のファームウェアに代えてLejOSをロードしてある。LejOSはRCX用のJavaVM(仮想マシン)である。コンパイルはlejoscコマンドで行う。Java2 SDKのバージョンが1.4だから -target 1.1とオプションを付けなくてはいけない。lejosコマンドでRCXに転送するのだと矢継ぎ早に説明する。
「練習に一度,c:\lejos\examples\hworldにあるhelloworld.javaをコンパイルして,転送してごらん」とスタートメニューからMS-DOSプロンプトを選び,C:\WINDOWS>とだけ表示された真っ黒の画面に切り替えると,こうしろうは固まってしまった。
「CDでc:\lejos\examples\hworldに移動して,コンパイルすればいいんだよ」,「え,CDと打てばいいがけ」とこうしろう。「そうか,お前MS-DOSを知らない世代か!」そう言えば,こうしろうが初めて触ったPCはMacintosh Classicで,その次はWin95マシンであった。CUI(キャラクタユーザーインターフェイス)のDOSでパソコンを使った経験がほとんど無い。
「CDはchange directoryの略で,“cd \”とすると\(ルート)に移動し,“cd
ディレクトリ名”でそのディレクトリがカレントディレクトリになるんだよ」と説明する。自分が簡単だと思っていることは,相手も当然わかっているものと思い込んでしまう。
Javaの場合,ソースファイルの拡張子がjavaであり,lejoscでコンパイルして拡張子がclassの中間コード(バイトコード)を作る。lejoscは必要な設定を行ってから,JavaのコンパイラJavacを呼び出しているだけなのだ,などとコマンドを打ち込むこうしろうの横で説明を続ける。
「今度は,helloworld.javaを少しいじってみよう」と,サンプルプログラムのコードの説明に移る。
import josx.platform.rcx.*;
public class HelloWorld
{
public static void main (String[] aArg)
throws Exception
{
LCD.clear();
TextLCD.print ("hello");
Thread.sleep(2000);
TextLCD.print ("world");
Thread.sleep(2000);
}
}
import josx.platform.rcx.*;はjosx\platform\rcxディレクトリにあるJavaのソースファイルを読み込む。それからJavaの場合,クラス名(HelloWorld)とソースファイル名(helloworld.java)が一致していなくてはならない。プログラムの中味はLCDにhelloと表示し,しばらくスリープしてからworldと表示するだけのものである。
helloworld.javaをコピー,修正してこうしろうが作ったプログラム(Japan.java)が以下である。
import josx.platform.rcx.*;
public class japan
{
public static void main (String[] aArg)
throws Exception
{
LCD.clear();
TextLCD.print ("japan");
Thread.sleep(500);
LCD.clear();
TextLCD.print (" ");
Thread.sleep(500);
TextLCD.print ("japan");
Thread.sleep(3000);
}
}
Japanと表示して,しばらく表示をクリア,再度Japanと表示するプログラムだ。
「どうしてジャパンなの?」と聞くと「ワールドカップ開催中だから」とこうしろう。残念ながら,勝てそうだと多くの日本人が思っていたトルコに負けてしまった。
実は当初,TextLCD.print (" ");のコードは記述されていなかった。LCD.clear();でLCD上の表示も消えるものと考えていたようだ。「clear()は内部的な処理だけなんだわ」とTextLCD.print (" ");を挿入すると,Japanが途中で一旦消え,再度表示された。「あっ,こんどはうまくいった」と言うこうしろうの傍らで,こういうツマツマとした学習の仕方もいいなあと思った。
インターネット上に情報が溢れていることやプログラムソースのオープン化の影響もあり,プログラミングの学習もすぐ結果を求めるような風潮がある。書籍や雑誌,そしてネット上で提供されるサンプルプログラムをコピーして,とりあえず動くようにする。時間を掛けて理解しようとはせずに,結果だけを求める。まるでファーストフードのようだが,昨今の不況や世の中の変化の速さを考えると,致し方ないことなのかもしれない。
しかし,LejOSには幸か不幸か,日本語の資料がほとんどない。「こうすると,どうなるか」とコードをいじりながら,進めて行くしかないのである。インターネット以前の時代,本屋にコンピュータ書のコーナーもない時代は,そういう風に勉強していたのである。趣味のプログラミングなんだから,あえてスローフードのようにゆっくりと学習していくのもいいかと感じた。