HSP
tips
環境構築
プログラミング言語

HSPで本格的にプログラムを書きたい人向けのtips

※姉妹記事:使いやすいけど使いづらいプログラミング言語「HSP」について

概要

 タイトル通りです。素の「HSPスクリプトエディタ」(原文ママ)だけだと非常に辛いものがあるので、プログラムを組みやすいように環境を構築していきます。

エディタ

 素のエディタは使いづらい(理由はあえて書かない)ので、真っ当なテキストエディタに乗り換えましょう。「テキストエディタ おすすめ」とかで適当にググってもいいのですが、ここで重要なのが書いている途中で即座にコンパイルして実行できるようにするということです。
 プログラムを書く際はしょっちゅう実行させて、バグがないか・実装できているかをチェックするものです。それなのに、毎回標準エディタにコピペして実行していたのでは心が折れます。というわけで、次のどれかによってサクサク実行できるようにします。

デバッガ

 標準のデバッガなんて窓から投げ捨てて、knowbugを導入して下さい。デバッグ作業の効率が全然違います。どれぐらい違うかは次の画像で一目瞭然でしょう。
デバッガ比較

プラグイン

 標準で付属するプラグインがなかなかに豊富なので、まずはそちらでなんとかならないかを検討しましょう。例えば、画像をpng等様々な形式で保存したい場合はHSPCV、データベース操作を高速で行いたい際はSQLeleが標準で添付されていて便利です。

 ただ、コールバック処理を行ったり多倍長整数演算を行ったり連想配列を使ったりする場合など、標準では無いものが欲しい場合は迷わず利用しましょう。ただし、ライセンスには十分に注意して下さい

書き方

 この辺は個人的な趣味が大きく絡んでくるので強要はしませんが、個人的に心がけているコツなどをば。

  • 書く前に設計を十分に考慮する……手続き型言語でしかもグローバル変数がデフォですので、何も考えず書きまくると後々痛い目に遭います。どこをモジュールにしてどこをサブルーチンにするか、結合度はどうするかなどを事前に書き出すなどして管理しましょう。
  • 暗黙の型変換はなるべく使わないようにする……別に使ってもいいのですが、「自分が理解できる範囲内で」という成約が付きます。式の始めに「0」「0.0」「""」などを置いて加算することで型変換するテクニックは頻繁に用いられますが、「英字と数字混じりの文字列を変換する」場合などは特に注意が必要です。自動拡張も同様で、なるべくdimやddimやsdimで確保するようにしましょう。
  • elseの後のifはネストが深くならないようにする……HSPには「else if(){……}」と書く記法はありません。なので、「else :if(){……}」として代用しましょう。
  • なるべくrepeatではなくforを使う……一応先に言っておくと、速度面ではrepeatの方がforの8倍以上速いです。ではなぜforを推奨するかと言うと、repeatからreturnで抜けるとlooplevが減少しませんが、forだとその罠がないからです。looplevはrepeat文に突入すると増え、loopやbreakで抜けると減少します。そしてlooplevが大きくなりすぎると実行時エラーになってしまうのです。「ループ途中からreturnで抜けるとダメ」というのは甚だ奇妙なものですが、HSPの仕様なら仕方ありませんね。
  • モジュールで定義する関数・命令における引数の末尾には_を付ける……名称が被ってエラーを出さないための自衛策です。どう考えても理不尽な仕様ですが、HSPの仕様なら仕方ありませんね。
  • 複雑なロジックや、速度が求められる箇所はC++等で書く……身も蓋もありませんが、そもそもガッツリ書くのには適さない言語ですので仕方ありませんね。HSP用のDLL作成法は次の投稿などが参考になるかと。

  DLLの作り方とHSPでの呼び出し方。
  【他でも動く】C言語/C++ で作った関数をHSPで動かす【DLL】

その他

 集合知というのはなかなか強力なものですが(Googleを見ながら)、HSPにも集合知の要素は取り入れられます。HSPには公式で質問掲示板がある(オススメだとは言ってない)のですが、そのログがHSP標準のヘルプで利用できる形式ダウンロードできます。インストールフォルダ以下のdoclibフォルダにフォルダごとコピーすれば使えます。何が嬉しいかと言えば、HSP標準のヘルプで「オセロ」などと抽象的なワードを投げても参考になる投稿が出てくるということです。初学者にとってこれは大きな助けになるのではないでしょうか?

まとめ

 いろいろ気をつけながら楽しいHSPライフを!