当たり前といえばそうなのだが。
どういうとき?
センサの値を時々刻々と取得し、何か状態を推定するプログラムを組むとき。
例えば
- 歩数計
- GPSのフィルタ
- 音声信号をどうにかする
などなど
なんで?
デバッグのたびに実機を動かすのは大変手間である。
例えばGPSのフィルタを作ろうと思ったらいちいち外に出て歩かねばならない。
こうなると気軽に推定ロジックを変えようという気が起きなくなる。
センサを抽象化することにより、簡単に模擬入力に差し替え可能になる。
すると実機を使わなくても出力を確認できる上に、
センサの値の発行間隔を自由に変更できるようになるので、待ち時間も短くなる。
こうなればロジック変更が気軽に行えるようになる上、完全に同じ入力を入力できるようになるので
「全く同じ入力に対して精度がこれだけ上がった」という確認ができるようになる。
どうやって?
センサの値を直接取得するのではなく、インターフェースなり抽象クラスなりを通して取得する。
また、センサのログをファイルなどに出力できるようにし、取得したログ形式を入力として扱えるようにする。
時間を扱う場合はセンサのログは時間も記録するようにする。