僕のスマホ、昨晩壊れました。
そして、先ほど直りました。
その間の顛末がIT業界に20年以上もいたというのにはじめてのことだったのでシェアします。
機種は、REGZA Phone T-01C。
ワンセグあり、おサイフありのガラパゴスなスマホで、しかも日常防水つき。
デビュー当時は結構鳴り物入りで、予約から購入までに1ヵ月半ぐらいかかったのを憶えている。
ところが歩留まりが悪かっただけなのか、製品仕様が悪いのか、些細な(機種交換を本気で考えるほどでない)トラブルが相次ぐ。
たとえば、出荷時のマイクロSDカードは、1ヵ月も経たないで壊れたし、バッテリーも半年持たなかった。
いきなり勝手にリブートするのなんていうのも珍しくない。アプリがハングしたり、Android OSがフリーズするのに至っては日常茶飯事。
GPSが使えたり使えなかったりなんていうのもよくあること。
さくさく使えるほうが珍しい。
「さすがは東芝。原発作っているメーカーは違うわ」と、開米さんに聞かれたら怒られそうな悪態を何度もついたおぼえがある(東芝の社員の前でやったこともある。さすがに名門企業の社員は太っ腹で笑っていた)。
まあ、問題児(あ。僕じゃなくてT-01Cね)だったわけです。
それでも、だましだまし使ってきたのだが、昨晩突然SDカードを認識しなくなった。
認識しないというのは正確ではない。
ブート時に認識しにいったあと、「SDカードを安全に取り外しました」というメッセージが出て、その後まったく認識されなくなる。こういう症状が発生。
SDカードが使えないスマホなんて、SDカードが使えないデジカメみたいなもの(例えが秀逸でないのは許してください)。
SDカード自体は生きていた。
PCでは認識されたので、とりあえずフルバックアップをした。データは失わずに済んだ。
さて、ということは、本体の問題ということになる。
ガラケー、捨てないで置いといてよかった。バッテリーが空になっていたので充電した。使えるようだ。これで少なくとも電話は可能だ。
ただ本体を修理に出すとなると、しばらくメールや、ブログの更新や、ダイエットの記録や、facebookでのやり取りなどなど、いろんなことが不便になる。
どんよりだ。
Docomoショップへ行くことにした。近所に2軒ある。
南行徳のDocomoショップは大きいのだが、その分人もたくさん来ていつも混んでいる。
行徳のDocomoショップは小さいのだが、その分人も来ないので空いている。
行徳にした。待たずに対応してもらえた。
対応してくれたお姉さんが、抜群の対応の良さだった。理想的なトラブルシューティングだった。
おかげで修理に出さずに直ったのだが、IT業界歴20年を超え、ネットワークやハードウェアに関しては詳しいはずの僕にもはじめての顛末だった。
お姉さんは、まずは僕の話をじっくり聞いてくれて、その後いろいろな提案をしてきた。
まずはSDカードスロットの点検。店にあるSDカードを僕のT-01Cに挿入させてくれていう。僕もたぶん同じことから始めただろう。
そうしたら、これがきちっと認識したのだった。
えっ、本体の問題じゃないの?
次に、僕のSDカードを店にあるT-03C(たぶん)に挿入させてくれという。うん。やるべきだ。
そうしたら、これもやっぱりきちっと認識したのだった。
うーん。一体何が悪いのだろう。
そこで、ちょっと聞いてみた。
「SDカードのデータの問題で、拒否されるということはありえるのでしょうか?」
調べてくれた。そういう例が過去あったとのこと。
そこで、バックアップした後の新しいデータもないので(当然だ)SDカードをフォーマットしてもらうことにした。
結果、認識されるようになった。
家に帰ってから、必要最小限のデータだけSDカードに戻して使っている。今のところ問題ないようだ。
これは、結局ソフトウェア的なトラブルだったということだろう。
ソフトウェアのトラブルはとにかく難しい。解決しても結局原因が分からなかったというようなことは過去たくさんあった。
僕が、IBMの汎用機でアセンブラのコードを書いていたときは、突き詰めれば原因は分かった。
たとえば、自作のマクロ命令の終了直後ABEND(異常終了)するというトラブルに見舞われたことがある。調べるためにトレース用の命令を入れてみた。するとABENDしなくなった。外すとまたABENDする。
夜中の二時、丑三つ時。僕は背筋が寒くなった。幽霊が悪さしているに違いない。ハイテク機器と幽霊は相性がいいとされている。
結局、一晩かかって理由がわかった。簡単なことだった。
我々が通常使っているノイマン型コンピュータは、命令コードもデータも区別せずメモリに格納されている(命令コードとデータを区別して格納するコンピュータもあった。バローズ(今はユニシスの一部)という会社が作っていた)。
だから、昔マイコンに4Kしかメモリのなかった頃は、自らの命令コードを書き換えるというプログラムをプログラマたちは平気で書いていた。ちょっと大きなプログラムになるとメモリに入りきらないからだ。
命令コードとデータがどこにあろうと構わないのだが、1つだけ厳格なルールがあった。命令コードはワードの境界をまたいではならないというものだった。
コンピュータにはビット、バイトの上にワードという単位がある。当時のコンピュータは1ワード=4バイトだった。ちなみに原則として32ビットのCPUなら1ワード=4バイト、64ビットのCPUなら1ワード=8バイトだ。
ただ、いまどきワードを気にする技術者はいない。いるとすれば、C言語の中にアセンブラを挿入するというようないまどきでないプログラムを書いている人ぐらいだ。
コンピュータはワードの単位で命令を読み込むので、命令がワードをまたがるとその命令は正しく認識されないということになる。
自作したマクロ命令は、データ部を含むものだったので、ワードの境界できちっと終わっていなかった。そのため、直後の命令が境界をまたいでしまいABENDしたというわけである。
正しいお作法としては、マクロ命令の最初と最後に無理やり境界合わせをする擬似命令を入れるのであった。僕はそれを怠っていた。
トレース用の命令もマクロとして作っていたのだが、そちらは先輩が作っていたので、きちっと境界合わせする擬似命令が入っていた。それでABENDしなくなっていたのである。
わけ分からないですよね。図解しました(クリックすると拡大図)。なんとなくご理解ください。
今は、ソフトウェア部品のブラックボックス化が進んでいる。ソフトウェア的なトラブルの根本原因が分からないことも多いのではないかと想像する。
とはいえ、同じSDカードが、 PCでは使えて、スマホでは使えないとなると、スマホを疑うのが普通の考え方だろう。
こんな分かりづらいトラブルは、僕ははじめてだ。
まあ、思ったより早く直ってよかった、よかった。
SDカードのトラブルは多いと思うのだが、ネットを調べてもロクな回答はなかった。同じようなトラブルで困っている人の参考になれば幸いです。
ところで、僕は、Androidスマホには、リセットボタンがほしい。熱望します。フリーズするたびにケースを開けてバッテリーを取り外すのは、それこそ故障の原因になりそうで怖い。
も一つ、今日はじめて知ったこと(普通は知っているのかもしれないが)。Docomoのスマホは購入後3年間は、浸水・破損以外の原因なら、無償で修理してくれるとのこと。保証書は要らない。お姉さんの対応もいいし、見直したぞ、Docomo。
この記事の関連記事がこれ↓だとは・・・
http://blogs.bizmakoto.jp/toppakoh/entry/1931.html
アルゴリズムがミテミタイ。
--
自社の考えをインタビューして文書化してほしい方は↓
カテゴリ
コメント(9)
コメントする
トラックバック(0)
これって初期のスマホにありがちで、N-04Cでも頻発してました。
Android2.2です。
Android2.3にアップしてからは発生していません。
で、当時の回避方法はPCのSDカードスロットに認識しなくなったカードを挿入し、マイコンピュータでそのカードのドライブレターが表示されたらそのアイコンを右クリックでコンテキストメニューからプロパティよりドライブのチェックと修復の実行でいつも直していました。
参考まで。
貴重な情報ありがとうございます。
> Android2.2です。
> Android2.3にアップしてからは発生していません。
T-01Cは、発売時に2.1でして、その後2.2のバージョンアップが出てから、2.3は出てないんですよ(T T)
> で、当時の回避方法はPCのSDカードスロットに認識しなくなったカードを挿入し、マイコンピュータでそのカードのドライブレターが表示されたらそのアイコンを右クリックでコンテキストメニューからプロパティよりドライブのチェックと修復の実行でいつも直していました。
なるほど。今度発生したら試してみます。
ありがとうございました。
私もT-01Cユーザです。
同くにフリーズに悩まされてます。
そして同じように毎回カバーはずし、バッテリーはずし。
同じようにリセットボタンを切望したこともありました。
でも実は、フリーズしたとき電源ボタン効いてないようにみえるのですが、長押ししてみるとリセットされるんですよね。
数秒じゃダメです。1分以上長押しするつもりで押し続けてみてください。
少なくとも私はそれで再起動してます。
まだの方はお試しあれ。
これまた貴重な情報ありがとうございます。
なるほど。でも、1分ですか・・・。ちょっと長いですね。
でも、今度試してみます。
さきほどフリーズしたので、試してみました。
フリーズの原因にもよるのかもしれませんが、20秒ちょっとでリブートを開始しました。
これなら、ケースをあけてバッテリーを出し入れするよりずっといいですね。
改めて御礼申し上げます。
誠ブロガーのヨシノシンジです。
今更ですが、これ私が独自取材を進めています。
(いや、ブログ書けよ。ってツッコミはごめんなさい。
管理人さん、編集長さん、すみません、、、one)
というわけで、森川 滋之さんのブログネタを続編として、リレー記事します。
そこで、問題。ブログのUPの仕方を未だに理解していないため、少々時間が掛かるのはお許しを。
ヨシノさん
ありがとうございます。
続編楽しみにしております。
本当に懐かしい。 ビット、バイト、ワード、 機械語、アッセンブラー、デバッガー、トレーサー
何億円もするコンピューター、つまりIBMが止まると機械語のトレース用のダンプリスト出力 それを懸命になって目で追って、バグ探し 時には空が白むことがありましたね
でも、携帯電話といえ、アップルのあたらしい地図といえ 複雑なためでしょうか テストが甘いような気がします。 多分、自動テストだから見落とすのかもしれません
森川さんと同年代かもしれませんね
ありがとうございました。
テスト甘いですね。でも、Androidについてはこれだけプラットフォームとバージョンがあったら、十分なテストをしていたら出荷が間に合わないでしょう。ちょっと異常 です。現場の開発者は寝る暇もないのでは?
そのあたり、Googleはもっと考えて、昔のMSのように保証できる範囲を明確にすべきのように思います(そのような動きもあったかもしれませんが)。
ただ一部のアプリで毎日バグフィックスが出るのですが、これはさすがに感心できません。企業向けの業務アプリでは1ヵ月に1回を超えると怒られるわけで、(たとえ無料とはいえ)これはユーザーをなめ過ぎているように思います。
僕も来年50歳になりますので、ITに関しては若い人からみたら100周ぐらい周回遅れのことしかかけません。そんな記事をクズよばわりする人もいて、それはそれで気概が あっていいと思います。ですが一方で、ぶりのカマ焼きのようにまだ食べられる部分はをきちっと食べてくれる人たちもいるので、それで満足しています。