未経験から10週間でエンジニア転職!新年から受講するなら今相談

バグとは?エラーとの違い・言葉の由来・事例について紹介

更新: 2020.10.24

>>No.1エンジニア養成プログラム テックキャンプ

10年後も職を失わない人材になれる限定資料を見る

システム開発には「バグ」がつき物です。プログラミングを経験した人なら、一度は必ず聞いたことがあるでしょう。

しかし、「バグとエラーの違いは?」と聞かれると、正確に説明できない人も多いのではないでしょうか。

そこで今回は、IT業界で使われる用語「バグ」とはそもそも何なのか、その由来や事例を交えながら、エラーとの違いについても紹介します。

バグとは

まずは、コンピューター周りで使われる用語の「バグ」について、その意味や由来を見ていきましょう。

バグはプログラムの不具合を指す

「バグ」とは、その機能の不備を生むプログラム内の不具合を指す言葉です。また、不具合とは、プログラムが仕様書通りに動かないことです。

つまり、思った通りに動かないプログラムを見て「バグがある」と表現します。

プログラムは、システムの仕様書をもとに、仕様通りに動くようコーディングしていきます。しかし、人間が作るものですので、そこには大なり小なり必ず不具合が生じるのです。

バグの由来はコンピューターに入り込んだ虫

「バグ」は英語で「bug」と表記し、直訳すると「虫」。

では、なぜプログラムの不具合をバグと表現するようになったのでしょうか。

それは、コンピューターができた初期の頃までさかのぼります。

1940年に開発された「Harvard Mark Ⅱ」というコンピューターがありました。このコンピューターがある日故障したのですが、その原因がコンピューター内に入り込んだ「虫」でした。

この現象から、プログラムを含むコンピューターの不具合を「バグがある(いる)」と呼ぶようになったと言われています。

デバッグはバグの改善作業

プログラムの不具合を改修することを「デバッグ」といいます。思い通りに動かない部分を特定して、修正することです。

「デバッグ」という用語は、虫をコンピューターから取り除いたことで故障していたコンピューターが直った現象に由来します。

コンピューターの故障の原因である「虫(バグ: bug)」を「取り除く:de(デ:de)」という意味で、これらをつなげて「debug(デバッグ)」と呼ばれるようになりました。

バグとエラーなど似ている言葉の違い

バグに似た用語で「エラー」という言葉があります。

この2つの言葉は似ていますが、異なる意味を持っているのです。混同しがちなので、違いを把握しておきましょう。

ちなみに簡単に表現すると「エラーによってバグ(欠陥)が発生する」というイメージです。

じつはシステムや機器の不具合は、エラーとバグを含め4つに区別できます。

ただし、開発現場や企業の文化によって明確に分かれていない場合も。一般的な考え方として基礎知識として理解して、現場では言葉の認識を合わせるようにしましょう。

エラー:人間の判断の誤り

エラーは日本語で「誤り・間違い」という意味を持ちます。システム開発でのエラーは主に、「人間が犯す判断の誤り」のことです。

システムを設計する段階で考慮が漏れていたり、プログラムの動作の想定が誤っていたりすると、実際にプログラミングをしてもエラーとなります。

例えば、建物を人間が設計する段階で、モノを支えるための柱の大きさや高さを誤っていると、崩壊につながりますよね。

このように、人間の判断が誤っていたために起こる不具合をエラーと呼びます。

欠陥(バグ):システム内のコードなどの不備

機能の欠陥のことを「バグ」と表現します。

例えば、システム設計の段階でエラーがあると、実際にプログラミングしたコードに欠陥(バグ)が生じるのです。

人間が判断を誤った段階でエラーが発生しており、それをもとにコーディングしたシステムに欠陥(バグ)が発生します。

つまり、エラーが欠陥(バグ)を生むということです。

障害:実行結果と期待する結果が一致しない

エラーや欠陥(バグ)の他にも、区別される不具合があります。その1つが障害です。

障害とは、期待する動作や実行結果と一致しない不備の原因です。障害の原因はさまざまで、それはエラーやバグ、あるいは電力などによる誤動作かもしれません。

つまり、システムが正常に動かない「何らかの原因」を障害と呼びます。

故障:システムが使えない

