Android版だけでなく、iOS版においても接触確認アプリのCOCOAには不具合があったそうですね。
発注(ユーザー)側が悪いのか受注(システム会社)側が悪いのかという議論にはあまり興味がなく、今回の件はどちらもテストを軽視したのが結局は問題だったというのが以下の記事を読むとわかります。
「報道などを受けて、実機を用いたテストをベンダーとともに実施した」(COCOAを担当する厚労省健康局結核感染症課)ことで、ようやく通知に関するバグに気がついた。
COCOA開発において、ベンダーは模擬的な環境でアプリの機能をテストしていた。ただ、1.1.4に限らず、それ以前からリリース時に実機を用いたテストをしないケースが多かったという。
私が勤務する会社でも、スマートフォン向けのサービスを開発しており、システム開発の際には、いくつかのバリエーション(OSのバージョン、ブラウザ、キャリアなど)で実機をレンタルしてテストを行うことにしています。
開発中の単体テストなどは、スマートフォンOSのエミュレーション環境で行いますが、結局実機で確認しないとエミュレーション環境では気づけないバグがあった場合に、受注側の責任となるケースがあるため、実機検証は必ずしています。
当然、実機検証をするにはコストがかかりますし、全ての機種でテストするわけにはいかないため、予算との兼ね合いでどのバリエーションでテストするかを顧客と合意して実機テストはしています。
スマートフォンを開発しているメーカーと企業向けのシステムを開発している会社にいる技術者はシステム開発をしない方からすれば、同じプログラム開発をするのだろうと思うかもしれませんが、扱っている技術が違うため、各々の扱っている技術の違いを実機検証なしに吸収するのは容易ではないのです。
そして、実機はメーカーやキャリアが異なれば、それらの仕様に引っ張られて想定外の動作をすることがあるため、できれば全ての機種で実機検証できるのが理想ですが、それでは費用がいくらあっても足りないので、ある程度動作環境を絞っての実機検証がやはり必要なのです。
スマートフォンやフューチャーフォン向けのシステム開発をする際には、品質を確保するにはどこの会社も実機検証をやりたがるはずなのですが、今回のケースでは実機検証が行われていなかったというのは非常に残念な話です。
実機検証をユーザーが求めていなかった場合には、システム会社は実機検証しないことにより発覚したバグは、ユーザー起因のバグであるということを契約前に合意しておく必要があります。
そうでなければ、システム会社はその説明責任を果たせていないことになる可能性があります。ユーザー企業はシステムのプロではないため、システム会社が説明しないとどのようなタスクが必要かわからないということらしいです。
正直理不尽な話ですが、ユーザー企業の無知はシステム会社が説明責任を果たせていないということになるのです。
ただ、システム会社が如何に実機検証の重要性を説いたところで、こういった実機検証などのテストの重要性は、やはりトラブルにあってみないと実感がわかないということが多いです。
そして、このテストにかかる費用が妥当かをユーザー企業が認識するのは難しいとも思います。
ユーザー企業からすれば、システム会社に委託費用を払って開発してもらったものの品質を担保するのはシステム会社の責任と考えるのは当然です。
しかし、システム開発にはバグがつきもののため、完全に品質の担保などできないことをユーザー企業には理解していただきたいです。
とりあえずシステム会社が提示する費用が妥当かどうかは複数のシステム会社の見積比較(相見積もり)ではなく、当該システムの品質に問題があった際の影響もそろそろ判断の軸に加えてみてはどうかと思います。
費用が過少なことには、それなりの理由もあるため、安かろう悪かろうにならないように明確に比較できる観点もユーザー企業には必要です。
COCOAの不具合問題が対岸の火事ではなく、ユーザー、ベンダーの双方の責任を明確にしてお互いが品質の意識をもたねば解決できない課題だということをシステムに携わる方全てに認識していただきたい事例ですね。