いなえの鉛筆 情報 掲示板 ソフト紹介 JavaAP HGIMG3講座 OBAQ講座 SP講座 リンク集
はじめに サイズ削減術 高度な技術 画像の内部生成

第一章 はじめに

1.この講座について

この講座はHSPプログラムコンテスト・HSPTV部門(以下慣例に従いショート部門と呼ぶ)の対策に焦点を当てて構成されています。 管理人いなえの経験を元に、ショート部門への作品応募に役立つ手法その他を思いつく限り挙げていきます。 このページ内のスクリプトは自由に利用していただいてかまいません。 もちろん改変もOKです。

この講座に挙げたもの以外にも、いわゆる職人技と呼ばれる部類の技術が多々あると思います。 よって、この講座はこれからショート部門に挑戦しようとしているHSPユーザに送る参考資料と考えてください。 「自ら学ぶ」楽しみを残しつつ、必要最小限の情報のみ載せていくつもりです。 この講座が読者のお役に立てば幸いです。 なお内容には万全を期していますが、もし間違い等ございましたらお手数ですが「掲示板」にお書き込みください。

2.ショートプログラミング

ショートプログラミングとは、ここではHSPプログラムコンテスト・HSPTV部門に向けた作品のプログラミングを指します。 HSPプログラムコンテストは毎年開催され、多数のHSPユーザがプログラミングの腕を競っています。 コンテストでは一般部門とHSPTV部門が設けられ、作品ごとにどちらかの部門に応募することになります。 HSPTV部門に応募された作品は「HSPTVブラウザ」で見ることができるので、 どのような作品が応募されているのかを一度確認してみてください。

一般の部門では拡張プラグインを含めてHSPのすべての機能を制限なく使用できます。 対して、ショート部門ではいくつかの制約事項を守って制作を行う必要があります。 詳細は開催年によって異なりますが、重要なのは次の2点です。

  1. データファイルを用意してはいけません。
  2. start.axファイルのサイズに上限があります。

start.axファイルはHSPスクリプトエディタから「START.AXファイル作成」メニューで作成することができ、 応募の際にはそのstart.axファイルを応募することになります。 start.axファイルのサイズはプログラムの規模が大きいほど大きくなります。 また別途データファイルを用意することができないので、 画像や音楽を用いようとすると一工夫必要になります。 定められたファイルサイズ内でいかに作りこむかというところにショートプログラミングの醍醐味があります。

ショートプログラミング講座(以下SP講座)では主にスクリプトのサイズ削減術に焦点を当てていきます。 また、少し高度な処理を行うための知識や画像の内部生成の手法についても記述していきます。

3.スクリプトのダイエット

作品の基本的な作り方はショート部門への応募作品でも通常と変わりません。 とりあえず思い立ったアイデアをソフトに仕立てます。 ここで一般の部門ならば完成したソフトをそのまま応募することができますが、 ショート部門では大抵定められたサイズを上回ってしまいます。 しかし諦めてはいけません。 とりあえず完成した作品のスクリプトは、よほど注意深く作らない限り贅肉だらけの状態です。 その贅肉を削ぎ落とすことによってスクリプトのサイズ、すなわちstart.axファイルのサイズは減少し、 必要最小限の処理のみが記述された身のしまったスクリプトに変身するのです。

スクリプトのダイエットの基本は試行錯誤です。 サイズが減りそうな部分があれば、実際に変更してみてサイズを変更前と比較します。 サイズが減らなければ元に戻しておきましょう。 現在のstart.axファイルのサイズを書きとめておくのもよいですし、 このサイトで公開しているソフト「Staxeye」のように、ファイルサイズの監視用ソフトを導入するのもよいでしょう。 スクリプトのダイエットの際は可能な限り作品の挙動を変更しないように行います。 もちろん改良や変更、機能拡張はサイズ制限の許す限りでどれだけ行ってもかまいません。 最終的にどうしても定められたサイズを上回ってしまう場合は、 妥協して機能を減らすかショート部門への応募を諦めて一般部門への応募に変更する必要があります。

なお、start.axファイルのサイズは変数名の長さやコメントの量、スクリプト内のスペースや改行の量には依りません。 勘違いして変数名をすべて1文字にする等といったことはしないでください。 むしろショートプログラミングではスクリプトが複雑になるので、ぱっと見て分かる変数名を付けるよう心がけてください。 コメントについても一切start.axのファイルサイズに関わりません。 したがって、コメントを有効活用しない手はありません。 処理内容の記述のための使用はもちろん、 サイズ削減のため削除するスクリプトもコメントとして残しておけば後でまた使えるかもしれません。

4.サイズ一覧

start.axファイルのサイズ削減を行う際に知っておきたいのは、 スクリプトの各要素がstart.axファイルではどの程度のサイズに化けるのかということです。 基本的な要素について具体的に見ていきましょう。 サイズの単位はバイトです。

要素サイズ
空のスクリプト114
命令ほとんど4(例外あり)
関数12
変数4
配列要素へのアクセス8
整数(0〜65535)4
整数(-2147483648〜-1、65536〜2147483647)6
実数12
ラベル4
半角n文字の文字列5+n
各種演算子(四則、\、論理、比較、ビット、代入)4
特殊な代入、単純な加算減算
(プログラミングマニュアル「変数」の項参照)
4
計算式先頭の「-」10

原則としてこれらの要素をスクリプトに記述していく毎に、各要素の右に示したサイズだけstart.axファイルのサイズが増加していきます。 例外もいくつかあるようなので、あくまで参考程度と思ってください。

はじめに サイズ削減術 高度な技術 画像の内部生成
いなえの鉛筆 情報 掲示板 ソフト紹介 JavaAP HGIMG3講座 OBAQ講座 SP講座 リンク集