REGZA Phoneの不具合原因からいろいろ想像

ドコモ、「REGZA Phone T-01D」の通話・通信できない不具合の原因を発表 - ITmedia +D モバイル

バッテリー残量が5%以下に著しく低下した際、または初回電源投入時に通信できなくなる場合があるという。

あくまで想像であまり当たってる感じはしないけど、REGZA Phoneに限らず国産Android端末ならありそうなことを思い浮かべてみた。

初回電源投入時

端末初回起動時は、端末内の各アプリやモジュールが「初回起動時だけ」行う初期設定を走らせることが多い。

例えばアプリが自分で使うデータベースを初期化・生成したり、設定ファイルを作ったり初期データを作ったりなど。これらの各アプリ・モジュールの処理が初回起動時の起動直後に一気に走り出すので、端末は高負荷となり想定より初期化処理にかかる時間が長くなったりする。

そうすると、モノによっては異常と判断して初期化処理を中断してしまったり、ANR(Application Not Responding:応答なし)が発生して「強制終了」ボタンを押されたりして想定外のところで処理が中断されるケースが出てくる可能性がある。こうなると重要な初回起動時処理が正常に完了していない状態になるので、アプリやモジュールが異常動作したり、落ちたりするようになる。

リカバリ処理をきちんと実装していない物は、電源を入れ直しても中途半端な状態のままで起動してしまうので復旧することができない…。工場出荷時状態に戻すかショップ交換になったりする。

「初回起動時」しか動かないロジックにどこまで完璧なリカバリ処理を実装するか、となるとなかなか日の目を見ないところで、実装されなかったり、弱かったりする。

初回電源投入はショップ店員がやるから問題が出る(変なタイミングで電池抜かれるとか)ことは少ないだろうとか、一見データベースファイルなどが生成されているようにプログラム上から検知されるのだけど、データやファイルが壊れていて特定のアクセスをするとその時に落ちる、など「異常」のパターンが色々あってそれをチェックするのは意外と面倒だったりする。個人的にも、とても確率が低いながら設定ファイルが正常に作成・更新されないという市場不具合に当たったことがあり、調査したりなんだりやったな…。

初回電源投入は開発時でも良く行う(端末焼き換えして初回、は普通にやる)のでテストできないわけではなく、考えるとよほど確率の低いケースで不具合がでることはあると思うけど、このREGZA Phoneのように高確率で発生するとなると初期設定だけの問題では無いのかもしれない。

バッテリー残量が5%以下に低下した際

バッテリー残量が低下すると、動作を止めたり、起動しないようにする処理が入っているアプリやモジュールがある。「電池残量が少ないので充電してから起動してください」みたいに言われるアプリとか。プリインアプリには多いのではなかろうか。

これは突然の電池切れ(電源断)による予期しないタイミングでの終了を避けるためが多く、アプリによって5%だったり10%だったり20%だったりとリミット(閾値)が違ったりする。

「処理中の電池残量低下」でリミットを超えると、処理を止めて自分を終了したりするわけだけど、その時の終了のさせ方が悪かったりすると、上に書いた初回電源投入時のように中途半端な状態が残ったままになり二度と正常動作しなくなることがある。電源を入れなおしても現象が改善しない場合はだいたいこの「中途半端で終わってしまって次回起動時にリカバリできない」パターン。

そうでなければ、充電して電源を入れ直せば復帰するものも多いはず…。

あとは何もユーザーにメッセージを出さないまま、電池残量が少なくなったので起動を止めてしまう場合だと、ユーザーから見ると「よく分からないけど動かない、故障?」と思われる可能性はあるかも。

現場は

ともかく原因が分かって良かったね、というのと同時に、ドコモから相当きついクレームがメーカーに入ってるだろうことは想像に難くなく、中の人は眠れない日々だったんじゃないかと。販売停止レベルの不具合だと、ドコモにメーカー担当(偉い人も?)がずっと詰めててリアルタイムで状況報告上げないといけないとか、メーカーの現場(と下請け)もおそらく寝ずに調査と修正してるとかはありそう。

携帯開発やっていると、キャリアの人がバグを見つけるとメーカーに対してすぐに報告書と再発防止策、なぜテストで見つからなかったか、どんなテストをしたのか詳細に書いて提出しろ、みたいな話になりがちなので大きい不具合が起きた日には…。

個人的にもこういうケースは人ごとでは無かったりするので、気をつけないと。

タイトルとURLをコピーしました