日本人が開発した、初心者向けのプログラミング言語「HSP」。子供でも理解しやすいプログラム言語として、一定の評価を獲得している。一方で1996年のリリース以来、HSPはさまざまな機能拡張が行われ、近年ではインディゲーム開発でも使用されるようになってきた。HSPの魅力や特長とはなにか。「子どもゲームプログラミング教室」の体験取材などを通して関係者に話を聞いた。

TEXT&PHOTO_小野憲史 / Kenji Ono
EDIT_小村仁美 / Hitomi Komura(CGWORLD)、山田桃子 / Momoko Yamada

現代のBASICでインディゲーム開発

2019年4月6日・7日にベルサール秋葉原で開催された「東京サンドボックス2019」。120タイトル以上が出展された、インディゲームの祭典だ。この会場を取材しながら、思わず目をみはった。横スクロールのアクションパズルゲーム『テトラバッシュ』と、マップエディター『KEPIX_EDITOR』が、プログラム言語のHSPで開発されていたからだ。本作を開発したチームグリグリオガワコウサク氏は、古くからHSPを愛用する一人。Unity製のゲームが大半を占める中で、異彩を放っていた。

東京サンドボックス2019

テトラバッシュ

KEPIX_EDITOR

HSP(Hot Soup Processor)と聞いても、大半の読者には聞き覚えがないかもしれない。1980年代の8ビットパソコンに標準搭載されたBASIC言語に似た、個人開発者向けのプログラム言語だからだ。「ONION software」代表のおにたま(武田 寧)氏によって開発され、1996年にフリーウェアとして初公開。最新版のVer. 3.5ではiOS&Android向けのビルドや、C++言語やWeb(HTML5)といった異なる環境へのコード変換など、さまざまな拡張がなされている。

もっとも、筆者のHSPに関する知識といえば、2003年から毎年ホビープログラマーを対象とした「HSPプログラミングコンテスト」を開催していることくらいだ(2019年度の応募締切は10月31日)。累計5500本もの応募作品が寄せられており、プロから小学生まで参加者層も幅広い。とはいえ、あくまでもHSPは初心者向けという印象があった(公式サイトでも「子供でも理解し易いプログラム言語」を掲げている)。それがインディゲーム開発で使われていることに驚きを禁じ得なかったのだ。

HSPの生みの親であるおにたま氏は、ツェナワークス技術開発責任者として商業ゲーム開発にたずさわる一方、HSPむけのコミュニティ活動や、自身が主催する「OBS(おにたま放送局)」で動画配信などを展開。その合間をぬって毎年、プログラミングの教育活動を進めている人物だ。はたしてHSPの魅力はどこにあるのか。2019年8月17日・18日に東京都羽村市で開催された「子どもゲームプログラミング教室」を取材し、あらためて現状や特性に迫ってみた。

小・中学生と保護者7組が参加

子どもゲームプログラミング教室の主宰は、地域コミュニティの西多摩プログラミングクラブで、おにたま氏は外部講師という扱いだ。学校の夏休み期間にあわせて2012年から年に2回ずつ、合計4日間開催しており、小学4年生から中学3年生を対象としている。つきそいの保護者も含めると、毎年30名前後が集まる人気講座だが、今年度は告知期間が短かったこともあり、12名に留まった。そのうち子どもは7名で、男子5名、女子2名という内訳だ。筆者も会場の一角で受講させてもらうことになった。

授業は参加者が持参したノートPCにUSBメモリでHSPをインストールするところから始まった。おにたま氏の指示に従って子供たちが作業を進め、わかりにくいところは保護者がサポートしていく。インストールが終了すると、チュートリアルをかねてゲームプログラムを読み込み、遊んでみることに。シューティングゲーム、ドロップパズルゲーム、ブロック崩しなどを楽しんだ。ゲームがプログラムで記述されていることを、自然とわからせるしくみだ。

続いて簡単なプログラム遊びが始まった。HSPスクリプトエディタを開き、自分の名前を画面上に表示したり、文字の大きさや色、背景などを変えて、オリジナルのメッセージカードを作成したりと、徐々に複雑になっていく。それが終わると、最初に遊んだゲームの改造だ。Windowsに附属のペイントツールを用いて、キャラクターの見た目を修正したり、パラメータを変更してエネミーの数を増やしたり、攻撃の度合いを変えたりしながら、ゲームがどのように変わるか、実際に遊びながら確かめていく。

