テックキャンプ無料カウンセリング
資料請求はこちら

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

更新: 2021.02.26

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

プログラミングで人生を変えた最新事例

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

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

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

※この記事は現役エンジニアによって監修済みです。

バグとは

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

スキルゼロ・実務未経験でもITエンジニアになれる!

今年こそ、プログラミングをマスターしませんか?
テックキャンプはこれからのIT時代で自分の可能性を広げたい人を応援します。
  • プログラミングは難しくて挫折しそう
  • 独学でちゃんとスキルが身につくのか不安
  • 効率的にプログラミングスキルを習得する方法を知りたい
プログラミング学習やIT転職などでお悩みがある方は、ぜひ無料カウンセリングにお申し込みください。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

バグの事例

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

ゲームにおけるバグ

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

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

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

スマートカーのバグ

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

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

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

システム処理のパフォーマンスにおけるバグ

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

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

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

セキュリティバグ

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

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

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

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

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

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

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

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

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

↑目次へ戻る

【初心者向け】プログラミング学習法を徹底解説!

「プログラミングをやってみたいけど、何から始めればいいのか分からない……」

そんな方へ、テックキャンプのノウハウを詰め込んだプログラミング独学方法の資料を無料プレゼント中!

資料では「初心者のための学習ステップ」や「はじめての独学での注意点」など、プログラミング初学者が押さえておくべきポイントを紹介します。プログラミング学習に興味がある方は必見です。

限定資料を無料プレゼント中

この記事を書いた人

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

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

Advertisement