ニンテンドーDSiウェアでBASICプログラミングが楽しめる「プチコン」レビュー

配信中

価格:800ニンテンドーDSiポイント(800円相当)



●昔懐かしBASICが約30年ぶりに復活

 PCで使われるプログラミング言語の種類は非常に多い。現在、メジャーなものとしては、CやC++、Java、Visual BASICなどがあるが、今から30年以上前のPCの黎明期(当時はマイコンと呼ばれることも多かったが)では、PCに標準搭載されているプログラミング言語は、大抵BASICであった。BASICとは、Beginner's All-purpose Symbolic Instruction Codeの略で、BASIC以前から使われていたFORTRANの文法を元に、より初心者向けにわかりやすくしたものだ。

 BASICは、変数の型宣言などが不要で、文字列操作が柔軟にできるので、初心者向きだが、その反面、古いタイプのBASIC処理系では、行頭に行番号を必要とし、GOTO文によって分岐を行なうため、プログラムの流れが読みにくくいわゆるスパゲティプログラムになりやすいことが欠点だ。また、多くのBASIC処理系はインタプリタ方式で、1行毎に逐次解釈を行なうため、速度も高速ではない。

 そのため、1985年頃には、旧来のBASIC処理系の欠点を改良し、構造化に対応したFull BASICやQuickBASICなどの新しいタイプのBASICが登場してきた。マイクロソフトのQuickBASICは、その後、WindowsのGUIベースの統合開発環境に対応したVisual BASICへと進化し、現在でも使われているが、古いタイプのBASICとはかなりかけ離れてしまっている。

 プロの開発者が使う言語としては、BASICは過去のものとなってしまったが、あまりプログラミングが得意ではない初心者がちょっとした計算を行なわせるには、手軽なBASICが向いている。昔は、「ポケコン」(ポケットコンピューター)と呼ばれる大きな関数電卓のような端末がシャープやカシオなどから発売されており、こちらでもBASICが使えたので、実験データの計算などに重宝した。

 スマイルブームから3月9日にリリースされた「プチコン」は、任天堂のニンテンドーDSi/DSi LLシリーズ用のBASIC処理系だ。前述したように、BASICは昔ながらのタイプとVusial BASICタイプに大別できるが、プチコンは昔懐かしいタイプのBASICである。しかし、当時のポケコンよりも格段に高性能なニンテンドーDSiの機能の多くを利用できるので、応用範囲は広い。

 筆者も小中学生の頃は、NECの「PC-8001mkII」やシャープのポケコン「PC-1251」、カシオの「PB-100」などを愛用しており、簡単なゲームなどをBASICで書いて遊んでいたが(雑誌に投稿したこともある)、Windows時代になってプログラミングのハードルが上がったこともあり、最近は自分でプログラムを書くことはなくなってしまった。そうした状況の中で、登場したプチコンは、8bitマイコンやポケコンで育ってきた私のような人間(いわゆるアラフォー世代)には、非常に気になる製品だ。早速、購入してみたので、レビューしていきたい。

●対応機種はDSiとDSi LLの2機種、3DSは5月末に対応予定
DSi LLでプチコンを動作させたところ

 プチコンは、ROMカセットではなく、DSiウェアとしてダウンロード販売される。そのため、DSiウェアに対応していない初代ニンテンドーDSやニンテンドーDS Liteでは利用できず、DSiか、DSiを大型化したDSi LLでしか利用できない。最新のニンテンドー3DSは、現時点では非対応だが、5月末に予定されている3DSの本体ファームウェアアップデートによりニンテンドーeショップに対応し、プチコンを利用できるようになる。

 プチコンは、タッチパネルを搭載した下画面に、ソフトウェアキーボード(仮想キーボード)を表示させてプログラムの入力を行なうので、液晶画面が大きい方が使いやすい。DSiの液晶は3.25型、DSi LLの液晶は4.2型なので、できればDSi LLで利用することをお勧めする。筆者は、初代DS、DS Lite、3DSは持っていたが、DSiやDSi LLは持っていなかったので、プチコンのためにDSi LLを新たに購入した。

 プチコンのダウンロード価格は、800ニンテンドーDSiポイント(1ニンテンドーDSiポイント=1円)であり、機能を考えるとかなり安い。すでにDSiやDSi LLをお持ちの人なら、ランチ1回分くらいの感覚で気軽に購入できるし、DSiを一緒に購入する場合でも合計16,000円程度ですむ。ファーストリリースのVer1.00の場合、プチコンのダウンロードに必要なブロック数は117ブロックであった。

