|
|
1行目: |
1行目: |
− | {{Infobox プログラミング言語 | + | {{テンプレート:20180815sk}} |
− | |名前 = Hot Soup Processor
| |
− | |ロゴ =
| |
− | |パラダイム = [[手続き型プログラミング|手続き型]]・[[命令型プログラミング|命令型]]
| |
− | |登場時期 = 1996年
| |
− | |設計者 = [[おにたま]]
| |
− | |開発者 = [[おにたま]]
| |
− | |最新リリース = 安定版:3.5 / [[2017年]][[10月20日]]
| |
− | |型付け =
| |
− | |処理系 =
| |
− | |方言 =
| |
− | |規格 =
| |
− | |影響を受けた言語 = [[BASIC]]、[[C言語]]
| |
− | |影響を与えた言語 =
| |
− | |プラットフォーム = [[Microsoft Windows 98|Windows 98]]以降(HSP3)
| |
− | |ライセンス = [[BSDライセンス]]
| |
− | |ウェブサイト = [http://hsp.tv/ HSPTV!]
| |
− | }} | |
− | | |
− | {{プログラミング言語}}
| |
− | | |
− | '''Hot Soup Processor'''(ホットスーププロセッサー)は、[[1995年]]から[[おにたま]]により開発されている[[プログラミングツール]]、およびその[[プログラミング言語]]である。略称は'''HSP'''。最新安定バージョンは'''3.5'''。
| |
− | | |
− | == 歴史 ==
| |
− | === 誕生とHSP2登場 ===
| |
− | 1994年にHSPの前身となる'''[http://www.vector.co.jp/soft/dos/art/se007721.html {{lang|en|light SOUP processor}}]'''(LSP)が[[PC-9800シリーズ]]で開発された。名前の {{lang|en|'''SOUP processor'''}} は「{{lang|en|<u>s</u>equential <u>ou</u>t<u>p</u>ut control <u>processor</u>: a text script interpreter for multi-purpose, multi-target}}」が由来である<ref>『逆引き HSP3 プログラミング事典[基本編]』 工学社 p27 ISBN 4-7775-1226-6</ref>。言語仕様は米[[ダートマス大学]]で開発された {{lang|en|[[BASIC]]}} 言語の書式に基づいているが、{{lang|en|BASIC}} との互換性はない。
| |
− | | |
− | 1995年より [[Microsoft Windows 3.x|{{lang|en|Windows}} 3.1]] で動作するHSP1.0の開発が開始され<ref>[http://www.onionsoft.net/about.html {{lang|en|ONION software}} とは?]</ref>、1996年に[[フリーウェア]]として一般に公開された。開発した経緯について、おにたまは『自分にとって必要だから作った、いわば中間生成物的ソフトなのです。』と述べている<ref>[http://www.forest.impress.co.jp/article/2002/01/17/whocreate3.html 窓の杜 - 【このソフト作った人はどんな人?】 第3回:「{{lang|en|Hot Soup Processor}}」の作者、おにたまさん] (2002年1月17日)</ref>。
| |
− | | |
− | 1997年にHSP2.0が登場し、[[Microsoft Windows 95|{{lang|en|Windows}} 95]] 以降で動作する[[32ビットアプリケーション]]となった。[[定数]]や文字列型の変数に対応したほか、後のバージョンアップで3D描画機能をサポートした。1999年に「{{lang|en|Microsoft DXSD}} 賞」、2001年に「[[フリーソフトウェア大賞|オンラインソフトウェア大賞2001]]」をそれぞれ受賞した。2005年には日本の[[経済産業省]]が支援する「ITクラフトマンシップ・プロジェクト」にHSPを取り入れた教育・研修が採択された<ref>[http://warp.da.ndl.go.jp/info:ndljp/pid/1368617/www.meti.go.jp/press/20050711002/050711it.pdf 平成17年度「ITクラフトマンシップ・プロジェクト」選定結果について]</ref><ref>[http://npo-ocp.jp/image/h17_craftsman_report.pdf 平成17年度ITクラフトマンシップ・プロジェクト採択事業「スーパープログラマーを育てよう!」プロジェクト事業報告 特定非営利活動法人OCP総合研究所]</ref>。なお、HSP2.61は [[Microsoft Visual Studio|{{lang|en|Visual Studio .NET}} 2003]] を使用して開発し[[コンパイル]]されていた<ref>説明書「著作権、ライセンスについて」を参照(HSP2.61時点)</ref>。
| |
− | | |
− | === HSP3の登場 ===
| |
− | 2005年[[8月1日]]にHSP3.0が登場。OSは[[Microsoft Windows 98|Windows 98]]以降が必要になった。文法体系の見直し、Windowsプラットフォームへの親和性の向上などが行われ、一部が従来のHSP2.x系と互換性のない書式に変更された。(詳細は[[#言語仕様]]参照)
| |
− | | |
− | HSP3.0のリリースから2年後にあたる[[2007年]][[8月1日]]にHSP3.1が登場、HSPスクリプトエディタの機能改善や、新規のプラグイン・モジュールなどの追加、Peasエディタやかんたん入力機能によるスクリプト入力補助、[[Java]]ランタイム上でHSPを動作させるための[[HSPLet]]の標準サポート、ライセンス形式の改定([[BSDライセンス]])による[http://www.onionsoft.net/hsp/openhsp/ 仕様やソースコードのオープン化]が行われた。
| |
− | | |
− | [[2011年]][[9月13日]]に登場したHSP3.3では、[http://hsp.tv/make/hsp3dish.html HSPDish]というランタイムパッケージが供給されており、変換によって[[iOS (アップル)|iOS]]や[[Android]]上でプログラムを実行させることができるようになった。また、HSP3のコードを他のソースに変換するためのツールとしてhsp3cnvが同梱され、公式に[[C++]]へのコード変換が可能になった。
| |
− | | |
− | HSP3の登場から新ポータルサイトHSPTV!が立ち上がりHSP3ユーザーのコミュニケーションの場として提供されている。またHSPTV!で同サイトの[[CGI]]プログラマを募集するなどの取り組みも試みられている<ref>[http://hsp.tv/recruit.html HSPTV!システムプログラマー募集]</ref>。
| |
− | [[2003年]]からは毎年[[HSPプログラムコンテスト]]が開催されており、2013年のコンテストでは「[[ニコニコ動画|ニコニコ自作ゲームフェス2]]」との作品の相互提供が行われている。
| |
− | | |
− | == 特徴 ==
| |
− | HSPは[[手続き型言語]]であり、[[中間言語#コンピュータのプログラムにおける中間言語|中間言語]]系[[インタープリタ]]のプログラミングツールとして設計されている。公式に『子供でも理解し易いプログラム言語』を掲げており<ref>[http://hsp.tv/info/parent.html 教育関係者・保護者の皆様へ]</ref>、低年齢(例えば小学生)向けの解説書も出版されている。
| |
− | | |
− | ユーザーがスクリプトの記述や開発環境の設定を行うことなく、自動的に[[ウィンドウ]]の作成や制御が行われる。コンソール版HSP(HSPCL)を用いれば、[[cmd.exe|コマンドプロンプト]]上で実行するプログラムも開発できる。スクリプトの最後の行が終わるとその時点で実行が停止し、自動的にプログラムが終了しない。
| |
− | | |
− | Windowsでの使用を前提としているが、公式に[[Mac OS]]への移植した[http://quasiquote.org/hspwiki/HSP/Mac%E9%96%A2%E9%80%A3 HSP/Mac]も存在する。有志によって非公式的に[[Linux]]にも移植されているが、移植版の場合はWindows版より古いバージョンがベースになっている。
| |
− | | |
− | === 言語仕様の特徴 ===
| |
− | HSP3.xの(ユーザーが実際に入力する)言語仕様に関する主な特徴として、以下のように挙げられる。
| |
− | * [[BASIC]]と似た構文を別名として利用できる。
| |
− | * [[行番号]]は利用しない(できない)。
| |
− | * [[構文]]の大文字・小文字を区別しない。
| |
− | * [[変数 (プログラミング)|変数]]の使用に事前の定義が必要ない(自動的に[[グローバル変数]]またはモジュール内定義変数として確保される)。
| |
− | * 変数・ラベルはモジュールという他と隔離された[[名前空間]]で分離することができる。
| |
− | * 変数名に日本語([[マルチバイト文字|2バイト文字]])を利用できる。
| |
− | * [[ラベル]]を使用した[[サブルーチン]]の別個記述が可能である。
| |
− | * [[ダイナミックリンクライブラリ|DLL]]をプラグインとして利用することができ、それによってWindowsのさまざまな機能を利用することが出来る。[[DirectX]]や[[OpenGL]]などの3Dグラフィックスを扱うものもある。
| |
− | * [[プリプロセッサ]]を持つ。
| |
− | * COMオブジェクトに対応している。
| |
− | | |
− | == 開発環境 ==
| |
− | === スクリプトエディタ ===
| |
− | HSPには専用の[[スクリプトエディタ]]が付属している。一般的な[[テキストエディタ]]の機能を有しているほか、[[コンパイル]]や外部ツールの呼び出しなど独自の機能も備える。複数のファイルを参照・編集する場合、同一のウインドウ内に[[タブ (GUI)|タブ]]を用いて表示・切り替えできる。[[プロジェクトファイル]]の概念は無い。エディタのエンジンには[[Footy]]が使用されている。
| |
− | | |
− | [[EXEフォーマット|EXE形式]]で出力できるが、ファイルのアイコン変更は「[http://lhsp.s206.xrea.com/works/hsp.html#lhspic Let's HSPIC!]」や「[[Sato Icon Changer]]」等の専用のソフトウェアが必要となる。現在の最新バージョンであるHSP3.XのリソースはHSP2.Xのリソースとも共通規格でないため、一般的なリソースエディタはもちろんのこと、前記のソフトウェア以外のHSP2.X用に作成された変更ソフトではファイルが壊れてしまう。
| |
− | | |
− | コンパイルを行うツールを利用すれば外部エディタでの開発も可能である。
| |
− | | |
− | === Peasエディタ ===
| |
− | パーツ(要素)と呼ばれるものをマウスで配置し配線することで、自動的にHSPのスクリプトを生成するための[[オーサリングツール]]である。HSP3.1より同梱された。
| |
− | | |
− | 今までプログラミングに触れてこなかった人や、初心者にとっての新しい選択肢となるものの、すべての作業をPeasエディタで行なうことは想定していないとしている<ref>Peasエディタマニュアル参照(HSP3.3時点)</ref>。
| |
− | | |
− | なお、パーツはユーザー自身で制作することも可能である。
| |
− | | |
− | === HSP Document Library(HDL) ===
| |
− | HSPに同梱された関連ドキュメントを検索・観覧するための専用[[ブラウザ]]である。ソフトウェア本体はsprocketが開発している。HSP3.0から'''HSP HELP Browser'''として標準で同梱され、HSP3.2より同名称になった。
| |
− | | |
− | ドキュメントやサンプルスクリプトを検索し、表示することができる。ユーザー自身で新たなドキュメントを追加することが可能で、独自形式のドキュメントファイルを編集・作成するエディタが付属している。
| |
− | | |
− | == 言語仕様 ==
| |
− | === 主な構文 ===
| |
− | 以下の表はHSP1.x系とHSP2.x系とHSP3.x系との違いである。
| |
− | {| class="wikitable" cellpadding="2" cellspacing="0"
| |
− | |-
| |
− | !項目!!HSP1.x系!!HSP2.x系!!HSP3.x系
| |
− | |-
| |
− | |定数||未対応||整数、文字列||整数、文字列、実数
| |
− | |-
| |
− | |変数の型||整数型||整数型、文字列型||整数型、文字列型、実数型、comobj型、モジュール変数(struct)型、ラベル型、拡張型
| |
− | |-
| |
− | |式の評価||演算子の優先度なし、左方優先||演算子の優先度なし、左方優先||演算子の優先度あり
| |
− | |-
| |
− | |代入演算子||未対応|| <code>+=</code>, <code>-=</code>, <code>++</code>, <code>--</code>|| <code>+=</code>, <code>-=</code>, <code>++</code>, <code>--</code>のほか <code>*=</code>, <code>/=</code> 等、ほぼすべての代入演算子に対応
| |
− | |-
| |
− | |関数||未対応||未対応||対応(標準関数、ユーザー定義関数、拡張関数)
| |
− | |-
| |
− | |マクロ||未対応||仮対応||対応
| |
− | |-
| |
− | |}
| |
− | | |
− | HSP3.x系では、関数のサポートなど一部が従来のHSP2.x系と互換性のない書式に変更された。これは添付されている互換マクロを利用することで、(関数を#undefとマクロにより命令風に置き換えるなど)一部は擬似的に互換を取ることが可能である。現在は未対応なものの今後、2.x系と同様、演算子の優先度などに関係なく左優先方式にも対応する予定である。ただし、新しく作成する場合はスクリプトの見やすさの面や他の言語との相互互換性,将来性などのこともあり新方式(関数などを利用した方式)で作成することが推奨されている。
| |
− | | |
− | HSP1.x系とHSP2.x系では命令中のラベル名にラベル名であることを明示するアスタリスクが省略できる、変数名やラベル名などに半角英数字以外に全角文字が使用できたりといくつかの仕様上の欠陥がある。HSP3.x系ではラベルのアスタリスク省略はできないように修正されている。システム変数はHSP3.x系で一部廃止され、関数やマクロに置き換わっている。HSP3.x系では拡張プラグインにより様々な構文(変数/命令/関数/システム変数など)を拡張できる。ただし、HSP3.0時点では定数の拡張はできない。
| |
− | | |
− | === 命令リスト ===
| |
− | これは、HSPで使う命令の一例である。
| |
− | {|class=wikitable
| |
− | |+一般的な通常命令
| |
− | !命令!!意味
| |
− | |-
| |
− | |<code>mes</code>||文字列を表示する
| |
− | |-
| |
− | |<code>button</code>||押しボタンを表示する。押された場合、指定されたラベルにジャンプする。
| |
− | |-
| |
− | |<code>input</code>||入力ボックスを表示する
| |
− | |-
| |
− | |<code>pos</code>||表示位置を指定する
| |
− | |-
| |
− | |<code>picload</code>||画像を表示する(ver3.31ベータ版よりも前のバージョンの場合、[[Portable Network Graphics|PNG]]形式は<code>imgload</code>という拡張命令と {{lang|en|[[Internet Explorer]]}} が必要)
| |
− | |-
| |
− | |<code>color</code>||色指定([[RGB]]形式で、各要素0~255、十進法で指定)
| |
− | |-
| |
− | |<code>if</code>|||もし~ならば~する([[分岐命令]])
| |
− | |-
| |
− | |<code>font</code>||文字列の大きさ・[[フォント]]を指定する
| |
− | |-
| |
− | |<code>boxf</code>||矩形を描画する
| |
− | |-
| |
− | |<code>repeat</code>||rowspan=2|<code>repeat</code>~<code>loop</code>間の処理を指定回数繰り返す
| |
− | |-
| |
− | |<code>loop</code>
| |
− | |-
| |
− | |<code>goto</code>||指定したラベルにジャンプする
| |
− | |-
| |
− | |<code>gosub</code>||rowspan=2|指定したラベルに行き、<code>return</code> があると元の <code>gosub</code> の次の行へ戻って実行
| |
− | |-
| |
− | |<code>return</code>
| |
− | |-
| |
− | |<code>end</code>||プログラムを終了する
| |
− | |-
| |
− | |<code>stop</code>||プログラムの実行を一時的に中断する
| |
− | |-
| |
− | |<code>title</code>||タイトルバーに表示する文字列を指定する
| |
− | |-
| |
− | |<code>screen</code>||大きさ、位置などを指定してスクリーンを作る(<code>bgscr</code>命令で枠なしスクリーンも可能)
| |
− | |}
| |
− | | |
− | ===外部APIとの連携===
| |
− | HSP は外部[[DLL]]ライブラリや[[Windows API]]との連携にも対応している。
| |
− | | |
− | それぞれ[[プリプロセッサ]]を使用することで、[[Windows]]のコモンコントロールを使用することができる。
| |
− | また、それらのコントロールを最初から使用できるようにするモジュールスクリプトもHSP パッケージに標準で同梱されている。
| |
− | | |
− | == サンプルプログラム ==
| |
− | * 最も一般的な[[Hello world]]プログラム
| |
− | <pre>
| |
− | mes "Hello,World!"
| |
− | </pre>
| |
− | HSPの基本的な構文は、「命令」+「パラメータ」である。命令とパラメータの間には半角スペースが必要である。パラメータが複数必要な場合、それぞれを「,」で区切る。このプログラムで使われているmes命令はパラメータがひとつしか無いため、「,」は必要ない(「"」で囲まれた部分は文字列として認識されるため、この場合の「,」は文字列の一部である)。プログラムの最後になるとプログラムが停止するので、stop命令は必要ない。
| |
− | | |
− | | |
− | * ダイアログプログラム
| |
− | <pre>
| |
− | dialog "びっくりマークが表示されます", 1, "てすと"
| |
− | </pre>
| |
− | dialog命令は、1つ目のパラメータが本文、3つ目のパラメータがタイトルに相当する。2つ目のパラメータはダイアログの種類であり、0は情報の「i」、1は警告の「!」、2と3はそれぞれ「はい」か「いいえ」を選ぶダイアログになる。HSPではこれを表示している間プログラムが停止する。
| |
− | | |
− | | |
− | * 変数を使った表示
| |
− | | |
− | <pre>
| |
− | a=10
| |
− | b="HSP"
| |
− | mes "変数aの内容は"+ a +"です。"
| |
− | mes a +"です。"
| |
− | dialog "サンプルスクリプト", 0, b
| |
− | </pre>
| |
− | 文字列の後に、数値を代入した変数を連結させると、そのまま数値が文字列となって表示される。逆に最初に数値が代入された変数を使用した後文字列を連結させると、文字列は表示されない(先に出現した型に強制変更されるため)。また変数の使用の定義が不要のため、このスクリプトをそのまま実行すればエラーは起こらない(dimやsdimなどの初期化命令も有り)。
| |
− | | |
− | == その他 ==
| |
− | 一部バージョンにおいて、[[アンチウイルスソフトウェア|アンチウィルス製品]]で[[マルウェア]]と誤認識される現象が報告されている<ref>[http://www.onionsoft.net/hsp/hsp2alert.html HSP ver2.61に対するウィルス誤認識について]</ref><ref>[http://www.onionsoft.net/hsp/hsp3alert.html HSP ver3.1、ver3.2に対するウィルス誤認識について]</ref>。
| |
− | | |
− | | |
− | == 出典 ==
| |
− | {{Reflist}}
| |
− | | |
− | == 関連書籍 ==
| |
− | *『はじめての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]]
| |
− | | |
− | == 外部リンク ==
| |
− | * [http://hsp.tv/ Hot Soup Processor公式サイト]
| |
− | * [http://hsp.tv/play/contest.html HSPプログラムコンテスト]
| |
− | * [http://www.onionsoft.net/hsp/openhsp/ OpenHSP](オープンソース化されたHSPのWiki)
| |
− | * [https://github.com/onitama/OpenHSP GitHubでのリポジトリ] (OpenHSPのソースコードの公開場所)
| |
− | * [http://www.binzume.net/ びんずめ堂](Linux版HSP(xhsp)がダウンロードできる)
| |
− | * [http://lhsp.s206.xrea.com/ Let's HSP!]
| |
− | * [https://github.com/kikeroga3/tinyhsp CuteHSP](HSPの命令仕様をもとにしたクロスプラットフォームなトイ言語)
| |
− | {{Computer-stub}}
| |
− | | |
− | [[Category:プログラミング言語|HOTSOUPPROCESSOR]]
| |
− | [[Category:フリーウェア|HOTSOUPPROCESSOR]]
| |
− | [[Category:1995年のソフトウェア]]
| |