お仕事で、IoT機器と接続して、機器を操作したり、機器からデータを取り込んでデータ表示するアプリを2つほど開発しました。
その時に、アプリ側から見た、要件策定、仕様策定、テスト、運用時などに気をつけた方が良いことが少し見えて来たので、メモしておきます。
【すごく大事】IoT機器に接続するアプリをいつまでサポートするかあらかじめ決める
アプリケーションと連動して動作するハードは、アプリケーションが使えないとゴミ同然になってしまう場合があります。
しかし、スマホのOSは年に一回のペースでメジャーアップデートしていくので、リリース時は動作したアプリも、2年、3年と経過する内に最新のスマホOSでは動かなくなる場合があります。
推奨環境でOSを縛ったとしても、利用者は容赦無くスマホのOSをバージョンアップして使用するので(特にiOS)、
最新のOSで使用できないアプリは、レビューが炎上し、ブランド価値を毀損してしまうこともあります。
したがって、あらかじめ機器の製品寿命を考慮して、スマホアプリの保守コスト、保守できるエンジニアを確保する必要があります。
特に時計など、寿命の長い製品をアプリと連携するときは、気をつける必要があるかもしれません。
長期的に保守するなら、不要な機能は絶対に盛り込まない
ほとんど使用しない機能を積み込んだアプリは使いにくいだけなので、なるべくシンプルにすべきと考えています。
特に、長期的に運用する必要がある場合は、OSの仕様変更によって使用できなくなる機能などが発生する可能性があるので、長期にわたり安定して提供できるようにシンプルにすると良いと思います。
運用の過程で使えなくなる機能が出てくると、首が絞まって動けなくなるかもしれません。。。
仕様決定の段階で品質向上の方法をあらかじめ、用意しておく
アプリの品質向上、本当に必要とされている機能の調査のため、クラッシュログの取得やアクセス解析をアプリに入れておくことをお勧めします。
可能であれば、IoT機器の動作不良ログも収集できるようにしておくと、今後の開発に役立つかもしれません。
リリース前に可能な限り多くの環境でテスト
IoT機器はアプリと正常に連携しなければただのゴミです。
IoT機器の推奨環境では、最低でも正常系が全て完全に動くことを確認してからリリースを行うべきでしょう。
もし無理であれば、接続するスマホの環境をあらかじめ縛るべきです。
IoT機器のアップデート機能がある場合は、バージョン紐付けを行うとテストが楽かも
長期にわたり運用する機器の場合は、機器のファームウエアアップデートができるものがあります。
全てもファームウエアでアプリが動作することを保証するのは、現実的ではないので、アプリと機器のバージョンを特定のバージョンの組み合わせのみで動作するようにすれば、トラブルが減らせるかもしれません。
なるべく社内の人間で開発
IoT機器を接続するアプリを開発する場合は、ニッチな知識が必要な場合が多々あります。
開発を外に丸投げした場合、ニッチな知識を持ったエンジニアを確保しにくいので、品質の高い保守ができなくなる可能性が高いです。
高確率でベンダーロックイン的なものが発生します。
アプリをメンテナンスできるエンジニアを長期で確保する
連携するアプリの保守には、機器接続周り処理を理解しているエンジニアが必要です。
ニッチな知識が必要な場合が多いので、なるべく初期開発したメンバーを運用に残すべきでしょう。