●実行モード、編集モード、取扱説明書モードの3つのモードを備える

 DSシリーズは、上下2画面の液晶を備えていることが特徴だが、プチコンでは、主に上画面をプログラムの結果やプログラムソースが表示されるコンソール画面として使い、下画面をソフトウェアキーボードとして利用する(下画面をプログラムで利用することも可能)。

 プチコンは、実行モード、編集モード、取扱説明書モードの3つのモードが用意されており、実行モードは、編集モードで作成したプログラムを実行したり、プログラムを組まずに命令を直接実行する(ダイレクトモード)ことができるモードだ。

 編集モードは、プログラムを入力、編集するためのモードである。プチコンでのプログラミングは、編集モードでプログラムを入力し、実行モードに切り替えて、プログラムを実行、エラーがあったら、再び編集モードに切り替えて修正、という手順になる。

 プログラムの入力は、ソフトウェアキーボードで行なうが、画面の大きなDSi LLでも、キーピッチは約5.5mmであり、指先での入力はかなり難しい。基本的には、ペンでタッチして入力を行なうことになるだろう。ペンでソフトウェアキーボードをタッチして入力するのは、正直面倒だが、慣れればそれなりの速度で入力できる。なお、タッチパネルだけでなく、DSiに用意されている十字ボタンやABYXボタン、LRボタンなども入力に利用できる。編集モード時は、十字ボタンでカーソル移動が可能で、Yボタンはバックスペースキーの役割を果たす。また、LボタンはSHIFTキーと同じ役割になる、

 プチコンは、ダウンロード販売であり、紙のマニュアルなどは付属していないが、取扱説明書ボタンを押すことで、いつでも取扱説明書を表示させることが可能だ。なお、プチコンの公式サイトには、Web版(HTML形式)とPDF版の取扱説明書が公開されているので、興味のある方は見てみるとよいだろう。プチコンでプログラミングを行なう場合も、PCをそばに置いて取扱説明書を見ながらやるか、PDF版をすべて印刷しておくと効率がよい。

プチコン起動直後は、上画面。起動後は実行モードとなり、下画面のソフトウェアキーボードで入力した文字が表示される下画面のソフトウェアキーボード表示。左下に実行モードと編集モードを切り替えるボタンが用意されている英字ソフトウェアキーボードで、SHIFTキーを押したところ。LボタンもSHIFTキーと同じ役割を果たす
記号入力モードのソフトウェアキーボード。ハートやスペードのほか、車やUFOなどのキャラクターも用意されている記号入力モードで、SHIFTキーを押したところ。ABXYやLR、十字ボタンのキャラクターが用意されているのがユニークだカナ入力モードのソフトウェアキーボード
カナ入力モードで、SHIFTキーを押したところ左下の説明書ボタンを押すと、取扱説明書モードになる編集モードに切り替えたところ。左に行番号が出ているが、これはあくまで編集用のものだ

【動画】プログラムを入力しているところ。慣れればもっと速く入力できる

●古いタイプのBASICだが、行番号は使わない

 プチコンのBASIC処理系としての仕様だが、いわゆる古いタイプのBASICを元にしているものの、行番号は使わず、分岐には@で始まるラベルを使うなど、構造化も多少意識されている。昔のマイコンやポケコンでのBASICプログラミングに慣れている人なら、いくつかの違いさえ注意すれば、すぐにプログラムを作ることができそうだ。

 昔のBASICとの違いの中で、特に重要なのが、比較演算子の違いだ。昔のBASICでは、変数への代入も、IF文などでの比較演算子も同じ「=」を使っていたが、プチコンでは、変数への代入は「=」だが、比較演算子はイコールを2つ並べた「==」になる。また、等しくない場合の比較演算子は、「<>」ではなく「!=」を使う。このあたりは、C言語風でよりわかりやすくなったといえるだろう。また、グラフィック関係の命令の書式が異なり、()を使わずに、直接、座標などのパラメータを並べるようになっている。命令は()なし、関数は()付きに統一することで、間違いにくくなり、可読性も高まる。

●5つの画面を重ね合わせて表示できる

 グラフィック機能が充実していることも魅力だ。プチコンでは、上画面、下画面ともに、5つの画面の重ね合わせによって構成されている。上画面の場合、最奥から順に、「背景色」「グラフィック画面」「ユーザー用BGスクリーン後」「ユーザー用BGスクリーン前」「コンソール画面」となり、下画面は、「背景色」「グラフィック画面」「ユーザー用BGスクリーン後」「ユーザー用BGスクリーン前」「キーボード、パネル部品画面」となる。

 背景色は、すべての画面の後ろに表示される単色面で、グラフィック画面(解像度は256×192ドット)は、GLINE文やGCIRCLE文などを使って線や円を描いたり、色を塗ったりすることができる画面だ。また、ユーザー用BGスクリーン画面は、8×8ドットのキャラクターを並べて(最大64×64個管理が可能)、表示が可能な画面である。BGスクリーンは、後画面と前画面があり、手前が優先して表示されるので、上手く使えばゲームなどで奥行き感を感じさせることが可能だ。さらに、回転や拡大・縮小が可能なスプライト機能も備えている。

