経緯
1年目に担当した業務は、今あるアプリケーションに新しくボタンを追加することでした。
ここでは、その業務で学んだボタンを追加するときに考えるべきことをまとめようと思います。ちなみに開発言語はVB.netでした。
Tabの選択順を合わせる
これは言語によって違うのかもしれませんが、すでにあるアプリケーションに新しくボタンを追加すると、当然ながらTabを押した時に選択される順番は、新しく追加したボタンが最後に選択されます。順番を自然にするため、プロパティTabIndexを設定する必要があります。当然ながら、すでにあるボタンも追加されるボタンの分、一つずつずらしていく必要があります。
処理中の挙動
ボタンを押し、処理を実行している間の挙動は機能によって考える必要があります。自分が担当した業務では以下のようなことを考えました。機能によってどうするかは考える必要があると思います。
- ボタンを押している途中は、カーソルを待機状態にしておく
- 処理が終わったら、カーソルをデフォルトに戻す
- 処理中はボタンが反応しないようにする(ボタンを非活性)
また、処理中にボタンを反応しないようにする場面では一つ落とし穴のようなところがありました。ボタンを非活性にしておけば、処理中にボタンをクリックしても反応しないと思いました。しかし、非活性中にボタンをクリックすると、そのクリックイベントは待機していて、ボタンが非活性から活性になると、再び送られ処理を実行してしまいました。とりあえず最後にDoEventsで待機中のイベントを全部廃棄するようにしました。
DoEventsは推奨されていなようです。フラグを立てたり、いろいろ別の方法はあるようで、次に同じことをやる場合は、この部分は詳しく調べる必要がありそうです。(自分が担当したところは複雑な部分でないので大丈夫...なはず。)
処理が正常に終わらなかった場合
これも処理がどういうものかに依存すると思います。自分が担当したものは独立した機能なので、その機能が正常に動かなくても、業務自体に大きな支障はありません。そのため処理が正常に終わらなくても、画面は閉じないようにしました。
できるだけ既存の形に合わせる
自分が追加した機能と同じような機能がありましたので、エラーメッセージの表示方法などはそちらの機能と同じようにしました。 ただし、これはあくまでユーザーが分かりやすいようにするということなので、中身まで無理に合わせる必要はないと思います。 実際、自分が担当したシステムはかなり古いもので、いわゆるレガシーコードがたくさんあります。それに無理に合わせると、どんどん分かりにくいコードが増えていくことになります(リファクタリングをするのがベストなのだろうなとは思いますが)。
まとめ
初めての開発ということで、後から見直すとかなり拙い部分が多かったなと思います。また今までよくプログラムの知識だけではなく業務理解も必要という意味がよくわからなかったのですが、今回実際に開発してみて、その意味が理解できたと思います。