高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

作ってみたもの

少し前ですが、PDA用に、無限にラップタイムを計測可能なストップウォッチ、iSWatchを作成しました。本当はもう同種のソフトがあるようですが、最近プログラミングやってないし、ストレス解消もかねて と。
それ以外の特徴といえば、CSVで記録を保存できるということと、ハードキーの左右だけでも操作可能 ということくらいかな*1。操作感は本物のストップウォッチに近づけてありますし、使いやすいと思います。
一応.NET Compact Framework専用コンポーネントを一切使っていませんので、Windows上でも.NET Frameworkがあれば試用可能です*2。今はYahooブリーフケース、shared > developments > CSharp > iSWatch.zipに入っています。
近くベクターとおんぷ村にも公開したいです。でもPDAソフトって、登録フォームのOSの欄などどう書けばいいのでしょうかねぇ?既公開ソフトを見た感じだと、みんな”その他”になってるようですが…。

さて、開発後期のようなものですが…。そういえば.NET Compact Frameworkでまともで実用的なソフトを作ったのは、今回が初めてだったかもしれません。
感想としては、あんまり込み入ったことをしなければ、結構手軽に作成できますね。一応OnResizeイベントで動的にリサイズを行う(画面回転に対応するため)ようにしたのにちょっと苦労をしましたが(ひたすら計算なので、苦労というより、書くのに時間がかかった)、それ以外は問題なし。一応オブジェクト指向っぽくストップウォッチクラスを作って、メインフォームからそれを作って動かす…というふうにやってみたので、ソース上の見通しもよいものになったと思います。GetTickCount*3相当の関数を使っていますので、計測も割と正確だと思いますよ。
後で見ると、タイマー割り込みが100ミリ秒ごとに発生しますから、CPUパワーをちょっと使いそう。現在時刻のラベル表示のためだけにタイマーを使ってるので*4、1000ミリ秒=1秒レベルの計測でも問題はないんですよね、まあ、大した違いにはならないかもしれませんが。
まあいいです。そのあたりの細かいことは、ソース公開していることですし、各自いじってもらうことにしましょうか(^^ゞ


ちなみに、開発期間は約6時間。これくらいはもっともっと早く作れるようにしたいですね。

*1:後はこっそり、画面回転にも対応(画面を回転させても、レイアウトが崩れない)していたり…(^^ゞ

*2:ただしWindowsではフォームにフォーカスが合わないため、十字キーでの操作はできません

*3:Windows APIで、システムが起動してからのミリ秒数を取得するもの

*4:よくある手段ですが、直前のTickからの差で時間を計測しているため、時間計測自体はタイマーの影響を受けない