このようにワークショップは50分の授業と10分の休憩を繰り返しながら、1日につき4セットが行われた(もっとも、休憩時間でも子供たちは喜んでPCに向かっていたが......)。その中で単元ごとにテーマが設定され、サンプルプログラムやゲームの改造を行いながら、新しく習った命令の意味がすぐに体験できるように工夫されていた。学習と応用のサイクルを短時間で回すしくみだ。中には学んだ命令を自分なりに応用して、ゲームの体験が大きく変わるような改造をする子どもの姿もみられた。

1日目タイムスケジュール

  • 1時間目
  • HSPをインストール後、サンプルゲームを遊ぶ
  • 2時間目
  • 画面に文字を表示する&オリジナルのメッセージカードをつくる
  • 3時間目
  • ドロップパズルゲームのキャラクターをエディットする、シューティングゲームのキャラクターをエディットする&パラメータを変更する
  • 4時間目
  • ラベルを用いた繰り返し処理と、ボタンの表示を行う、カードバトルゲーム、ミニサッカーゲームを改造する

1971年生まれの筆者にとって、BASICは小学生の頃に遊んだ「玩具」の1つだ。HSPもまた、想像以上にBASICに似た特性があることに驚いた。HSPスクリプトエディタ上でプログラムを入力し、メニューから実行を選択するか、「F5」キーを押すと(BASICのアナロジーだ)、別ウィンドウが開いて処理が実行される。入力内容が間違っていればエラーが表示されるので、プログラムリストを見ながら間違いを探していく。全体が1つのプログラムで構成されるため、処理のながれもわかりやすい。

これに対して近年多くの企業や自治体などで開催されているプログラム教室では、ビジュアルプログラミング言語のScratchが用いられることが多い。米MITで開発された初心者用の言語で、マウス操作でブロックを並べていくことで、子どもでも容易にプログラミングが楽しめる。その一方で個別の機能ごとにプログラムが分割され、同時に実行されるため、処理のながれがつかみにくい。各々の処理がぶつかることで、不具合が発生するデメリットもある。イベント駆動型とフロー駆動型プログラミングのちがいだ。

もっとも、BASICでプログラムを組むには(BASICに限らず、大半のプログラム言語で同様だが)、キーボードで実際に文字を入力する必要がある。タイピングのスキルは子どもによって大きな差があるため、演習でもパラメータを書き替える程度に留められていた。取材前はマニュアルを片手にプログラムを入力させる、いわゆる「写経」が中心になるのかと思っていたが、ちがっていた。あくまで「プログラムと処理の対応関係を直感的に理解させる」点に焦点がおかれていたのだ。

次ページ:
ネットゲーム、ロボット操作......HSPの可能性

[[SplitPage]]

ネットゲーム、ロボット操作......HSPの可能性

2日目はプログラムの基本的な概念の1つ、「変数」についての説明から始まった。文字や数値などのデータを一時的に保存しておく「箱」といったイメージで、シューティングゲームでエネミーが移動する速度や、ドロップパズルゲームの制限時間などの調整は、全て対応する変数の値を変えることで行われる。授業ではポーカーゲームやジャンプアップゲームを遊びながら、コインの枚数やジャンプ力の強さなどに相当する変数を説明。子供たちは数値を変えながら、変化について確かめていた。

その後も「会場内に設置したイントラネットを用いて、みんなでネットゲームを遊んでみる」、「USBで外部デバイスを接続し、基板上のLEDを点滅させたり、ロボットアームを操作したりしてみる」、「HSPで3DCGゲームを遊んでみる」など、バラエティに富んだ演習が行われた。また、それと並行して、おにたま氏は条件分岐(IF文)について説明。西多摩プログラミングクラブから著作権に関する簡単な講義も行われた。最後に20分ほど自由にプログラムをする時間が設けられ、終了となった。

2日目タイムスケジュール

  • 1時間目
  • 1日目のおさらいと変数の説明&ポーカーゲーム、ジャンプアップゲームを遊ぶ
  • 2時間目
  • 著作権の説明と、ネットワークゲームをみんなでプレイ
  • 3時間目
  • 外部デバイスをHSPで操作
  • 4時間目
  • 条件分岐の説明と3DCGゲームの体験、自由にプログラムしてみる

