弐条海月の とはずがたり

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

HSPで開発したアプリのバグ修正

 私が以前「HSP(Hot Soup Processor)」で開発したテキストファイルをhtmlに変換するアプリがありまして…ここ数日、そのバグ修正を行っております。このアプリは私と氷翠さんが隔日で使っているもので、小さなアプリケーションを動かして目的の仕事を行う物なんですが。氷翠さんの環境では、そのうちの2つのアプリが動作中にエラーを起こして強制終了してしまうようになり困っていたそうなんです。

 私はWindows 98SEで運用していて問題なく起動するのですが、氷翠さんはWindows VistaからWindows XPに変えた途端に動かなくなったと言います。それを聞いて私は確信しました。原因のひとつがWIndows XPではないかと推察されるからであり、また実は過去に開発したアプリの中で、同様の症状が出ているものがあったからです。

 ほかならぬ、先日ソースを書き直して完成させた年号西暦の相互変換アプリ「一発換太君」も、旧アプリではT女史のノートPC(XP)で動作しなかったために作り直したアプリなんです。

 氷翠さんによると、XPでアプリを起動した際に発生するエラーは、ファイル操作を行う辺りらしいとのこと。そこでファイルをコピー、移動する命令を調べて怪しい箇所を特定し、その命令をコメントアウトすると、アプリの動作としては完結しないものの(当然ですね)エラーは起きないことが分かりましたので、代替命令文を入れて解決することにしました。とは言え、まだいくつか動作不良のアプリがありますので、早く直さねばなりませんね。

 私の開発環境下での話なので参考になるかどうかは分かりませんが、一応書いておきますね。エラーは、HSP純正プラグインhspextにあるファイルのコピー・移動命令「fxcopy」で発生しておりました。ですので、標準命令の「bcopy」に置き換えて解決させました。


西暦と元号を相互変換…自作アプリ「一発換太君」

一発換太君とプロパティ画面

一発換太君とプロパティ画面

 西暦と元号を相互変換できる自作アプリケーション「一発換太君」をフリーのインタプリタ言語「HSP(Hot Soup Processor)」で開発。そのプロパティアプリを追加で開発しているのですが…最近は色々と忙しくなかなかはかどっておりませんでした。ですが、本日ついに完成しました。今日はそんな話です。

 アプリ本体である「一発換太君」はすでに完成済。後から将来の設定変更に対応するため、元号の追加・修正・削除が可能なプロパティアプリを追加することにしたのです。…と言うとカッコイイですが、実は単に作り忘れていただけです(笑)。

 本体の開発で満足していたためプロパティ部分の開発が面倒だった私は、以前作成したアプリの設定画面を流用し、本体に組み込むのも面倒だったのでプロパティを別アプリとして開発する方法を採用しました。

 ところが実際に開発を進めていくと流用した部分がほとんど役に立たず、あれこれ修正しているうちに新規で開発したほうが良かったと後悔しました。ダメですね、面倒くさいからと手抜きするのは(笑)。

 結果的には別アプリにしておいて良かったと思います。何しろ「一発換太君」本体よりもプロパティアプリのほうがずっと複雑で、外部プラグインもたくさん使用することになりましたからね。

 そのプロパティアプリの開発が終盤にさしかかった今日、ふと気づいたことがあって仕様変更することにしました。ふと気づいたこと…それは年号変換アプリ「一発換太君」が対応している1801年(享和元年)から1989年(平成元年)までのデータは、編集する必要も削除する必要もないということ。むしろ手を加えてはいけない部分であるということです。

 そこで、平成元年までのファイルは読み取り専用ファイルとしてデータを読み込み、新しい年号の追加・編集・削除は別ファイルにて管理することにしました。この場合、平成元年までのデータはまったくいじらなくなるためプロパティ画面で表示する必要すら本当はないのですが、表示したほうがそれっぽいという理由で表示。ただし、編集・削除はできない…という仕様にするのに手間取りました(笑)。

 読みとり専用データとユーザー追加データをそれぞれ読み込み、合わせて表示。年号の追加があった場合はユーザーデータに追加、編集、削除のアクションを起こした際にもユーザーファイルに反映させる方法です。アプリ終了時に変更したデータを保存するかしないかを選ばせて処理するところまで開発してプロパティアプリが完成です。

 事前に「一発換太君」のウインドウ下部にプロパティアプリの起動ボタンをレイアウトしてあったのですが、少し考えてボタンは削除することにしました。プロパティアプリは元号の追加などを行うという性質上、気軽に使うものではないというのがその理由です。
