以前から、装置を繋げないノートPCでも測定ソフトを動作するようにして欲しいという要望があった。これは営業部からの要望で、展示会などでデモをするためだ。要望を受けてからすこしだけ実装しかけたのだが、他に優先度の高い機能が山積みだったので、デモモードは途中でほったらかしになっていた。
今日、装置との通信インターフェース周りをリファクタリングしていた時に、ちょっと思い付いたことがあったので実装してみた。

そもそもデモモードに切り替わる条件は

  1. 通信用DLLが存在しない
  2. 通信ボードのオープンに失敗する
  3. ファームウェアモジュール(PC上のファイル)が存在しない

のようになる。数字の小さい方から順にチェックされ、条件に合致(つまり、通信が不可能であると判明する)したら、デモモードに切り替える。デモモードと通常モードは、通信オブジェクトを交換することで切替えるために、多態性を利用する。つまり、通信用インターフェースを提供する基底クラスから派生させた「デモ用通信クラス」と「通信クラス(実際に通信を行う)」を交換することで、アプリケーションの本体からはどちらのモードであるかを意識せずに動作させる。オブジェクト指向ではごく基本的な手段だ。

以前は通信インタフェースを送信用と受信用に分けていたせいで複雑になっていた。