・タイトル モバイルプログラミング環境 Broom ・作品ジャンル プログラミングツール ・作者情報 わんだらぁ e-mail wanderer@po.sakura.ne.jp HP http://www.wanderer.jp ・使用方法 起動方法は通常のWitch用ソフトと同じです。 broom.fx をカートリッジに転送します。 Sound.IL BMPSaver.ILも必要なので転送しておいてください。 シェルからBroomを起動します。 細かな操作方法などは、付属の manual.html ファイルをご覧ください。 マニュアル内のチュートリアルを実行すれば、基本的な使い方は理解 出来ると思います。 ・動作環境 WinderSwanColor本体 (モノクロ版WonderSwan未対応) FreayaOS 1.1.5 (1.1.6β以上推奨) SoundIL 1.02 BMPSaverIL 2.03 プログラムエリア空き 48KBytes以上 ワークエリア空き 4KBytes以上 ・コンセプト ワンダースワン本体のみで、プログラミングが可能なツールを製作する。 オブジェクト指向言語を採用し、プログラミングやオブジェクト指向の学習ツールとしても使えるようにする。 WonderSwanのハードウェア機能を可能な限りサポートし、ゲーム製作など実際のプログラミングに使える機能を持たせる。 画像や音楽などはPCで製作したデータも、リソースとして簡単にアクセスできるようにする。 ・アピールポイント ワンダーウィッチが発売された時からの夢だった、実機上でのプログラミングをついに可能にしました。 Broomはエディタ、バイトコードコンパイラ、実行用仮想マシン、各種ライブラリを総合した統合開発環境で、かつてのパソコンBASIC並みの手軽さでゲームなどの各種プログラミングを楽しむことが出来ます。 エディタはワンダースワンのボタン配置にあわせて最適化され、キーボードがなくても十分にプログラムの入力、編集を行えます。 プログラムの入力は、メニューから入力する項目を選びながら進めて行きますが、エディタが入力中の行の内容を自動的に解析し、文脈に従って必要な項目だけを選択表示します。 ワンダースワンの11個のボタンでスムーズに操作でき、指がボタン配置を覚えやすいように配置したので多少の慣れは必要ですが、携帯で漢字かな混じりメールを打つのと同程度かより楽にプログラムの入力が出来ます。 プログラミングに使うオリジナル言語、BroomScriptはガベージコレクタまで備えたオブジェクト指向言語でありながら、従来の手続き型プログラミング並みの手軽さで使うことができます。 ワンダースワンのハードウェア機能の多くをライブラリとして提供しているので、スプライトなどのハードウェアの操作が簡単に行えます。またセグメントを一切意識する必要がありません。 BroomScriptは、ワンダースワンの実機上でプログラミングする事を念頭に、言語構造の美しさ、入力の手間をなるべく減らす、高速コンパイルが可能、初学者がBroom以降、C#やJavaなどの現代的プログラミングへステップアップするための土台になる事などの条件を踏まえて、言語自体を一から設計しました。 モダンな言語構造にするため、あえて実行速度は優先しませんでした。 ・技術解説 「Broomでのプログラミングに使うメモリ」を確保するため、省メモリのための工夫を多用しています。 省メモリを図るのと入力コストの低減のために、入力されたプログラムは編集用のバイトコードで保持されます。その為、プログラムをテキストで保存する場合と比べ、必要なメモリが少なくてすみます。 変数名、関数名などのシンボル名もID番号化し、番号とシンボルの関係も参照カウンタを使って管理しています。 結果「Broomでのプログラミングに使うメモリ」には32KBytesを確保しています。 プログラム入力時、文脈に従って必要な項目だけを選択肢として提示するため、選択肢データ自体に文脈情報を持たせて、エディタで文脈解析を行っています。 実行時には編集用バイトコードから実行用のバイトコードへコンパイルされますが、コンパイルは自動的に高速で行われる為、コンパイルされていることを意識しません。 コンパイルを高速に行うため、コンパイラは1Passで処理していますが、関数が定義される前に参照された場合など、1Passではアドレスの解決が出来ない事があります。そのような場合は実行時にアドレスを決定する、遅延処理を行います。 コンパイルされたバイトコードは仮想マシンで実行されます。仮想マシンにはインクリメンタルガベージコレクタが装備され、不要になったオブジェクトを回収しメモリを開放していきますが、その動作はプログラム実行と平行に行われるため、ガベージコレクタによる一時停止現象は発生しません。 製作にはDigital Mars Cコンパイラを使用しました。