●遊べてプログラムの勉強にもなるサンプルプログラムが充実

 プチコンには、サンプルプログラムが多数付属しており、そのプログラムリスト(ソース)を見ることで、プログラムの勉強になる。プログラミング経験の無い人は、まずサンプルプログラムを読み出して、一部を修正することからはじめるとよいだろう。サンプルプログラムの一覧とそのリストは、こちらに掲載されている。

 サンプルプログラム1~7までは、比較的シンプルなプログラムで、一部未完成のものもあるが、キャラクタ作成ツールやBGスクリーン作成ツール、画像作成ツールは実用的だし、レーシングゲーム、ロールプレイングゲーム、シューティングゲームは十分に遊べるレベルに仕上がっている。そのいくつかを実際の画面で紹介しよう。シューティングゲームやレーシングゲームを見ればわかるが、BASICとはいえ、動きは結構速く、十分アクションゲームとして成り立っている。

キャラクタ作成ツール「CHRED」。BG面やスプライト用のキャラクターデータを作るためのツール。v1.0には不具合があり、修正方法が公式サイトに掲載されているCHREDでは、下画面に拡大したドット絵が表示されており、ペンでドットを埋めていくことで、キャラクターを作成する

【動画】画像作成ツール「GRPED」。256色まで利用可能なグラフィック面用の画像データ作成ツール。タッチスクリーンで描画が可能
【動画】サンプルプログラムの1つ「シューティングゲーム」。ボスも出てくる
【動画】サンプルプログラムの1つ「レーシングゲーム」。ドットイートタイプのゲームだが、ドットを食べるほど移動速度が上がる

●30曲のBGMと70種類の効果音を再生可能

 実際に、いくつか簡単なプログラムを作成し、実行してみた。まずは、画面にメッセージを表示し、BEEP音を鳴らすだけという、非常に単純なプログラムからだ。また、プログラムを入力せず、ダイレクトモードで、グラフィック面に線を引くGLINE命令を実行してみたので、その様子も動画で載せておく。グラフィック面とコンソール画面が別になっており、グラフィック面がコンソール画面の後ろにあることがよくわかる。

ごく簡単なプログラムを入力したところ。PRINT命令でメッセージを表示し、BEEP音を鳴らすだけのシンプルなプログラムだ
【動画】上記プログラムを実行したところ
【動画】プログラムを入力せず、ダイレクトモードで、グラフィック面に線を引くGLINE命令を実行したところ

 プチコンは、8bit時代のBASICに比べて、機能が強化されている部分が多いのだが、サウンド機能についてはやや注意が必要だ。いわゆるMMLで音楽を再生するPLAY/MUSIC命令はサポートしていない。その代わり、あらかじめ30曲のBGMが内蔵されており、BGMPLAY命令によって再生が可能だ。また、ジャンプ音や爆発音など、ゲームで使えそうな効果音が70種類用意されており、BEEP命令で、音量やピッチ(音程)、パンポット(左右の定位)を指定して再生できる。BGM演奏中にも効果音を重ねて鳴らすことができるので、ゲーム作成には便利だ。試しに、BGM番号を指定してBGMを再生し、そのBGMに重ねて十字キーの上下左右を押すことで効果音を再生させるプログラムを作成してみた。BGMを再生しながら、効果音を自由に再生できることがわかる。

【動画】30曲のBGMが内蔵されている。BGMは停止させない限り、ループして鳴り続ける。BGM番号0は軽快な曲
【動画】BGM番号3の激しくアップテンポな曲を再生させたところ
【動画】BGM番号4のスタートジングルを再生させたところ。ゲームに使えそうな曲が多数揃っている

BGM再生中に十字キーを押すことで、効果音を再生するプログラム
【動画】BGMを再生しながら、効果音の再生が可能なことがわかる

●演算は固定小数点だが、昔のPCに比べればかなり速い

 今度は、プチコンのパフォーマンスを知るために、マンデルブロ集合の描画を行なわせるプログラムを作成してみた。マンデルブロ集合とは、ある定義を満たす複素平面上の点の集合であり、代表的なフラクタル図形である。プログラムは比較的シンプルだが、演算にはそれなりに時間がかかるので、昔はよくベンチマーク的に使われていた。プログラムは、井村誠司氏がWebサイトで公開されているものを参考にさせていただいた。

 なお、プチコンは、浮動小数点演算をサポートしておらず、数値はすべて32bit固定小数として扱われるため、小数点演算の精度があまり高くない。例えば、「PRINT 1/7」を実行すると、0.143と表示される。小数点以下第3位までの精度なので、より正確な精度が求められる用途には向かないが、ホビーで使うには十分だろう。

 今回作成したプログラムの場合、描画が完了するまでの時間は4分28秒であった。演算精度や画面解像度などが異なるので、一律に比較はできないが、1980年代の8bit PCのBASICでマンデルブロ集合を描かせると、数時間はかかっていた記憶がある。サンプルプログラムのシューティングゲームなどを見てもわかるように、プチコンのパフォーマンスは、30年近く前のPCやポケコンのBASICよりも、かなり高そうだ。また、プチコンではユーザーが作成したプログラムを保存するときに、カセットテープにプログラムをセーブするときのようなピーガー音が流れるのだが、当時を知っているものにとっては、思わずニヤリとさせられる、心憎い演出である。

