弐条海月の とはずがたり

そこはかとなく書き綴るブログなるもの

HSPでの開発話…

仕事でスタッフに毎日使ってもらっているアプリケーションを新規で開発し直すことになりました。業務上の仕様変更のためこれまで自動化できていた部分が手動での作業になってしまうため、それでは…と手を入れることにしたものです。開発言語は、いつもの通りWindowsで動作するフリーのインタプリタ型プログラム言語「HSP(Hot Soup Processor)」。以前のアプリケーションは、HSPの古いバージョン「HSP2.6」で書いており、基本的なプログラム言語の仕様が大きく変わっていること、私のプログラムの書き方もかなり変化したことから最新の「HSP3.2」で新規に書き直すことにしたものです。そのお話。

このアプリケーションは、先方から定期的に送られてくるテキストデータを整形して切り分け、1日ごとのファイルに変換。その後、1日ごとのファイルを読み込み中のデータ(数値や文字列)をもとに対応する画像ファイルを選択し、それをグラフのようなベースの所定の場所に貼り付けて最終的に1枚の画像を作るアプリケーションです。生成した画像は印刷にも使える大きさになっているのが特徴です。

 このアプリケーションは2006年秋に開発しました。それまでは数値や文字列に対応する画像を手作業で1枚ずつベースに貼り付けていました。ベースに貼り付ける画像は1日分で84枚ありますから、手作業でやるとかなり時間がかかります。2日分だとその倍の時間がかかることになります。それを完全に自動化するために開発したアプリケーションなのでした。

今回はグラフのようなベース画像が変更になったので、プログラムの修正をかけることにしたのですが、「HSP2.6」時代にお世話になり現在は使わなくなったプラグインではない処理方法を検討する必要がありました。HSPでのアプリケーション開発には欠かせない「HSP-NEXT」のさくらさんが作られたHSPモジュール集「stdlib」を主に使い、文字列の取り扱い部分では私が自作したモジュール「kurage_mod」を使って開発しました。

作ろうと決めたのは実は4月に入ってからです。「HSP3.2」になって画像処理系の命令も強化されているため、標準命令でかなりのことができそうな気がしたのですが、普段書いているプログラムは文字処理関連が主なので、画像処理は苦手です(汗)。

予定では5月からこのプログラムを動かして業務することとなっておりますので、早期に開発してテストを行い万全を期したいと思っておりましたが…今日のうちに取りあえず組み上がりました。昨日と今日はプログラム開発しかやっておりませんので、思った以上に早かったです。単純な比較にはならないかもしれませんが、「HSP2.6」で開発した従来アプリではソースが552行あったのですが、新たに「HSP3.2」で開発したバージョンでは、機能は複雑化しているのにもかかわらず行数は467行と100行近く短くなっております(爆)。

とりわけ、今回のアプリケーション開発で勉強になったのは、画像処理の部分ですね。HSP2.6xで開発した以前のアプリケーションは、サードパーティー製のプラグインを使用しデータに沿ってPNG画像を読み込み、所定の場所に貼り付けておりました。その際、透明画像のサポートが必要な場合と、そうでない場合の処理を両方書いて、それぞれの画像をどちらの方法で処理するか判断しておりました。

今回は純正の命令で新しく登場したcel関数を用いて透明処理を含む画像処理を行うことにしました。この命令を使うと、画像の管理が簡単になります。従来は仮想画面を作成してから画像を読み込むことになっておりましたが、celload命令では仮想画面の作成も込みで画像を読み込むことができます。読み込んだ画像は、celdiv命令にて分割サイズを設定すれば、同サイズの画像であれば任意の場所から画像を切り出して使うことができますから便利です。これによって従来は様々なデータに対応する画像(アイコン)が116個あったのですが、cel命令でまとめることができたのでわずか34個になりました(笑)。すべての画像をまとめた訳ではありませんが、まとめて処理しているのといないのとでは、明らかに動作速度が違い後者のほうが高速ですね。

また、今回はPNG画像の読み込みにImgCtxを利用して画像ファイルを読み込むモジュール命令「mod_img.as」の命令文「imgload」を使用してみたのですが、BMP画像を使って新しいcel関数を使用したほうが高速に処理ができることが分かったのでPNG画像はすべてBMPに変更しました。

それと、1日分の処理を終えてJPG画像を書き出そうと思ったら…標準命令では画像を書き出せないのを思い出しました(笑)。そこで画像処理に特化した拡張画面制御命令用の純正プラグイン「hspcv」を初めて使うことに。すでに仮想バッファ内で画像を張り終えたベース画像を以下の命令文にてJPG画像として保存しました。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

固定ページ

最近の投稿

カテゴリー





カレンダー

2011年4月
 123
45678910
11121314151617
18192021222324
252627282930  

過去の日記はこちら

キーワードで検索