HSP用語辞典
- HSP専用の用語辞典のため、一部で他の言語の場合とは解説が異なる場合があります。あらかじめご了承ください。
- ここでは掲載希望の用語を募集しています。掲載希望用語リストに加えてください。
- 解説記入者は以下の点にご注意ください。
- なるべく簡潔な説明でお願いします。初心者(プログラミング初心者およびHSP初心者)に分かりやすい言葉でお願いします。
- 書く時はその文書の著作権に注意してください(〜用語辞典などからのコピペはもってのほか。引用ならその旨を明記のこと。)
- 詳細が必要な場合は新規でページを作成・解説するか、解説サイトへのリンクをお願いします。ここでのむやみな詳細な長文解説はご遠慮ください。
- ソートは各自で記入時に行うか、面倒なら一番下の位置に書くようにしてください。そのうち適切な個所に移動させます。
- もっと効率的なやり方があればどなたか書き換えお願いします。
-- アルファベット --
ActiveX(COM)
API(Application Programming Interface)
- あるOSやソフトに用意された共通の関数群やその仕組みの事。
- WindowsではWin32APIと一般的に呼ぶ
- 32と言う事は32bitと言う事を意味する
- 次は64bitなのでWin64APIになる…ではなく、WinFXになる。
- 新しい方のOSにしかないAPIも存在するため、古いOSでも問題なく動作するプログラムを作成する場合には注意が必要である。
COM(コンポーネント・オブジェクト・モデル)
MOC(Motion Object Controller)
- HGIMGプラグインで使用するオブジェクトの管理を行う仕組みのこと。
start.ax
- HSPスクリプトをコンパイルして中間言語に変換したファイルがaxファイルで、HSPインタープリタ(ランタイムファイル)はasファイルではなくaxファイルを実行する。start.axはHSPインタープリタが最初に実行するaxファイル(run命令により、他のaxファイルを実行することもできる)。
-- あ行 --
値を返す(あたいをかえす)
- モジュールや関数でシステム変数や呼び出し側に再利用可能な値を提供すること。
- 命令(モジュールや関数)が取得した値をプログラム作成者が使えるようにするため、命令がプログラマー側に値を与えること。(類→戻り値)
- システム変数に値を返す命令ではstatやrefstrなどがよく使われる。
- 値を返す例:「stick p1」とするとp1に押されているボタンの情報が返される。
イベント(event)
- ウィンドウを例にすると、「ボタンがクリックされた」「メニューが選択された」「タイマーで設定された時刻に達した」などの事象。
イベントが起きたときに何をするかを定義したものがイベントハンドラー。
インクルード(Include)
- 「含める」の意味、HSPでは、コンパイル時にスクリプトの中に別のスクリプトを挿入するようにすること。
- 実行する前にプリプロセッサによって指定スクリプトの内容に置き換えられる。
- 使用時は HSPHelp:includeを使用する。
- 通常、プラグインを使用する際の前準備に使用されることが多い。
- プラグインの命令定義ファイル(.as)をインクルードすることでプラグインの命令を使用できるようになる。
- モジュールでも同様にして使用されることがある。
インスタンス(instance)
- C++等ではClassとしてオブジェクトを定義するが、定義したクラスに対して実際に変数として宣言し、メモリに配置された実体のことをインスタンスと呼ぶ。
ウィンドウメッセージ(Window Message)
- ウィンドウ間で情報の伝達に使われる伝達物質のこと。(伝達物質はコンピュータ上なので数値として表される。)
- ここでいう情報とは、以下のようなウィンドウに対して何が起こったか、を表すものが多い。
- ウィンドウAのクライアント領域内でマウスの右ボタンが押された($0204)
- ウィンドウBがフォーカスを失った($0008)
- ウィンドウメッセージは沢山あり過ぎて紹介しきれない。
演算子(Operator)(えんざんし)
- 演算を指示する記号、また、演算対象となる値や変数はオペランド(Operand)と言う
オーバーフロー(overflow)
オフセット(Offset)
- あるデータの位置からの差し引きを意味する。
- 基準となる位置から別のある位置までの差・距離のこと。
オブジェクト(Object)
- 標準命令では、ボタンやインプットボックスなどのこと。
- HGIMGではモデルを入れる容器のようなもの。
-- か行 --
関数(Function)(かんすう)
- 引数を受け取り、値を返すキーワード。
- 性質は定数と変数の中間?
- HSP2.xでは使用できない。
- HSP3.0以降では使用可能。
- Windows APIはすべて関数として提供されており、HSP2.x上ではllmodモジュールなどを使用して呼び出す。
拡張ランタイム
- asファイルをコンパイルしてできたaxファイルを実行するのが、HSPインタープリタすなわちランタイムファイルであるが、標準のランタイムはhsprtで、標準ランタイムとは別に機能を増やしたり(HSP2では標準プラグインの機能をすべて盛り込んだ拡張ランタイムが提供されていた)、ランタイムファイルの容量を減らすために機能を減らしたり、特殊な用途のために用意された拡張ランタイムが提供されている。
HSP3.1では以下のような拡張ランタイムが提供されている。
ランタイムファイル名
| 内容
| hsp3c.hrt
| 一部の機能を減らして容量を押さえたランタイム
| hsp3cl.hrt
| コンソールアプリケーション用ランタイム
| hsp3hg.hrt
| hgimg3用ランタイム
| なお、ランタイムファイルはexeファイルをリネームしたものであり、hsp3.exeはデバッグ用のランタイムである。ランタイムの後ろにDPMファイルを結合したものがユーザーの作成するexeファイルとなる。
-- さ行 --
サブルーチン(Sub Routine)
- プログラムの一部を何度も利用できる仕組みのこと。
- スクリプト本文(本体)のことをメインルーチン(Main Routine)と呼び、それに対してメインルーチンから呼び出され、メインルーチンに戻ることができる。
- gotoで飛ぶルーチンはサブルーチンではない。(returnに注意)
- 使用時は HSPHelp:gosub, HSPHelp:return?を使用する。
スクリプト(Script)
- プログラム本文のこと。(HSPプログラムソース全体の総称)
- HSPプログラムソース全体の総称。
- ソース:ソースコード。HSPなどで実行される記述部分のこと。
スタック(Stack)
- 積み木を想像してください。以降、ブロック1つを要素と呼びます。
- 要素を積むときは新しい要素が一番上にくるように積みます。
- 要素を取るときは一番上から取っていきます。
- 配列を想像してください。配列は「.」や「()」を使って任意の位置に値を代入できたり、任意の位置の値を参照(取得)できたりします。こういうのをランダムアクセスといいます。
- スタックでは値の代入は今あるスタックの一番上にしか代入できません。(約束事)
- スタックでは値の取得は今あるスタックの一番上しか取得できません。(約束事)
- 配列をつかってスタックをつくることが出来ますが値の代入・取得の約束事を監視するものが必要です。これをスタックポインタ(スタックポイント)といいます。
スタックオーバーフロー(Stack Overflow)
- スタックには積める量に限界があります。
- 新しい要素を積もうとしたときにすでにあるスタックがいっぱいだと、新しい要素はスタックに入らずに溢れ(overflow)てしまいます。
- 確保したスタック領域外にはどんなコードがあるかわかりません。重要なコードを上書きしてしまっては大変です。
- 溢れてしまって重要なコードを上書きする前に「これ以上スタックに積めません」といった時にこのエラーが表示されます。
宣言(せんげん)
- ソースコードの中で変数名を○○型で使いますよ、と予告(予約?)すること。
- HSPでは予約語やモジュール定義の命令・プリプトセッサ定義以外の有効な名前(HSPの命名規則に従っている)を使われた時点で宣言・確保するため、あまり宣言を意識しなくてもいい。
(デフォルトでは数値型で64バイト確保されている)
- 64バイトを超える領域をもつ変数はdim/sdimで明示的に宣言しなければならない。
宣言文(Declaration stetement)(せんげんぶん)
- 変数の宣言(Declaration of Variable)
- 「dim」や「sdim」で変数を使えるように用意すること。
- HSPでは変数はそのままでは大きなものが入れられないので、「この変数はメモリをコレだけ消費しますよ」と宣言することで変数にさまざまな値を入れることができるようになる。(型によって異なる場合がある)
- HSPでは特に宣言しなくとも変数を使用することができる。ただし、変数のサイズには上限が自動で設定される。
-- た行 --
定数(Constant)(ていすう)
- 数値の0,1,2,3...や文字列の"ABCDEF"などのこと。
- 文字列定数のことを文字列リテラル(Literal)ともいう。
- 上記1.の定数を#defineまたは#constで置き換えたキーワードのこと。
テーブル(Table)
- 表。例えば、
国語
| 算数
| 理科
| 社会
| 69点
| 98点
| 96点
| 35点
| タイトル・区分があり、対応する内容がある。
- 配列。例えば、
インデックスがあり、対応する内容がある。
- ある一方の値が求まると、もう一方の値を得られる構造をテーブルと呼ぶ。
- 配列のインデックスはゼロから始まると分かっているため、対応する内容を容易に取得できる。
- 学問的には「写像」と呼ぶ。
-- な行 --
ネスト(Nest)
- ifやrepeatなどの制御命令で、命令につづく処理の中で同じ命令を含むこと。
- 〜レベルはネストの深さを指す。
- 「〜が深い」repeat〜loop中にrepeat〜loopがあるような入れ子構造が何重にもなっている状態のこと。
- 入れ子:「同じ形で、大きいものに小さいのが順におさまるようになっている仕組み」。ロシア名物マトリョーシカがいい例。
-- は行 --
バッファ(Buffer)
- データを読み込んだメモリ領域のこと。HSPの場合にはほとんどの場合、変数。
- 特に文字列のバッファのことを指す。
- バッファオーバーフローにご注意
- メモリ上に作成された仮想ウィンドウ。buffer命令によって作成される。画像ファイルの読み込みには時間がかかるので、いったんバッファに読み込み、必要に応じてgcopy命令等によってscreen命令で作成される実際のウィンドウに表示する。
バッファオーバーフロー(Buffer over flow / Buffer over run)
- ありとあらゆるアプリケーションに存在するであろう、セキュリティーホール(Bug)のひとつ
- 確保したメモリ領域を越えて文字列が代入されてしまうと、発生する
- この場合、予期せぬ動作をし、OSがフリーズしてしまうこともある
- ちゃんとした、エラー処理をすればOKのハズ…
- とにかく、十分な領域を確保することが必要
- 但し、確保しすぎるのも良くなかったりする…
- HSP3では自動拡張されるようになるので、ほとんど出会わなくなるでしょう。
ハンドル(handle)
- Win32APIにおける意味も含めて一般的な意味はWikipedia参照。
ウィンドウIDやオブジェクトIDにおけるIDと同じ意味と思ってよい。つまり、ウィンドウ等を識別するための番号や名前に類するもの。
ただし、実際にはハンドルはポインタのポインタ。実際にメモリ上のどこにあるかが不確定なため、単なるポインタを記憶していても実際に使う時点では無効になっていたりする。そこで、ハンドルすなわちポインタのポインタを記憶し、ハンドルからポインタを取得して実体を読み書きする(ここでいう実体とはウィンドウ等を制御するための情報格納領域を指す)。
引数(ひきすう)(Parameter / Argument)
- 命令や関数に渡す、数字や文字列などのデータのこと。ソフト起動時にソフトに対して渡す場合もある。
- 実引数と、仮引数というのがある。
- ユーザ定義命令/関数において、呼び出し元(側)で指定する引数を実引数、
定義側で値を受け取る引数を仮引数と呼ぶ。仮引数は常に変数だが、実引数は定数だったり式だったりする。実引数の内容が仮引数にコピーされてからユーザ定義命令/関数が実行される。例外はVer2.xxのval、Ver3.xxのvarやarrayで、これらにおいては仮引数と実引数は実質的に同じ変数を表す)
例えば
;HSP2.61ver de run
#module
#deffunc foo str
mref hoge,32
print "foo["+hoge+"]"
return
#global
foo "HSP2"
stop
この場合、呼び出し元のfoo命令の引数に指定されている文字列"HSP2"が実引数で、foo命令内で渡された引数を受け取るhogeの部分が仮引数。
これはHSP3の記述の方がわかりやすい
;HSP3.0ver de run
#module
#deffunc foo str hoge
print "foo["+hoge+"]"
return
#global
foo "HSP3"
stop
ビットシフト(bits - Shift)
- ビット(列)を「移す」という意味。どこに移すかは演算子の向きにより右、左の2種類ある。
- 右シフト(>>演算子)はビット列を右に移す
- 左シフト(<<演算子)はビット列を左に移す
- シフト:位置の移動。この言葉は日常でもよく使われる。「ギアをシフトする」「シフトを組む」など。
- ビット:2進数のこと。
- 例:ビットシフト
プリプロセッサ(PreProcessor)
- 前(Pre)処理(Process<+行う者/物>or):コンパイラを起動する前に自動的に特定の処理をする機構・機能。
- 正確には前処理自体はプリプロセスという。
- インクルードやマクロの機能などはこのプリプロセッサを使用している。
- あまり多用しすぎると場合によってはスクリプトが読みにくくなるので注意。
- HSP では プリプロセスを行うキーワードを「プリプロセッサ命令」と呼んでいるが他の言語では「プリプロセス文」または「ディレクティブ」(directive=指示/命令)などと呼ぶ。
- 一応、「プリプロセッサ命令」という呼び方も使われることがある。
プロパティ(property)
- ウィンドウを例にすると、横幅・高さ・タイトル文字列などの属性のこと。
変数(Variable)(へんすう)
- 数値や文字、文字列、を入れるための容器のこと。
- 定数を代入して中身を変化させられるキーワード。
- =演算子で代入可能。
- 変数を宣言することはメモリの領域を確保することを意味する
- 配列変数はメモリ領域を連続で確保する。
- 但し、殆どのスクリプト言語では変数の宣言は必要ない。
- HSPでは特に大きなメモリ領域を必要としない限り宣言する必要はない。
- また、配列変数を使用する際はちゃんと宣言して使用するほうがよい。
- 数学で、「x = 1」と書いたときの「x」と同様にとらえてもさして問題ない。
ポインタ(Pointer)
- 変数の開始位置を記憶した変数またはその値。
- あるメモリアドレスを指し示すモノ。
- 「指し示す」を意味する「ポイント」から借用して付けられた概念上の名称。
-- ま行 --
マクロ(Macro)
- 特定の処理をひとまとめにパッケージングしたもの。
- #defineで特定処理を簡単なキーワード登録している。
- 何度も利用する処理を命令のように簡単に呼び出して使用することができる。
- 一方、多用しすぎると却って分かりにくくなるので注意。
- 普通に使う分には命令と同様の感覚で使用できる。
メソッド(method)
- ウィンドウを例にすると、「非表示にする」「操作不能にする」「操作不能状態から復帰する」などの動作。
C++等における実体としては関数のことになる。
メモリの確保
- 変数の宣言をし、メモリ領域を確保する。
- メモリには番地(Addres)が割り当てられている
- 例えば、aという変数を宣言をすると、何処かの番地にaという変数の内容が格納される
例:
;HSP2.61ver de run
#include "llmod.as"
print "変数の場合"
print "------------------------------------------------------------------"
a = 0 :getptr pa,a :hpa = pa
str hpa,23 ;paの数値を8桁の16進数文字列に変換
print "a の内容: "+a+" | 番地[10進数]: "+pa+" | 番地[16進数]: 0x"+hpa
b = 0 :getptr pb,b :hpb = pb
str hpb,23 ;pbの数値を8桁の16進数文字列に変換
print "b の内容: "+b+" | 番地[10進数]: "+pb+" | 番地[16進数]: 0x"+hpb
print "------------------------------------------------------------------"
print "配列変数の場合"
print "------------------------------------------------------------------"
repeat 4
ary.cnt = cnt : getptr pary.cnt,ary.cnt : hpary = pary.cnt : str hpary,23
print "ary."+cnt+" の内容: "+ary.cnt+" | 番地[10進数]: "+pary.cnt+" | 番地[16進数]: 0x"+hpary
loop
stop
HSPHelp:getptr
モジュール変数(もじゅーるへんすう)
- ユーザー定義命令・関数内で使用される変数や、newmod命令で作成される複数型の変数をまとめたモジュール型変数、とその個々の変数の総称。(*)
*: この用語の説明は書き途中です->Note:HSP用語辞典(参考)
戻り値(Return Value)(もどりち)
- 命令や関数を呼び出し、処理した後の結果を引数に指定された変数に代入し返す。
gettime time,0
print time
stop
この場合、timeに値(year)が返ってることになる
- システム変数に返ってることもある
-- や行 --
予約語(Reserved words)(よやくご)
- プログラミング言語が最初から用意している意味を持つ単語のこと。
- mes/peekなどの標準命令名やif/else/repeatなどの制御命令、winx/cntなどのシステム変数が予約語に当たり、これらの単語はHSPが最初から用意している。
- モジュールファイルをincludeするとモジュールが用意している命令名なども予約語に登録しているという見方もできるが、あまりこれは予約語とは言わない。>>Note:HSP用語辞典
-- ら行 --
ラップ(wrap)(らっぷ)
- 本来行われる処理を変更することなく、その処理の前に別の処理を上乗せすることをラップ、ラッピング、などと呼ぶ。
- ラップを用いた命令・関数などをラップ○○と呼んだり、単にラッパ(ー)(『ラップさせたもの』という意味)と呼んだりする。
- wrapは本来「包む」という意味がある。
-- わ行 --
-- 未整理 --
五十音順にならべるのが面倒な場合はここに入れて置いてください。
予約語の読み方
- 命令読み方
- 関数読み方
- マクロ読み方
- システム変数読み方
- 予約語の読み方
掲載希望用語リスト
ここには理解しにくく感じる言葉や昔理解できなかった言葉などを書き込んでください。
解説できる方、上の用語辞典に書き込んでくださると助かります。
アドバイス
アドバイスの内容は、初心者向けアドバイスへ移行しました。
HSP用語辞典について
「読み」について
HSPの命令や関数の「読み方」辞典はもちろん。
用語やその他の読み方についても出来るだけ記載して欲しいです
発音出来た方が覚え易いですし、英語が分からない人にも有益だと思いますのでお願いします。
名前から命令なり関数がどう言う働をするかも予測できる様になると思います。
解説者にお願い
説明はできるだけ噛み砕いた言葉でお願いします。
辞書的な説明文は検索すればいくらでも出てきますから、ここぐらいは「HSP初心者ユーザーに分かりやすく」を目指したいところです。
自称初心者へのお願い
本文中でわかりにくい表現や理解できない項目などありましたら、どれが分からないのか教えてください。ここに書き込んでいただければ結構です。掲示板でもいいかも。
|