92話で紹介したLeJOSのことを覚えている人はいるだろうか。LeJOSはMindStromsの黄色い本体RCX向けのJavaVM(バーチャル・マシン)であり,プログラム開発環境である。92話に書いたようにhttp://lejos.sourceforge.net/download.htmlからWin32 leJOSをダウンロードして,解凍してできたlejosフォルダをc:\などに移動し,pathに設定すれば利用可能になる。もちろんJ2SDKがインストール済みであることが前提だ。
コマンドプロンプトにlejosfirmdl --tty=usbと打ち込み,RCXのファームウエアを書き換えれば,Javaで作ったプログラムを転送できるようになる。RIS2.0のIRタワーはUSB接続なので--tty=usbというオプションを付けてファームウエアをダウンロードする。
そして例えば,次のようなプログラムをエディタを使って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); } } ----------------------------------------------------------コマンドプロンプトで,lejosc HelloWorld.javaのように入力してコンパイルする。コンパイル・エラーがなければ,set RCXTTY=usbと環境変数を設定後,lejos --tty=usb HelloWorldとしてRCXにプログラムを転送する。
暗黒のコマンド・プロンプト画面でコンパイル,転送を行うのはやはり億劫である。C言語に似たNQCをコンパイラとして使うRcxCCやBrickCCなどの統合開発環境のほうが便利だ(NQCについては「中学生のためのNQC入門」を参照)。こうしろうのLeJOSによるプログラミングも長続きはしなかった。
JavaでMindStormsのプログラムを作りたいときはどうすればよいだろう。ロボットを目に見えるオブジェクトとしてJavaでオブジェクト指向を学ぶことはできないかとNetBeansやEclipseでLeJOSを使えないか海外のサイトを調べてみた。MacでNetBeansでLeJOSという例を一件見つけ,まねてみたがうまくいかなかった。
EclipseとLeJOSで検索すると,LDT(leJOS Development Toolset)というプラグインが見つかった。LDTをダウンロード(http://lejos.sourceforge.net/tools/eclipse/ldt/),解凍して出来たfeaturesフォルダとpluginsフォルダをeclipseをインストールしたフォルダに上書きする(J2SDKに加え,Eclipse3.Xがインストール済みであることが前提となる。筆者の使っているEclipseはバージョン3.1.1である)。これだけで,EclipseでMindStormsのプログラミングが可能になるのだ。何の設定もいらない。Eclipseプラグインの仕組みに脱帽である。

メニューにファームウエアのインストールが追加されている。ファームウエアをインストールしてみると,最後に以下のメッセージが出力される。

しかし,RCXからは準備OKと言いたげな音がするので,構わずプロジェクトの作成に進む。

ウィザードでleJOS RCX projectを選択しプロジェクトを作ったら,次に新規クラスを作成する。
---------------------------------------------------------- import josx.platform.rcx.*; public class Targe { public static void main (String[] aArg) throws Exception { LCD.clear(); TextLCD.print ("boa"); Thread.sleep(2000); TextLCD.print ("targe"); Thread.sleep(2000); } } ----------------------------------------------------------こんな風にコードを入力した。Hello worldがboa targe(ポルトガル語でこんにちは)に変わっただけだ。
さて,ここで困った。RCXにこのプログラムをアップロードする方法がわからない。ファームウエアのインストール以外にメニューには何も追加されていない。

「実行しかないわな。他に考えられんもんな」とパッケージ・エクスプローラーでTarge.javaを右クリックして,実行-leJOSを選ぶと次のようなエラーメッセージが出力される。
"起動中" 中に内部エラーが発生しました。
---------------------------------------------------------- java.lang.IllegalArgumentException: Path must include project and resource name: /BoaTarge at org.eclipse.core.internal.utils.Assert.isLegal(Assert.java:60) at org.eclipse.core.internal.resources.Workspace.newResource(Workspace.java:1560) at org.eclipse.core.internal.resources.Container.getFile(Container.java:125) at org.lejos.tools.eclipse.plugin.launch.RunDelegate.launch(RunDelegate.java:63) at org.eclipse.debug.internal.core.LaunchConfiguration .launch(LaunchConfiguration.java:590) at org.eclipse.debug.internal.core.LaunchConfiguration .launch(LaunchConfiguration.java:515) at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:733) at org.eclipse.debug.internal.ui.DebugUIPlugin$6.run(DebugUIPlugin.java:931) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:76) ----------------------------------------------------------エラーメッセージを手がかりにググると,
You must set in your project properties your “Default output folder” as yourProject/bin
という解説がみつかったので,デフォルト出力フォルダー(T):にbinサブフォルダを追記した。 これでTarge.javaを右クリックして,実行-leJOSでプログラムが転送できるようになった。

緑のRUNボタンを押すと,boaに続いてtargeと表示する。Thread.sleepの引数はミリ秒(1/1000秒)である。
もし,転送がうまくいかなかったら,ウィドウ-設定-leJOSでTowerのポートを確認すると良いだろう。