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には幸か不幸か,日本語の資料がほとんどない。「こうすると,どうなるか」とコードをいじりながら,進めて行くしかないのである。インターネット以前の時代,本屋にコンピュータ書のコーナーもない時代は,そういう風に勉強していたのである。趣味のプログラミングなんだから,あえてスローフードのようにゆっくりと学習していくのもいいかと感じた。