もっとも驚かされたのは、HSPによる外部デバイスの操作だ。市販の教材用ロボットアームや自作の電子回路の制御が、簡単なプログラムで実現されていた。これを可能にしたのが、USB-IO規格のインターフェイスに対応する、HSPに同梱されたプラグインやモジュールだ。以下は簡単なプログラムの例で、"arm1"がロボットアームの指関節にあたり、パラメータが0か1かで開閉できる(ブログ「おにたま(オニオンソフト)のおぼえがき」)より。自分が知っているBASICを、はるかに凌駕する内容だった。

#include "usbio.as"

	usbinit
	mes "つかむ"
	arm1 0
	wait 2000
	mes "はなす"
	arm1 1
	wait 2000

	armstop
	mes "おわり"
	stop

おにたま氏

イベント終了後、おにたま氏に簡単なインタビューを行なった。1966年生まれで東京都出身。子どもの頃からパソコンショップに通いつめ、自然とプログラムを習得していく。中学生の頃から自作ゲームが秋葉原のショップで買い取られるなど、その筋では知られたパソコン少年だった。自主制作した麻雀ゲーム『まじべんちゃー』が1986年、製品化されたのを契機に、商業ゲーム開発者としての道を歩み始める。ゲーム業界の黎明期で、こうした例は珍しいものではなかった。

おにたま氏が非凡だったのは、仕事のかたわらプライベートでもBASICでプログラミングを続けていたことだ。しかしMS-DOSやWindowsの普及で、電源を入れるとBASICが自動的に立ち上がった時代はすぎさり、数万円もする開発言語を購入する必要があった。もっと気軽にプログラミングしたいという思いから、おにたま氏はBASICに近いプログラム言語をWindows向けに自主制作し、フリーソフトとして公開する。それがHSPだ。「自分で気軽にプログラムを楽しむために」つくったというわけだ。

今でこそUnityなどが無料で使えるが、当時は存在自体が珍しかったこともあり、HSPはオンラインソフトのコミュニティを中心に普及した(2001年のオンラインソフトウェア大賞にも選出)。そこから解説本の出版につながり、HSPプログラミングコンテストが始まった。その後もHSPコミュニティは拡大を続け、新ポータルサイトの「HSPTV!」立ち上げや、ソースコードのオープン化などを進めていく。2018年には教育向けシングルボードコンピュータのRaspberry Pi上で動作する「HSP3 for Linux/Raspberry Pi」を発表。さらなる発展が期待されている。

「子ども向けプログラミング教室」の開催も、こうしたながれで始まったものだ。学校や地域コミュニティに入り込むことが難しかったが、西多摩プログラミングクラブとの連携などで、夏の年中行事となった。2018年からは東京都・青梅市で開催されている「子どもIT未来塾」でも講師の1人として参加中だ。ソフト・ハードの双方からプログラミングが学べる内容で、RaspberryPiとHSPを用いたプログラミングの講師をつとめている。「子供たちがプログラミングに触れるきっかけつくりを行い、そこから次世代の人材を創り出したい」と、おにたま氏は取り組みの意図について語った。

子どもIT未来塾の概要(2018年度)

もっともHSPの主な対象は個人によるゲームやツール開発で、大規模開発には向いていない。「短時間で荒っぽくつくって、動けばOK」というわけだ。より大規模なゲームやリッチな表現、エレガントなプログラムが書きたければ、それに適した言語があるという。「子ども向けプログラミング教室」で、命令の説明とサンプルの改造を短時間で回しているのも、対象者や時間の制限ゆえだ(学校のクラブ活動などでは、「写経」も効果があるだろう)。試行錯誤のすえにこのスタイルに落ち着いたという。

HSPが蒔いた人材教育の種が成果を出し始めた

こうした人材育成の取り組みは、着実に成果を出し始めている。大手ゲーム会社で家庭用ゲームのタイトル開発に従事するMIA氏もその一人だ。HSPプログラミングコンテストが始まる前から自作プログラムをホームページ上で発表していた、HSPコミュニティ内では「知る人ぞ知る」敏腕プログラマー。中でも2008年に投稿し、優秀賞を得た『レイトレーシング』は審査員をあっと言わせた。タイトルどおり簡易的ながら、HSPでレイトレーシングによる静止画レンダリングを実現していたからだ。

