- ベストアンサー
話題になってる携帯のバグって、どうしてそんなことが起きるの?
最近、携帯にある文字を打つと電源が切れるなどのバグが見つかり 話題になってますよね。 プログラマーがいたずらや遊び心で、ある文字列を入れると特殊な 動きをするなんてことをこっそりやっていたのであれば分かりますが、 携帯にとって文字を入力すことはごく当たり前のことなのにどうして そんなことが起きるのでしょうか? 一般人がWindows上で組むプログラムのバグとはまったく別の 出来事で、例えば、Windowsそのもののバグのようなことなのでしょうか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
元関係者です。 携帯電話のプログラム量、ものすごいです。そして、着信の処理(非常に優先どの高い割り込みですね)などもあり、そこに難しさがあります。Windowsでいえば、単にアプリケーションを作るのではなく、ドライバやOSの一部も作るような感じですね。日本語入力も作らなくてはなりませんし、キー入力や画面表示も含まれます。 そして、最近はCPUにも多少余裕が出てきましたが、それでもメモリなどを含めるとパソコンには遠く及ばない中で作らなくてはなりません。制約が大きいです。 システムが複雑なので、さまざまなテストはしていても、それでもバグが残ってしまう、というのが正直なところです。 携帯電話のプログラム規模、ちょっと前の銀行のシステムのプログラム並みなんですよ。
その他の回答 (6)
- a-saitoh
- ベストアンサー率30% (524/1722)
Windowsなどでは、アプリケーションにバグがあってもOS全体が落ちたりしないような仕組みがあります。携帯電話はコストやその他の面の制約で、そのような保護機能がなかったのでしょう。 そして、「あ」を打ったのに「い」が出るってのと、電源が切れるってのでは人間には後者の方が重大なバグでよほどのことがないと起こらない用に、素人には思えるでしょう。しかし携帯のプログラムの作りの上でいうと、電源が切れるのはバグの結果として陥りやすいのだとおもいます。パソコンだと特定の的確な操作をしない限り電源が切れないので、プログラムの異常動作の結果に電源が切れることよりは、ハングアップすることの方がありがちになりますが。
お礼
回答ありがとうございます。
- choconamacream
- ベストアンサー率44% (152/338)
以前、とあるメーカーにて、携帯電話の評価業務に従事していた者です。(いわゆる、「テスター」と呼ばれるものですね。)気付いたことをいくつかばかり…。 基本的に、携帯電話などにかかわらず、他のソフト開発のプロジェクト(OS、パッケージ、ゲーム、Webアプリ、基幹システム、などなど)でも同じだと思いますが、システムレベルのテストというのは、以下の手順で行われます。 (ちなみに、条件としてはここまでに、開発者さんたちによって単体テストや結合テストが全て終っていることです。) 手順1 設計者さんが作成したテスト手順書に従い、テスターさんがあらゆる観点からシステムが正常に動作しているかをチェックする。 手順2 不具合が発覚した場合は、バグとして担当の開発者さんに報告する。 手順3 報告された開発者さんは、該当するバグを取り除く。(いわゆる、デバッグ。) 手順4 新しいソフトのバージョンにて、テスターさんが修正の確認を行う。(ここで、直っていなければ、手順3に戻る。) 手順5 再度、手順1を実施し、どんな操作をしてでもシステムが正常に動作していることを確認する。(わざと、誤発注の操作をしてみたりとか…。) ここで重要なことは、テストが終了するのは手順4の所ではなくて、手順5の所だということです。もちろん、大規模システムになればなるほど、上記の手順1~手順4までを何度も繰り返すことになりますが、それでも最終的には手順5(=手順1)でテスト完了ということになります。その理由は、手順3のデバッグによりデグレード(→あるデバッグによって、以前までは正常に動いていた機能に、新たなバグが見付かること。)が発生することがあるからです。詳細については、以下のURLを参照してください。 それ以外にも、社風というか、メーカー系でいえば、各事業部(又は、各カンパニー)ごとの予算的なことも、起因しているでしょう。ちょうど、最近も各メーカーが第1四半期の財務情報をインターネットなどで公開していますが、実際には各事業部ごとに、売上高や税引き後当期純利益などで差が出ていますね。国際化の波もあり、やはり、お金を使える所では、開発期間が短縮化されたとしても新たに人を追加するなり、より柔軟な対応が可能となりますが、そうでない所では、残っている人達で、何とか残業や休日出勤などにより対応せざるおえなくなる。ただ、どんなに優秀なエンジニアだったとしても、1日は24時間しかないわけですし、疲れてくると、ミスをしてしまいがちですよね。 そういったもろもろも踏まえた上で、プロジェクトマネージャーと呼ばれる方もいろいろと工夫されているのでしょうけども、こういったネット上では公開できないような様々なふところ事情もあったりすることで、結果的に致命的なバグが内在したままで、納品といった形になるわけです。
お礼
回答ありがとうございます。
- MrBan
- ベストアンサー率53% (331/615)
プログラムのバグという意味では、Windows上のバグと本質的には同じです。 携帯電話用のプログラムは、先の方々も書かれているように、実はかなり膨大で、複雑で、難易度の高いものです。 使う人には簡単で当たり前と思えるくらいまで念入りに作ってはいますが、それでも昨今の開発ペース(新機種登場までの期間が短くなっている)や、機能の高度化などもあり、まれにそういうことが起きてしまったりもするのです。 # 安全に走って当たり前の自動車でもリコールはありますし、 # ワープロにとって文字を入力するのは当たり前ですが、 # OSメーカの有名オフィス製品でも不正処理は発生します。 # 銀行のATMが止まる、なんていうのも根っこは同じ。 ある程度以上の規模のシステムで100%完全なものを作るのは現実的にほぼ不可能です。(なので致命的な問題がおきないように努力してるわけです。
お礼
回答ありがとうございます。 >Windows上のバグと本質的には同じです。 こういうことですね。
- notnot
- ベストアンサー率47% (4900/10359)
携帯は一昔前のパソコンよりずっと高度で、電波を受信したり位置情報を定期的に発信したりしながら、キー入力の処理や表示を「同時」にしています。 特定の文字列は、メモリ上に特定のデータパターンとして記録されます。 例えば電波を受信するプログラムにバグがあって時々間違ったエリアのメモリを参照していたとします。で、通常は別に問題が無いのに特定のデータだけを別の意味に誤認識してある事象に対応した動作をしようとして、でも実際にはその事象ではないためプログラムが暴走することはありえます。 実際にはもっと複雑なバグなんでしょうけど。 >携帯にとって文字を入力すことはごく当たり前のことなのにどうして >そんなことが起きるのでしょうか? すべての文字の組み合わせの入力をテストすることは不可能です。 >一般人がWindows上で組むプログラムのバグとはまったく別の >出来事で、例えば、Windowsそのもののバグのようなことなのでしょうか? どちらもバグという意味では同じです。影響範囲が違うだけ。
お礼
回答ありがとうございます。
- tonton5656
- ベストアンサー率13% (23/173)
数行程度のプログラムならいいですが ある程度以上のソースになると バグがないプログラミングなんて不可能でしょう。 仕様というなのバグもあります。
お礼
回答ありがとうございます。
>携帯にとって文字を入力すことはごく当たり前 当たり前じゃないですよ。 携帯電話はウィンドウズパソコンと同じ「パソコン」です。 細かな機能の違いがあるだけで、基本構造は一緒なんです。 中に入っている日本語入力機能だって、プログラマーが一生懸命プログラムを組んだものです。 ウィンドウズというOSにしても、マイクロソフト社に毎日出勤している一般社員が、キーボードをぽちぽち叩いて作ったものなんですよ。 ま、想像つかないのも無理もない話ですがね(^_^;
お礼
回答ありがとうございます。
お礼
回答ありがとうございます。 やはりOSのバグのようなものなのですね。