kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

WindowsUpdateでICカードが認識しなくなる事象が直撃して、アプリ修正で苦労中

先週の木曜からWindows7のPCでICカードリーダーの調子が悪いという問い合わせが多くなって、WindowsUpdateの影響だと推測してましたがドンピシャだったみたいです。

更新プログラム適用後、IC カードリーダーが認識しなくなる事象について – Ask the Network & AD Support Team

普段WEBアプリケーションを開発していると、Windowsアプリや外部機器を使用したアプリの原因究明が本当に難しいです。

一応ある程度のところまで、調査して対策をしたアプリをリリース予定のところまでいけたので記録を書いています。

現象

まず現象についてですが、完全にICカードリーダーが認識しなくなるわけではありませんでした。

使用していると、ふとした瞬間にICカードリーダーの認識がなくなってもう反応しなくなりました。

ICカードリーダー自体はランプがついてたり、カードをかざしても反応があるような動作をしていて、ICカードリーダー自体が使えなくなっている状態じゃないことを把握。

Windowsアプリだったため、フォームを一旦終了して再度かざしても、アプリ側がICカードリーダーを認識しません。

アプリを再起動すると、なぜか使用できる状態です。(ICカードリーダーを外したりつけなおしたりしているわけではないです)

いくつかの問い合わせでWindows7の確率が高いことと、WindowsUpdateがあったことを聞き、原因っぽいが確実なことがいえず、調査をすることになりました。

調査内容

まずWindows10の環境で試してもいくら現象が発生しなかったことで若干あきらめる方向に意識を向けましたが、世の中はそこまで甘くないですね。

そこで、VMWindows7の環境があったので検証しました。

現象がおこるかどうかを試しましたが、どうやらそこまでWIndowsUpdateができてなかったのか現象再現しませんでした。 (あとで対象のアップデート項目をみて入っていなかったので、必要なアップデートまでできていなかったことを知りました)

もうICカードリーダーが悪いんじゃないか。と思ったが、複数の問い合わせがあることから機器が一斉に壊れることはないよなぁー。と除外しました。

あとはWindows7を対象外にするか、WindowsUpdateを今後とめてもらうか。

と思っていましたが、VMで再現しなかったので、確証がもてず強く言えない状態で解決方法を検討しました。

とにかく再起動すれば、復帰する!!というところを拠り所にアプリの改修に取り組むしかないと、方向を決めました。

アプリの再起動処理を追加して解決しそうな結果に

正直にこの処理をいれれば、解決するとは思っていませんでした。

ただ現象から復帰の可能性があるため、もう作って試すしかないと前向きにに決めたことはやってみようと。

結論を先に書いてますが、アプリの再起動で復帰するもんなんですね。。。

ものすごい違和感がありましたが、不具合の記事の中の対処に「アプリを再起動する」というのがあるので対処自体は正しかったと実感し、安心しています。

再起動の処理も少し工夫をして、初回のカードリーダー認識の際にはアプリの再起動までは行わないようにし、一度カードリーダーを認識したあとに、認識が数回ない場合に再起動する。という処理になりました。

(テスト中に無限ループになって、焦った・・・)

解決しそうでよかった。。。

クライアントアプリは難しいということを再度実感

Webを書いていると、サーバーで処理するため大体は同じ結果になるため、考えることが少ないんだと思いました。 (ブラウザとネットワークぐらいかな)

クライアントアプリ(WindowsアプリやAndroidアプリ)は利用者の環境がものすごく影響するし、原因を究明するための検証環境を借りることができない場合とかもあり、大変です。

今回みたいなWindowsUpdateが明確な原因だったのは個人的に初めてだったため、次回から考慮にいれるようにしようと勉強になりました。

WindowsUpdateでアップデートされた内容をアンインストールして対処できることも実感しました。

本当にプログラムといっても作るものによって全然必要な知識が違いますね。

このあたりを採用の人とか経営層が知っている企業はうらやましいですね。・・・最後が愚痴になってしまった。

まだまだ勉強が必要ですね。