概要
これまで問題なく稼働していたPADフローが、PADのバージョンアップ後に突然エラーを起こすようになりました。原因と対処法をまとめます。
似たような暗黙の待機に依存したフローを持っている方の参考になれば幸いです。
症状
対象のフローは、端末から特定のインプットPDFをDX Suite(クラウド型OCRツール)に読み込ませ、画面上に「アップロード中」の文字列が表示され、それが消えるのを確認してから次の操作(画像チェックボタンのクリック)に進む、という流れになっている。
PADをバージョン2.69にバージョンアップした後、この「アップロード中」の文字列が消えるのを待たずに次のボタン操作に進んでしまうようになり、後続処理がエラーになるようになった。
原因調査
最初はPAD側の不具合ではないかと思いサポートに問い合わせたが、返ってきたのは「UI要素を取り直してみてください」という汎用的な回答のみで、根本原因の特定には至らなかった。
その後、実際にフローが動作している画面をあらためて眺めていたところ、以前より動作が速くなっているように感じた。試しにフローを次のように修正してみたところ、問題が解消した。
- 修正前:「アップロード中」の文字列が消えるのを待つ
- 修正後:「アップロード中」の文字列が表示されるのを待ち、表示されたのを確認してから消えるのを待つ
原因(推測)
修正前のフローは文字列が消えるのを待つ処理しか入っておらず、文字列がそもそも表示されているかどうかは確認していなかった。
これまでは処理速度の関係で、PADがこの判定を行うタイミングには「アップロード中」の文字列がすでに画面に表示されている状態になっており、結果的に正しく待機できていた。
しかし今回のバージョンアップでPADの処理速度が上がったことで、判定のタイミングが早まり、文字列が画面に表示される前にPADが「文字列は存在しない(=消えている)」と判定してしまい、待機せずに次の操作に進んでしまうようになったと考えられる。
※PADのバージョンアップ(2.69)で処理速度が実際に向上したのかどうかについては、明確な記載はありませんでした。しかしながら、今回の問題はバージョンアップを境にどの環境でも必ず再現したため、内部的に性能が良くなったことが原因ではないかと推測しています。
対処
「文字列が表示されるのを待つ」アクションを追加し、表示を確認してから消えるのを待つという2段階の待機に修正することで解決した。
■修正前
「アップロード中」の文字列が消えるのを待つ
■修正後
「アップロード中」の文字列が表示されるのを待ち、表示されたのを確認してから消えるのを待つ
学んだこと
- 一見正常に動いているフローでも、待機処理が「消えるのを待つ」だけなど片方向にしか対応していない場合、タイミングの偶然で成立しているだけの可能性がある。
- PAD側のバージョンアップなど、自分たちの管理外の要因で処理速度が変化すると、これまで隠れていた待機処理の甘さが突然表面化することがある。
- 同様に状態変化の消失だけを待っているステップが他のフローにもないか、点検の余地があるかもしれない。
余談
このフローは私が保守担当になるずっと以前に作成されたもので、担当してから約1年、これまで本問題は起きていませんでした。人の目では明らかに待機処理を無視してフローが進行しているように見えたため、PAD側の不具合を最初に疑い根本原因の解決に時間を要してしまいました。
少し時間はかかりましたが、自分で気付いて解決できたことは保守業務としてとても良い経験になりました。