『レイトレーシング』出力結果

1980年生まれで、おにたま氏とは一回り以上離れているが、ゲーム業界に入った経緯は似たようなものだ。小学1年生のとき、両親からパソコン(FM-77AV)を買い与えられ、3歳年上の兄とともに夢中になった。当時好きだったパソコンゲーム『DAIVA』の演出の一部を、自分で再現しようとしたのが、BASICでプログラミングをした初期の思い出だ。中学生でFM-TOWNSを買い与えられると、Towns OS上でF-BASIC386を動かし、プログラミングを楽しんだ。

「当時はパソコンにBASICが標準搭載されなくなり、一方でWindowsが動くわけでもない、エアポケットの時期でした。雑誌『Oh!FM』を愛読していましたが、マシン語がよくわからず、BASICしか使えませんでした」。その後もFM-TOWNSを愛用し(グラフィック機能やメモリで劣るPC-9801には興味がわかなかった)、都合3台ほど買い換えた。FM-TOWNS用のWindowsも発売された。HSPに出会ったのはその頃だ。フリーソフトを大量に収録したCD-ROMつきのムックがきっかけだった。

「BASICと同じ感覚でプログラムできたので、これこそ待ち望んでいたものだと思いました」。東京高専の電子科に進学し、授業で電子回路を学びつつ、趣味でプログラミングを続けたMIA氏。学校ではC言語も学んでいたが、就職活動ではHSPでつくった自作のゲーム群を動画キャプチャし、提出したところ、内定を得た。「ソースコードの提出は不要だったので、短期で開発できて使い慣れているHSPでプログラミングしました。おかげで書類選考後、面接までにもう1作品、デモをつくることができました」。

MIA氏にとってHSPでのプログラミングは「遊び感覚」だ。一人で書くので自由に書ける。HSPプログラミングコンテストが始まったときは社会人になっていたが、毎年ショートプログラム部門で投稿を続けていた。2008年にレイトレーシングをテーマとしたのも、HSPがバージョンアップして、浮動小数点演算がサポートされたからだ。『Oh!FM』の誌面で、基本的な原理は中学生の頃から知っていた。ネットで情報を集め、腕試しのつもりで応募したところ、衝撃をもって受け止められ、入選をはたした。

これに対して業務で使うことの多いC++は「仕事で書くもの」で、他人にソースコードを見せたり、共有したりすることが前提だ。そのためにはきちんと動作するだけでなく、可読性も重要になる。MIA氏はC++のメリットは「高速処理」でしかないと語った。そのためHSPむけの開発でも、高速処理が要求される自作ゲーム向けのプラグイン制作などは、Cで書いているほどだ。その上でゲームプログラムはHSPで書くというわけだ。

ただし、業務中でもHSPがひょっこり顔をのぞかせることがある。ゲームデザイナーとの打ち合わせなどで、事前につくったモックを見せて、動作を確認してもらうときなどだ。C++でガリガリと書くよりも、圧倒的に短時間で動くモノがつくれるからだ。実際に2010年代までのタイトル開発では、こうしたことが良くあったという。もっともゲーム機が現行世代になり、実機上に近い環境で開発が可能になると、こうした機会も減った。それでもHSPの気軽にプログラムが書ける良さは大きいとMIA氏は語る。

歴史的にみると、ゲーム業界は1980年代までアマチュアとプロの垣根が非常に低かった。これが1990年代の半ばから徐々に乖離が進み、ゲーム開発のブラックボックス化が進んだ。こうした中で数少ない、日本人が開発したプログラミング言語がHSPだ。そしてインディゲームの盛り上がりに伴い、アマチュアとプロの文化は再び交わりつつある。冒頭で触れた『テトラバスター』は、HSPで書かれたインディゲームの1つ。今後もこうした事例は増加すると予測される。

他にも処理が軽いことや、ソースコードが公開されていることなどから、アーケードゲームなど、思わぬシーンで使われることがあるという。もっとも、おにたま氏は「特に届け出などを求めてはいませんし、どこまで浸透しているかは不明です。ただ、たまに業界内で小耳に挟んだり、『使わせてもらっています』と話しかけられることがあります。そんなときは嬉しいですね」と笑う。もはや無視できない存在にまでなってきたHSP。今後どこまで可能性が広がっていくか楽しみだ。