アプリ本体と同じディレクトリにプロパティアプリを置いているので、必要に応じて起動させれば良いかと。

 加えて、本体の「一発換太君」の起動時に、読みとり専用データに加えてユーザー追加データを読み込み結合する処理を追加して完成。あー疲れました。今日はアプリ完成の余韻に浸りたい気分です(爆)。


プログラムの話と社内ネットワーク…

 今日はメインの仕事が忙しくなかったので、プログラム開発のしやすい日でした。おかげさまで現在開発中の西暦→元号変換アプリ「一発換君」のプロパティの開発を予定より進めることができました。やはり、まとまった時間が取れると開発のペースは上がりますね。

 そもそも「一発換君」は主に、元いた部署の需要を見込んで開発しているものなんです。仕事柄、西暦や年号を確認することが多いため、かつて私自身がその部署にいた際に必要性を感じ「ないんだったら自分で作ればいいのよ
」精神のもと、勢いで開発したのが最初でした(笑)。

 明日はその部署の会議があるのでその時に発表できたらいいなぁと思っていたのですが、とある事情で(後述します)プロパティの完成には至りませんでした。でも、気づけば明日は会社の全体会議。ということは…元いた部署の会議は木曜日にずれ込むはず。

 「それなら間に合いそうだぞ…」キーボードを叩く手をふと止め、私は一人ほくそ笑むのでした(爆)。

 プログラム開発の遅れは、会社のネットワーク環境が不調になっているためです。ルータの不調に気が付いたのは土曜日の夕方。先方に送らなければならない大きなデータがありますのに専用回線が使えないのは困ります。そこでルーターの復旧を試みましたが何故かうまくいかず。仕方がないので週明けに再度試すと決め、今日を迎えたのですが
…まったくダメでした。社長にお願いして新しいルーターを入れてもらったのですが、それから状況がさらに悪化。昼過ぎから午後8時近くまでネットワーク関連の作業をしましたが、解決には至りませんでした。

 説明が大変なので詳細は省きますが、小規模な社内ネットワークの割にやたら複雑な構成になっているため、少しすっきりさせようということになりまして明日、再構築を行います。朝の仕事がひと段落したら始めます。夕方の会議までに目処をつけませんと…。


仕様が固まらないです…

開発中の画面

開発中の画面

 Windowsで動作ずるインタプリタ言語「HSP(Hot Soup Processor)」で、仕事で使える「西暦と元号」「年齢と生年」の相互変換アプリを開発中です。全ての処理が完成しましたが、未だプロトタイプの形にすらなっていません(笑)。今日はバグ取りや最終的な調整をしようと思ったのですが、西暦or年号を選択肢数値を入力後「調べる」ボタンを押すとダイアログ表示で結果を示す現在の仕組みよりも、数値を入力するとダイレクトに結果を返す仕様のほうが使いやすいかな?と。どちらが良いのか…悩んでおります。写真は開発中の画面です。


HSPでのプログラム開発

 西暦から元号へ、元号から西暦などへの変換アプリをWindowsで動作するインタプリタ言語HSP(Hot Soup Processor)で開発中です。10年ほど前に旧バージョンのHSP開発したものをHSP3.2で開発し直しているのですが、最近はプログラムに取り組む時間が以前より減っているせいか、プログラム的思考が追いついていない感じです。

 すでに西暦→元号変換は開発済。元号→西暦変換もできているといえばできているのですが、例えばあり得ない値(昭和80年)を入れた時の表示を最適化する処理を行っております。
 例で言えば昭和80年は西暦換算で2005年なのですが、実際には昭和80年などありえないわけで…。そこで親切にも2005年が元号で何年なのかを表示する仕様にしたいと思いまして試行錯誤しておりました。

 ここしばらく少しずつ開発していたのですが、ちょっと行き詰まった時にふと気づいたこと。それは「あれ?今書いている処理って、西暦→元号変換の処理と同じじゃ?」ということ。そうなんです。同じ処理を難しく考えていただけだったのです。

 さっそく西暦→元号変換の処理をちょっと書き直してサブルーチン化し、どこからでも使えるようにしました。そういう発想が大切なのですが、やはりプログラム的思考がダメなようです。


固定ページ

最近の投稿

カテゴリー





カレンダー

2024年5月
 12345
6789101112
13141516171819
20212223242526
2728293031  

過去の日記はこちら

キーワードで検索