Hot Soup Processor
Hot Soup Processor(ホットスーププロセッサー)は1994年からおにたまにより開発されている、プログラミング言語と統合プログラミング環境を含むプログラミングツールである。略称はHSP。最新安定バージョンは3.32a。
本来の名称は『Sequential output control processor A text script interpreter for multi purpose,multi target』と定義されている[1]が、一般的にHot Soup Processorという名前が定着している。
一部バージョンにおいて、アンチウィルス製品でマルウェアと誤認識される現象が報告されている。[2][3]
EXE形式で出力した場合、ファイルのアイコン変更は「Let's HSPIC!」や「Sato Icon Changer」等の専用のソフトウェアが必要となる。現在の最新バージョンであるHSP3.XのリソースはHSP2.Xのリソースとも共通規格でないため、一般的なリソースエディタはもちろんのこと、前記のソフトウェア以外のHSP2.X用に作成された変更ソフトではファイルが壊れてしまう。
目次
歴史
誕生とHSP2登場
1994年に前身となるlight SOUP processor(LSP)[1]がPC-98で開発された。米ダートマス大学で開発されたBASIC言語の書式をベースにしているが、BASICとの互換性はない。
1995年よりWindows 3.1で動作するHSP1.0の開発が開始され[4]、1996年以降フリーウェアとして公開されている。開発した経緯について窓の杜の取材に対し、おにたまは『自分にとって必要だから作った、いわば中間生成物的ソフトなのです。』と述べている[5]。
1997年にHSP2.0が登場し、Windows 95以降で動作する32ビットアプリケーションとなった。定数や文字列型の変数に対応したほか、後のバージョンアップで3D描画機能をサポートした。1999年に「Microsoft DXSD賞」、2001年に「オンラインソフトウェア大賞2001」をそれぞれ受賞した。2005年には経済産業省が支援する「ITクラフトマンシップ・プロジェクト」にHSPを取り入れた教育・研修が採択された[6][7]。
HSP3の登場
2005年8月1日にHSP3.0が登場。OSはWindows 98以降が必要になった。 文法体系の見直し、Windowsプラットフォームへの親和性の向上などが行われ、一部が従来のHSP2.x系と互換性のない書式に変更された(関数のサポートなど)。 これは添付されている互換マクロを利用することで、一部は擬似的に互換を取ることが可能である(関数を#undefとマクロにより命令風に置き換えるなど)。現在は未対応なものの今後、2.x系と同様、演算子の優先度などに関係なく左優先方式にも対応する予定である。ただし、新しく作成する場合はスクリプトの見やすさの面や他の言語との相互互換性,将来性などのこともあり新方式(関数などを利用した方式)で作成することが推奨されている。
HSP3.0のリリースからちょうど2年後にあたる2007年8月1日にHSP3.1が登場、HSPスクリプトエディタの機能改善や、新規のプラグイン・モジュールなどの追加、Peasエディタやかんたん入力機能によるスクリプト入力補助、Javaランタイム上でHSPを動作させるためのHSPLetの標準サポート、ライセンス形式の改定(BSDライセンス)による仕様やソースコードのオープン化が行われた。
HSP3の登場から新ポータルサイトHSPTV!が立ち上がりHSP3ユーザーのコミュニケーションの場として提供されている。またHSPTV!で同サイトのCGIプログラマを募集するなどの取り組みも試みられている[8]。 2003年からは毎年HSPプログラムコンテストが開催されており、2013年のコンテストでは「ニコニコ自作ゲームフェス2」との作品の相互提供が行われている。
HSPDishというランタイムパッケージが供給されており、変換によってiOSやAndroid上でプログラムを実行させることができる。 これらを含むHSPフルパッケージの最新バージョンは3.32a、最新のベータ版は3.4β4である。
特徴
Hot Soup Processorは手続き型言語であり、中間言語系インタープリタのプログラミングツールとして設計された。
主な特徴として、以下のように挙げられる。
- 公式に『子供でも理解し易いプログラム言語』を掲げており[9]、低年齢(例えば小学生)向けの解説書も出版されている。
- 行番号は利用しない(できない)。
- 構文の大文字・小文字を区別しない。
- 変数の使用に事前の定義が必要ない(自動的にグローバル変数またはモジュール内定義変数として確保される)。
- 変数・ラベルはモジュールという他と隔離された名前空間で分離することができる。
- 変数には半角カナを利用できる。
- ラベルを使用したサブルーチンの別個記述が可能である。
- Windowsでの使用を前提としているが、公式にMacintoshへの移植したHSP/Macも存在する。
- 有志によって非公式的にLinuxにも移植されているが、移植版の場合はWindows版より古いバージョンがベースになっている。
- DLLをプラグインとして利用することができ、それによってWindowsのさまざまな機能を利用することが出来る。DirectXやOpenGLなどの3Dグラフィックスを扱うものもある。
- プリプロセッサを持つ。
- BASICと似た構文を別名として利用できる。
- COMオブジェクトに対応している。
- スクリプトの最後の行が終わるとその時点でストップし、勝手に終了しない(HSP3.Xからの新機能)。
開発環境
HSPには専用のスクリプトエディタが付属している。コンパイルを行うツールを利用すれば外部エディタでの開発も可能である。
主な構文
以下の表はHSP1.x系とHSP2.x系とHSP3.x系との違いである。
項目 | HSP1.x系 | HSP2.x系 | HSP3.x系 |
---|---|---|---|
定数 | 未対応 | 整数、文字列 | 整数、文字列、実数 |
変数の型 | 整数型 | 整数型、文字列型 | 整数型、文字列型、実数型、comobj型、モジュール変数(struct)型、ラベル型、拡張型 |
式の評価 | 演算子の優先度なし、左方優先 | 演算子の優先度なし、左方優先 | 演算子の優先度あり |
代入演算子 | 未対応 | += , -= , ++ , -- |
+= , -= , ++ , -- のほか *= , /= 等、ほぼすべての代入演算子に対応
|
関数 | 未対応 | 未対応 | 対応(標準関数、ユーザー定義関数、拡張関数) |
マクロ | 未対応 | 仮対応 | 対応 |
HSP1.x系とHSP2.x系では命令中のラベル名にラベル名であることを明示するアスタリスクが省略できる、変数名やラベル名などに半角英数字以外に全角文字が使用できたりといくつかの仕様上の欠陥がある。HSP3.x系ではラベルのアスタリスク省略はできないように修正されている。システム変数はHSP3.x系で一部廃止され、関数やマクロに置き換わっている。HSP3.x系では拡張プラグインにより様々な構文(変数/命令/関数/システム変数など)を拡張できる(現時点では定数の拡張はできない)。
命令リスト
これは、HSPで使う命令の一例である。
一般的な通常命令
命令 | 意味 |
---|---|
mes |
文字列を表示する |
button |
押しボタンを表示する。押された場合、指定されたラベルにジャンプする。 |
input |
入力ボックスを表示する |
pos |
表示位置を指定する |
picload |
画像を表示する(ver3.31ベータ版よりも前のバージョンの場合、PNG形式はimgload という拡張命令と Internet Explorer が必要)
|
color |
色指定(RGB形式で、各要素0~255、十進法で指定) |
if |
もし~ならば~する(分岐命令) |
font |
文字列の大きさ・フォントを指定する |
boxf |
矩形を描画する |
repeat |
repeat ~loop 間の処理を指定回数繰り返す
|
loop
| |
goto |
指定したラベルにジャンプする |
gosub |
指定したラベルに行き、return があると元の gosub の次の行へ戻って実行
|
return
| |
end |
プログラムを終了する |
stop |
プログラムの実行を一時的に中断する |
title |
タイトルバーに表示する文字列を指定する |
screen |
大きさ、位置などを指定してスクリーンを作る(bgscr 命令で枠なしスクリーンも可能)
|
外部APIとの連携
HSP は外部DLLライブラリやWindows APIとの連携にも対応している。
それぞれプリプロセッサを使用することで、Windowsのコモンコントロールを使用することができる。 また、それらのコントロールを最初から使用できるようにするモジュールスクリプトもHSP パッケージに標準で同梱されている。
サンプルプログラム
- 最も一般的なHello worldプログラム
mes "Hello,World!"
HSPの基本的な構文は、「命令」+「パラメータ」である。命令とパラメータの間には半角スペースが必要である。パラメータが複数必要な場合、それぞれを「,」で区切る。このプログラムで使われているmes命令はパラメータがひとつしか無いため、「,」は必要ない(「"」で囲まれた部分は文字列として認識されるため、この場合の「,」は文字列の一部である)。プログラムの最後になるとプログラムが停止するので、stop命令は必要ない。
- ダイアログプログラム
dialog "びっくりマークが表示されます", 1, "てすと"
dialog命令は、1つ目のパラメータが本文、3つ目のパラメータがタイトルに相当する。2つ目のパラメータはダイアログの種類であり、0は情報の「i」、1は警告の「!」、2と3はそれぞれ「はい」か「いいえ」を選ぶダイアログになる。HSPではこれを表示している間プログラムが停止する。
- 変数を使った表示
a=10 b="HSP" mes "変数aの内容は"+ a +"です。" mes a +"です。" dialog "サンプルスクリプト", 0, b
文字列の後に、数値を代入した変数を連結させると、そのまま数値が文字列となって表示される。逆に最初に数値が代入された変数を使用した後文字列を連結させると、文字列は表示されない(先に出現した型に強制変更されるため)。また変数の使用の定義が不要のため、このスクリプトをそのまま実行すればエラーは起こらない(dimやsdimなどの初期化命令も有り)。
出典
関連書籍
- 『はじめてのHSP』 工学社 ISBN 4-87593-289-8
- 『HSPゲームプログラミング クックブック 2.6』 秀和システム ISBN 4-7980-0495-2
- 『HSPプログラミング入門 2.55』 秀和システム ISBN 4-7980-0209-7
- 『HSPプログラミング入門 2.6』 秀和システム ISBN 4-7980-0821-4
- 『最新HSP3.2プログラミング入門』 秀和システム ISBN 978-4-7980-2432-5
- 『HSPスクリプトプログラミング逆引きテクニック 2.55』 秀和システム ISBN 4-7980-0186-4
- 『無料ツールでゲームプログラミング HSP編』 エンターブレイン ISBN 4-7577-1863-2
- 『12歳からはじめる、わくわくHSPゲームプログラミング教室』 ラトルズ ISBN 4-89977-078-2
関連項目
外部リンク
- Hot Soup Processor公式サイト
- HSPプログラムコンテスト
- OpenHSP(オープンソース化されたHSP)
- びんずめ堂(Linux版HSP(xhsp)がダウンロードできる)
- Let's HSP!
- ↑ 『逆引き HSP3 プログラミング事典[基本編]』 工学社 ISBN 4-7775-1226-6
- ↑ HSP ver2.61に対するウィルス誤認識について
- ↑ HSP ver3.1、ver3.2に対するウィルス誤認識について
- ↑ ONION software とは?
- ↑ 窓の杜 - 【このソフト作った人はどんな人?】 第3回:「Hot Soup Processor」の作者、おにたまさん (2002年1月17日)
- ↑ [http://warp.da.ndl.go.jp/info:ndljp/pid/1368617/www.meti.go.jp/press/20050711002/050711it.pdf 平成17年度「ITクラフトマンシップ・プロジェクト」選定結果について
- ↑ 平成17年度ITクラフトマンシップ・プロジェクト採択事業「スーパープログラマーを育てよう!」プロジェクト事業報告 特定非営利活動法人OCP総合研究所
- ↑ HSPTV!システムプログラマー募集
- ↑ 教育関係者・保護者の皆様へ