マンデルブロ集合の描画プログラム。なお、はみ出している行があるので、この画面をそのまま入力しても動作しないマンデルブロ集合の描画プログラムの実行例
【動画】マンデルブロ集合の描画プログラムの実行の様子。1980年代の8bit PCのBASICに比べれば高速だと思われる。描画が完了するまでの時間は、4分28秒であった
【動画】プログラムを保存するときの様子。カセットテープにプログラムを保存するときのようなピーガー音が再生されるところがなかなか心憎い

●スプライト機能も強力

 プチコンでアクションゲームを作る場合に、威力を発揮するのがスプライト機能だ。スプライトとは多数の小さな画像を、画面上の任意の位置にハードウェアで合成させて表示する機能で、透明なセルに描いたキャラクター(ドット絵)を何枚も重ね合わせ、それぞれを自由に動かせるようなものだと思えばよい。8bit時代のPCのすべてにスプライト機能が搭載されていたわけではないが、MSXやソードM5など、ゲームが得意な機種には搭載されていた。

 プチコンのスプライト機能は、当時のスプライト機能よりもさらに強化されており、最大100個のスプライトを同時に利用でき、拡大縮小や回転、アニメーション表示なども簡単に実現できる。スプライトのグラフィックパターンは、あらかじめ用意されているが、サンプルとして付属のキャラクタ作成ツール「CHRED」を使って、自由に作成が可能だ。スプライトのサイズは16×16ドットで、同時に16色を利用できる(利用できる色の組み合わせはパレットで変更でき、合計256色から選べる)。

付属のキャラクタ作成ツール「CHRED」を利用して、スプライトのグラフィックパターンを作成する。スプライトのサイズは16×16ドットで、同時に16色を利用可能(利用できる色の組み合わせはパレットで変更できる)左上のキャラクターをPC Watchロゴに書き換えたスプライトを表示させて、動かすプログラムの例。2行目のSPSET命令でスプライトの定義を行ない、3行目と4行目のSPOFS命令でスプライトを画面の左上から右下まで移動させる。また、5行目のSPSCALE命令でスプライトのサイズを200%まで拡大、6行目のSPANGLE命令でスプライトを1回転させている

 筆者はスプライトが使える機種を使ったことがほとんどないので、スプライトがどんなものか理解するため、PC Watchロゴを作成し、そのロゴが回転および拡大しながら移動するという、簡単なプログラムを作成してみた。スプライト機能がない機種で、同じようなことを実現するのは非常に大変だが、スプライト機能を使えば、わずか数行のプログラムで実現できる。

【動画】先ほどのプログラムの実行の様子。PC Watchロゴが回転および拡大しながら、左上から右下へ移動している

●BASICの経験がある人はもちろん、プログラミング初心者の学習用としてもお勧め

 ここでは、プチコンの多彩な機能のうち、一部しか紹介していない。他にもタッチパネルのサポートなど、DSiのハードウェアを活かせるプチコンならではの機能が用意されている。プチコン同士で、Wi-Fi経由でプログラムを直接受け渡せる機能もその1つだ。ただし、セキュリティ上、PCや不特定の相手からプログラムを読み込むことはできないので、発表されているプログラムは、リストを手で打ち込んでいくしかない。雑誌のプログラムリストを一所懸命に打ち込んでいた昔を彷彿させる。

 プチコンは、その名前と800円という価格から、オモチャのようなものだと思う人もいるかもしれないが、そのポテンシャルはかなりのものだと感じた。スマイルブームのサイトでは、ユーザーの投稿プログラムが続々と公開されているが、その中にはかなり本格的なゲームもある。メモリサイズはかなり大きく、最大9,999行までのプログラムリストを扱えるので(合計文字数は最大52万字程度まで)、高度なプログラムを組むこともできるが、逆に、1画面でどこまでできるかを競うのも面白そうだ(昔の月刊アスキーでやってた256バイトプログラムコンテストのような感じ)。

 昔、BASICでよく遊んだという人はもちろん、電車の中でも気軽にプログラミングが楽しめるので、プログラミング初心者の学習用としてもお勧めだ。プチコンで、プログラムの基礎を学び、C言語やJavaなどにステップアップしていくのもよいだろう。

(2011年 4月 6日)

[Reported by 石井 英男]