Hot Soup Processor

**Hot Soup Processor**（ホットスーププロセッサー）は、1995年からおにたまにより開発されているプログラミングツール、およびそのプログラミング言語である。略称は**HSP**。

## 歴史
### 誕生とHSP2登場
1994年にHSPの前身となる**[https://www.vector.co.jp/soft/dos/art/se007721.html ]**（LSP）がPC-9800シリーズで開発された。名前の  は「」が由来である。言語仕様は米ダートマス大学で開発された  言語の書式に基づいているが、 との互換性はない。

1995年より 3.1 で動作するHSP1.0の開発が開始され、1996年にフリーウェアとして一般に公開された。開発した経緯について、おにたまは『自分にとって必要だから作った、いわば中間生成物的ソフトなのです。』と述べている。

1997年にHSP2.0が登場し、95 以降で動作する32ビットアプリケーションとなった。定数や文字列型の変数に対応したほか、後のバージョンアップで3D描画機能をサポートした。1999年に「 賞」、2001年に「オンラインソフトウェア大賞2001」をそれぞれ受賞した。2005年には日本の経済産業省が支援する「ITクラフトマンシップ・プロジェクト」にHSPを取り入れた教育・研修が採択された。なお、HSP2.61は 2003 を使用して開発しコンパイルされていた。

### HSP3の登場
2005年8月1日にHSP3.0が登場。OSはWindows 98以降が必要になった。文法体系の見直し、Windowsプラットフォームへの親和性の向上などが行われ、一部が従来のHSP2.x系と互換性のない書式に変更された。（詳細は#言語仕様参照）

HSP3.0のリリースから2年後にあたる2007年8月1日にHSP3.1が登場、HSPスクリプトエディタの機能改善や、新規のプラグイン・モジュールなどの追加、Peasエディタやかんたん入力機能によるスクリプト入力補助、Javaランタイム上でHSPを動作させるためのHSPLetの標準サポート、ライセンス形式の改定（BSDライセンス）による仕様やソースコードのオープン化が行われた。

2011年9月13日に登場したHSP3.3では、HSPDishというランタイムパッケージが供給されており、変換によってiOSやAndroid上でプログラムを実行させることができるようになった。また、HSP3のコードを他のソースに変換するためのツールとしてhsp3cnvが同梱され、公式にC++へのコード変換が可能になった。

HSP3の登場から新ポータルサイトHSPTV!が立ち上がりHSP3ユーザーのコミュニケーションの場として提供されている。またHSPTV!で同サイトのCGIプログラマを募集するなどの取り組みも試みられている。
2003年からは毎年HSPプログラムコンテストが開催されており、2013年のコンテストでは「ニコニコ自作ゲームフェス2」との作品の相互提供が行われている。

## 特徴
HSPは手続き型言語であり、中間言語系インタープリタのプログラミングツールとして設計されている。公式に『子供でも理解し易いプログラム言語』を掲げており、低年齢（例えば小学生）向けの解説書も出版されている。

ユーザーがスクリプトの記述や開発環境の設定を行うことなく、自動的にウィンドウの作成や制御が行われる。コンソール版HSP（HSPCL）を用いれば、コマンドプロンプト上で実行するプログラムも開発できる。スクリプトの最後の行が終わるとその時点で実行が停止し、自動的にプログラムが終了しない。

Windowsでの使用を前提としているが、公式にMac OSへの移植をしたHSP/Macも存在する。有志によって非公式的にLinuxにも移植されているが、移植版の場合はWindows版より古いバージョンがベースになっている。ただし、2018年4月1日に、正式にRaspberry PiやLinux対応を謳う、**[https://github.com/onitama/OpenHSP HSP3 for Linux/Raspberry Pi]**が公開され、今後はWindows版もこちらに準拠する旨アナウンスされている。

### 言語仕様の特徴
HSP3.xの（ユーザーが実際に入力する）言語仕様に関する主な特徴として、以下のように挙げられる。
* BASICと似た構文を別名として利用できる。
* 行番号は利用しない（できない）。
*構文の大文字・小文字を区別しない。
* 変数の使用に事前の定義が必要ない（自動的にグローバル変数またはモジュール内定義変数として確保される）。
* 変数・ラベルはモジュールという他と隔離された名前空間で分離することができる。
* 変数名に日本語（2バイト文字）を利用できる。
* ラベルを使用したサブルーチンの別個記述が可能である。
* DLLをプラグインとして利用することができ、それによってWindowsのさまざまな機能を利用することが出来る。DirectXやOpenGLなどの3Dグラフィックスを扱うものもある。
* プリプロセッサを持つ。
* COMオブジェクトに対応している。

## 開発環境
### スクリプトエディタ
HSPには専用のスクリプトエディタが付属している。一般的なテキストエディタの機能を有しているほか、コンパイルや外部ツールの呼び出しなど独自の機能も備える。複数のファイルを参照・編集する場合、同一のウインドウ内にタブを用いて表示・切り替えできる。プロジェクトファイルの概念は無い。エディタのエンジンにはFootyが使用されている。

EXE形式で出力できるが、ファイルのアイコン変更は「[HSPIC!](http://lhsp.s206.xrea.com/works/hsp.html#lhspic　Let's)」や「Sato Icon Changer」等の専用のソフトウェアが必要となる。また、HSP3.5以降(正確には3.5 beta6から)では標準でアイコン書き換え機能が追加され、#packopt命令を利用することによりアイコンを変更できるようになった。

現在の最新バージョンであるHSP3.xのリソースはHSP2.xのリソースとも共通規格でないため、一般的なリソースエディタはもちろんのこと、前記のソフトウェア以外のHSP2.x用に作成された変更ソフトではファイルが壊れてしまう。

コンパイルを行うツールを利用すれば外部エディタでの開発も可能である。

### Peasエディタ
パーツ（要素）と呼ばれるものをマウスで配置し配線することで、自動的にHSPのスクリプトを生成するためのオーサリングツールである。HSP3.1からHSP3.6まで同梱されていた。HSP3.7β1以降は同梱が廃止された。

今までプログラミングに触れてこなかった人や、初心者にとっての新しい選択肢となるものの、すべての作業をPeasエディタで行なうことは想定していないとしている。

なお、パーツはユーザー自身で制作することも可能である。

### HSP Document Library (HDL)
HSPに同梱された関連ドキュメントを検索・観覧するための専用ブラウザである。ソフトウェア本体はsprocketが開発している。HSP3.0から**HSP HELP Browser**として標準で同梱され、HSP3.2より同名称になった。

ドキュメントやサンプルスクリプトを検索し、表示することができる。ユーザー自身で新たなドキュメントを追加することが可能で、独自形式のドキュメントファイルを編集・作成するエディタが付属している。

HDLではhs(HDLのコマンドヘルプ)、html、txt、hsp、as(HSPヘッダファイル)の拡張子が付いたファイルを読み込み・表示することができる。

## 言語仕様

### 主な構文
以下の表はHSP1.x系とHSP2.x系とHSP3.x系との違いである。

HSP3.x系では、関数のサポートなど一部が従来のHSP2.x系と互換性のない書式に変更された。これは添付されている互換マクロを利用することで、（関数を#undefとマクロにより命令風に置き換えるなど）一部は擬似的に互換を取ることが可能である。現在は未対応なものの今後、2.x系と同様、演算子の優先度などに関係なく左優先方式にも対応する予定である。ただし、新しく作成する場合はスクリプトの見やすさの面や他の言語との相互互換性,将来性などのこともあり新方式（関数などを利用した方式）で作成することが推奨されている。

HSP1.x系とHSP2.x系では命令中のラベル名にラベル名であることを明示するアスタリスクが省略できる、変数名やラベル名などに半角英数字以外に全角文字が使用できたりといくつかの仕様上の欠陥がある。HSP3.x系ではラベルのアスタリスク省略はできないように修正されている。システム変数はHSP3.x系で一部廃止され、関数やマクロに置き換わっている。HSP3.x系では拡張プラグインにより様々な構文（変数/命令/関数/システム変数など）を拡張できる。ただし、HSP3.0時点では定数の拡張はできない。

### 命令リスト
これは、HSPで使う命令の一例である。

### コード例
Linux版HSP3における例

```
#include "hsp3cl.as"
mes "あいうえお"
stop
```


### 外部APIとの連携
HSP は外部DLLライブラリやWindows APIとの連携にも対応している。

それぞれプリプロセッサを使用することで、Windowsのコモンコントロールを使用することができる。
また、それらのコントロールを最初から使用できるようにするモジュールスクリプトもHSP パッケージに標準で同梱されている。

## その他
一部バージョンにおいて、アンチウィルス製品でマルウェアと誤認識される現象が報告されている。

## 出典

## 関連書籍
*『はじめての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

## 関連項目
* BASIC
* C言語
* HSPプログラムコンテスト
* 3DACE
* 野田クリスタル

## 外部リンク
* Hot Soup Processor公式サイト
* HSPプログラムコンテスト
* OpenHSP（オープンソース化されたHSPのWiki）
* GitHubでのリポジトリ （Linux版OpenHSPのソースコードの公開場所）
* びんずめ堂（Linux版HSP(xhsp)がダウンロードできる）
* Let's HSP!  
* CuteHSP（HSPの命令仕様をもとにしたクロスプラットフォームなトイ言語）