エンジニアの敵、「バグ」ってそもそも何?

システム開発にはほぼ必ずついて回る「バグ」という問題。プログラミング経験者なら一度は耳にしたことのある言葉でしょう。しかし、バグとエラーや障害との違い、バグという名前の由来などについて正確に把握できている人は少ないかもしれません。ここでは、バグとはそもそも何であるのかを解説し、由来や対応例なども紹介します。

バグとはそもそも何か

pixta_37623116_M

「バグ」とは、コードの不備などが原因で発生する、プログラムが仕様書通りに動かないという不具合や欠陥のことを指します。「バグがある」という言い方をしますが、これはつまりプログラムが思った通りに動かないという状態なのです。プログラミングの際はシステムの仕様書に沿って仕様通りに動くようにコーディングしますが、設計やコードの誤りなどによって不具合が発生してしまうものです。
そして、プログラムのバグを修正することを「デバッグ」と言います。原因を特定し、正しいコードに修正することで、仕様通りに動くよう改善します。
「バグ」とよく似た言葉に「エラー」というものがありますが、これは人間が犯す判断の誤りという意味になります。システムの設計段階で考慮が漏れてしまっていたり、プログラムの動作の想定が誤ったりすると、仕様書通りにプログラムを組んでもエラーが発生します。
「障害」という言葉も聞いたことがあるかもしれません。これはシステムが正常に動かない何らかの原因のことを指し、その原因はエラーやバグ、電力やサーバーなどの誤動作にあるかもしれません。より重たい不具合として「故障」がありますが、これはシステムが使えない状態になります。

バグの由来

「バグ」は英語で「bug」と表記し、その意味は「虫」です。コンピューター黎明期である1940年、「Harvard Mark Ⅱ」というコンピューターが開発されました。このコンピューターがある日故障してしまい、その原因を探るとコンピューター内に入り込んだ「bug=虫」であることが判明しました。このことから、コンピューターやプログラムの不具合を「バグがある」と表現するようになったとされています。
なお、バグを修正する「デバッグ」という言葉は、取り除くという意味の「de」と虫の「bug」をつなげた用語です。虫をコンピューターから取り出して故障を修理したことから、このような表現が用いられるようになりました。

バグが起こることで発生する影響

プログラムにバグが発生すると、どのような影響を及ぼしてしまうのでしょうか。具体的な事例を元にご紹介します。

ゲームのバグ

ゲームのプログラムにバグがあると、キャラクターが動けなくなったり、本来移動できない障害物をキャラクターが突き抜けてしまったり、様々な事象が発生してしまいます。かつてのゲームはバグを利用した裏技も楽しまれていましたが、最近のゲームはバージョンアップで適宜バグが修正されるようになっています。

スマートカーのバグ

車間距離を自動で適切に保ったり、歩行者に急接近すると自動でブレーキがかかったりと、IT技術によって安全に運転するためのアシストがなされる車をスマートカーと言います。スマートカーの機能もプログラムで構成されているので、バグがあると燃料ポンプ制御が動作せずエンジンが停止してしまったり、意図せず警告灯が点灯してしまったりします。スマートカーに重大なバグがあると、人命に直結する交通事故を引き起こしてしまう可能性があるので、極めて慎重に開発しなければなりません。

パフォーマンスのバグ

システムに対して想定する以上の大量のアクセスがあると、システム障害を起こしてしまいます。システムのアクセス数というパフォーマンスを想定できなかったエラーが、アクセスを処理できないというバグにつながる事例です。

セキュリティのバグ

あるコンピューターのOSアップデートで、SSL接続に関するコードのバグがあり、個人情報やクレジットカード番号などの重要データの暗号化に失敗するという事例が発生しました。セキュリティ関係のバグはユーザー個人に大きな損害を与える可能性があるため、十分に注意しなければなりません。

バグ発生後の対応例

pixta_27250608_M
バグが発生した後の対応のルールは会社によって異なりますが、基本的な流れは同じであるケースが多いです。
まず、大きなバグを見つけたら一度冷静になり、勝手に修正してしまわず関係者に連絡します。その上でバグの内容や原因を調査し、修正すべきポイントを特定。対応方法を検討します。その内容を上司や責任者に報告し、承認を得られたらバグの修正対応を行います。重大なバグであれば報告書をまとめるケースもあり、その内容を元に関係者に顛末を報告します。その上で、リカバリープランや予防策を検討して今後のプログラム開発に活かします。
システム開発時に見つかったバグはその都度修正することが多いですが、リリース後に大きなバグが見つかってしまうと以上のような流れで対応することになります。システムを使用するユーザーや会社に大きな損失を与えてしまう可能性もあるため、バグには慎重に対応するようにしましょう。

まとめ

バグの意味や由来についてご紹介しました。プログラムは人間が開発するものなので、大なり小なりバグが発生するのは仕方がないことです。そのため、バグは小さいうちに見つけて対処し、重大なバグにつながらないように開発を進めることが重要になります。プログラムやシステムの開発でバグが発生したら、冷静に原因を突き止めて修正するようにしましょう。