故障は、システムが使えない状態を指します。つまり、システムが全く機能を発揮しないということです。

その原因は、機器の消耗やシステムの欠陥(バグ)などさまざまですが、「システムが使えない状態」に陥ったとき故障と判断されます。

オンラインで無料キャリア相談!無理な勧誘は一切いたしません

テックキャンプ エンジニア転職は、未経験からのエンジニア・WEBデザイナー転職を実現するスクールです。
テックキャンプはオンラインでプログラミング学習が可能。「徹底したサポート」と「やりきらせる学習環境」をオンラインでも提供しています。
転職成功率はコロナ前と同水準の98.7%を維持!
キャリアに悩んだらテックキャンプの無料オンラインカウンセリングでITキャリア相談を受けてみませんか?あなただけのキャリアプランが作れます。
オンラインカウンセリングのやり方は簡単なので、ぜひご利用ください。

バグの事例

ここからは、分かりやすいバグの事例について紹介します。

ゲームにおけるバグ

ゲームソフトにおいても、バグは存在します。それはパソコンゲームでも家庭用ゲーム機でも同じです。

特に、近年のゲームは3次元の空間を自由に動き回れるものも多いのですが、ゲームの自由度が高いほど、バグは多くなります。

例えば、キャラクターが動けなくなったり、本来移動できない壁をキャラクターが突き抜けてしまったりするなどといった事象は、すべてバグです。

スマートカーのバグ

スマートカーはコンピューター制御によって動きますので、そこで使われるソフトウェアやハードウェアにバグが潜んでいることもあるのです。

例えば、燃料ポンプ制御が動作せず突然エンジンが停止したり、意図せず警告灯が点灯したりといった事例もあります。

スマートカーのバグは、交通事故を起こす可能性があり、人命に直結する危険なものです。

パフォーマンスにおけるバグ

システムへのアクセス数が膨大になると、想定を超えた処理が必要となり、システム障害を起こしてしまいます。

アクセス数を想定できなかったというエラーはバグにつながり、大規模なシステム障害を起こす原因にもなるのです。

この場合、システムのパフォーマンスを想定できなかったというエラーが、大量のアクセスを処理できないというバグを引き起こします

セキュリティバグ

システムを構築する上で考慮しなければならないのがセキュリティです。

プログラム内では、インターネットを介したデータのやり取りを行いますので、通信機能部分のコードでセキュリティを意識したコーディングは欠かせません。

大手コンピューターメーカーのOSアップデートにて、SSL接続に関するコードにバグがあり、重要データの暗号化に問題がでました。

SSLで守られるはずの個人情報やクレジットカード番号などが、セキュリティ部分のバグで守られていなかったのです。

すぐにソフトウェアアップデートにより改修されましたが、セキュリティに関連するバグはユーザー個人に損害を与える可能性があります。

プログラムにバグはつきもの デバッグを効率的に行うには

大前提として、人間がプログラムを書きますので、最初からバグのないシステムはほとんど存在しません

どれだけチェックをしていても、実運用では必ずバグが発見されます。

ですので、そのようなバグによる不具合をできる限り早く解決するために、効率的なデバッグを行なうことが大切です。

IT業界未経験・知識0でもOK!テックキャンプがエンジニア転職の夢を叶えます

「エンジニアに興味があるけれど、未経験だから不安……」と、悩んでいませんか?
テックキャンプ エンジニア転職は未経験者専用の教育プログラムだから、IT業界未経験・知識0でも大丈夫!
テックキャンプの受講生は、90%以上が非IT業界出身&99%がプログラミング未経験者です。それでも転職成功率は98.7%!
その秘訣は、オフラインでもオンラインでもやりきれる徹底したサポート体制。
まずは何でも相談できる無料オンラインカウンセリングで、あなたの悩みを聞かせてください。
「未経験からのIT転職」その第一歩を踏み出しましょう!

無料カウンセリングの予約はこちら

この記事を書いた人

佐久森
テックライター 佐久森 福岡県出身の東京都在住。ITインフラエンジニア10年以上の経験から、IT技術全般を初心者向けに分かりやすく解説。また、ITエンジニアの働き方に関する情報などを執筆中。

あなたの理想のキャリアに合わせた、テックキャンプの3つのサービス

Advertisement