Hot Soup Processor
| Hot Soup Processor | |
|---|---|
| パラダイム | 手続き型・命令型 |
| 登場時期 | 1994年 |
| 設計者 | おにたま |
| 開発者 | おにたま |
| 最新リリース | HSP3.31 / 2012年9月29日 |
| 影響を受けた言語 | BASIC、C言語 |
| プラットフォーム | Windows 98以降 |
| ウェブサイト | HSPTV! |
Hot Soup Processor(ホットスーププロセッサー)は1994年におにたまにより開発されたプログラミング言語環境(正確にはプログラミングツール)である。略称はHSP。
基本的にMicrosoft Windowsプラットフォームが持つ機能を手軽に使えるようなツールとして開発されたため、OS向けの低水準な記述は(不可能ではないが)あまり推奨されない。
なお一部バージョンにおいて、アンチウィルス製品でマルウェアと誤認識される現象が報告されている。[1][2]
尚、EXE形式で出力した場合、ファイルのアイコン変更は「Let's HSPIC![3]」や「Sato Icon Changer」等の専用のソフトウェアが必要となる。現在の最新バージョンであるHSP3.XのリソースはHSP2.Xのリソースとも共通規格でないため、一般的なリソースエディタはもちろんのこと、前記のソフトウェア以外のHSP2.X用に作成された変更ソフトではファイルが壊れてしまう。
目次 |
歴史 [編集]
誕生 [編集]
Hot Soup Processorは、米ダートマス大学で開発されたBASIC言語の書式をベースにして1994年に開発が開始され、1996年以降フリーウェアとして公開されている。BASICとの互換性はない。
発展 [編集]
2005年8月1日にHSP3.0が登場。 文法体系の見直し、Windowsプラットフォームへの親和性の向上などが行われ、一部が従来のHSP2.x系と互換性のない書式に変更された。 これは添付されている互換マクロを利用することで、一部は擬似的に互換を取ることが可能である(関数を#undefとマクロにより命令風に置き換えるなど)。現在は未対応なものの今後、2.x系と同様、演算子の優先度などに関係なく左優先方式にも対応する予定である。ただし、新しく作成する場合はスクリプトの見やすさの面や他の言語との相互互換性,将来性などのこともあり新方式(関数などを利用した方式)で作成することが推奨されている。 また、HSP3.0のリリースからちょうど2年後にあたる2007年8月1日にHSP3.1が登場、HSPスクリプトエディタの機能改善や、新規のプラグイン・モジュールなどの追加、Peasエディタやかんたん入力機能によるスクリプト入力補助、Javaランタイム上でHSPを動作させるためのHSPLetの標準サポート、ライセンス形式の改定(BSDライセンス)による仕様やソースコードのオープン化などが行われた。[4]
HSP3の登場から新ポータルサイトHSPTV!が立ち上がりHSP3ユーザーのコミュニケーションの場として提供されている。またHSPTV!で同サイトのCGIプログラマを募集するなどの取り組みも試みられている。
2003年から毎年HSPプログラムコンテストが開催されている。
最近ではiOSやAndroidでユーザーが作ったアプリが動くようにするHSPDishという仕組みの整備も進んでいる。
2012年7月16日、最新のリリース候補となるバージョン3.31RC1が公開された。新規命令が1点、picload命令でのPNG画像が読み込み可能になったなどの機能追加、その他スマートフォン向けのHSPDishサービスが向上された。
特徴 [編集]
Hot Soup Processorは手続き型言語であり、中間言語系インタープリタのプログラミングツールとして設計された。主な特徴として:
- 文法が簡潔なため低年齢(例えば小学生)でも簡単に文法を覚えられる(低年齢向けの解説書が出版されている)。
- 行番号は利用しない(できない)。
- 構文の大文字・小文字を区別しない。
- 変数の使用に事前の定義が必要ない(自動的にグローバル変数またはモジュール内定義変数として確保される)。
- 変数・ラベルはモジュールという他と隔離された名前空間で分離することができる。
- ラベルを使用したサブルーチンの別個記述が可能である。
- Windowsでの使用を前提としているが、Macintoshへの移植も不完全とはいえ公式に進められている(まだ正式版が登場していないが開発が停滞しているらしい)。
- また、有志によって非公式的にLinuxにも移植されている。
- しかし、今のところ、移植版の場合はWindows版よりかなり古いバージョンがベースになっている。
- DLLをプラグインとして利用することができ、それによってWindowsのさまざまな機能を利用することが出来る。DirectXやOpenGLなどの3Dグラフィックスを扱うものもある。
- プリプロセッサを持つ。
- BASICとよく似た構文を別名として利用できる。
- COMオブジェクトへの対応も行われており、これを手軽に活用できる。
- スクリプトの最後の行が終わるとその時点でストップする(勝手に終了しない)。
開発環境 [編集]
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形式で指定) |
| 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!"
- ダイアログプログラム
dialog "びっくりマークが表示されます", 1, "てすと"
実行してわかるように、最初の「,」の前は本文、最後の「,」のあとはタイトル。真ん中の数字はダイアログの種類であり、0は情報の「i」、1は警告の「!」、2と3はそれぞれ「はい」か「いいえ」を選ぶダイアログになる。
- 変数を使った表示
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
- 『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!
- ちょくとのページ
- whoのブログ