バグった!って言うけど、バグって何?
はじめに
アプリが変な動きをしたとき、「バグった!」と言ったことはありませんか。
プログラムの不具合を バグ(bug) と呼ぶのは、昔のコンピュータに虫が挟まって壊れたから——そんな話を、どこかで聞いたことがある方も多いと思います。
結論から言うと、その話は 半分正しくて、半分ちがいます。1947年に本物の蛾がコンピュータのリレーにはさまったのは 事実 ですが、「だからバグと言うようになった」わけではありません。もともと、アメリカの技術者が機械の小さな不具合を bug と呼んでいた 比喩 が、コンピュータの世界に持ち込まれた——というのが、より正確な説明です。
この記事では、動画台本と同じ流れで、次の順に整理します。
- 日常で言う「バグ」とは何か
- ITの世界でのバグの定義(何がバグで、何がバグではないか)
- なぜ「虫」なのか——比喩の正体
- 語源の有名話:1947年の蛾
- 語源の本編:エジソンと19世紀の工学用語
目次
- 一般の「バグ」——日常では広い
- ITにおけるバグの定義
- バグと呼ばれるもの・呼ばれないもの(一覧表)
- グレーゾーン——議論になりやすい例
- 虫の比喩——虫食いと「外部要因」の誤解
- 語源①:1947年、ハーバード Mark II の蛾
- 語源②:エジソンと、コンピュータ以前の bug
- まとめ
📹 動画版もあります
同じ内容を動画で解説した版も用意しています。文章より音声の方が好みという方は、そちらもご覧ください。
1. 一般の「バグ」——日常では広い
プログラミングをしていなくても、「ゲームにバグがある」「アプリがバグった」と言います。
ここでのバグは、だいたい 「なんかおかしい」「思ったとおりに動かない」 という意味です。画面が固まる、ボタンが効かない、変な数字が出る——原因がまだ分からなくても「バグかも」と言いがちです。エラーの赤い画面を見て「バグだ!」となることもあります。
つまり日常の「バグ」は かなり広い 使い方をしています。プログラムを扱う人が言うバグとは、少しずれがあることが多いです。次の章からが、その「プロ寄り」の話です。
2. ITにおけるバグの定義
大雑把な一言
ITの文脈で大雑把に一言でいうなら、バグは次のようなものです。
ソフトや設計を直さないと解消しない欠陥
たとえば、条件分岐の書き間違い、要件の読み違え、設定ファイルのタイプミス。こうした 作ったものの中に残った誤り が、バグです。プログラムのコードに限らず、設計書や仕様書の誤りも含まれます。
ミス → 欠陥(バグ)→ 障害
ソフトウェアテストの世界(ISTQB など)では、次の順番で整理することが多いです。
人的ミス(mistake / error)
↓ 仕様書・設計・コードなどに残る
欠陥(defect / fault / bug)
↓ 実行時に発火すると
障害(failure)——おかしな結果として見える
| 用語 | 意味 | バグとの関係 |
|---|---|---|
| ミス / エラー | 人が間違える(> を >= と書く等) | バグの 原因。バグそのものではない |
| 欠陥 / バグ | 要件を満たさない誤りが成果物に残ったもの | ISTQB では bug は defect の同義語 |
| 障害 | 実行時に見える誤動作(クラッシュ、誤った計算結果) | バグが顕在化した 結果。必ずしもバグが原因ではない |
大事なのは、「人がミスしたからバグではない」のではない という点です。むしろ ミスがバグ(欠陥)を生む のが主流の考え方です。
「バグ=外部から忍び込んだ虫が悪い」というイメージを持つ人もいますが、ソフトのバグの多くは 人が作った設計やコードの一部 です。虫が勝手に入ってきたわけではありません。
3. バグと呼ばれるもの・呼ばれないもの(一覧表)
ここが本記事の核です。厳密に近い目線 で、何がバグに含まれ、何が含まれないかを表にまとめました。
含まれる(広くバグと呼ばれる)
| 種類 | 例 | 人的ミスか |
|---|---|---|
| コーディングミス | 条件分岐の誤り、off-by-one、typo による構文エラー | ✅ ほぼ常に |
| 設計・仕様の欠陥 | 要件の読み違え、仕様の抜け、誤ったアルゴリズム設計 | ✅ |
| ハードウェア設計の欠陥 | Pentium FDIV バグ、回路設計ミス | ✅(設計者のミス) |
| 実虫・物理障害(歴史的) | Mark II の蛾、断線、部品不良 | ❌ 物理原因だが、当時も 既存の比喩語 bug で記録 |
| 潜在バグ | まだ発火していない欠陥(レア条件でだけ出る race condition) | 多くは ✅ |
| 設定・ドキュメントの誤り | 誤った環境変数、マニュアルの誤記 | ✅ |
潜在バグは、実行するまで表面化しない点に注意です。「動いているからバグはない」とは限りません。
含まれない、または別語を使う(文脈による)
| 種類 | 例 | なぜバグと言いにくいか |
|---|---|---|
| 設計範囲外の事象 | 自然災害によるサーバー停止、停電 | 設計対象外の不具合は bug ではない(工学一般の整理) |
| 純粋な環境・インフラ障害 | クラウド側の障害、回線断、メモリ不足(想定外の場合は別) | 障害(failure) だが、ソフトの 欠陥(defect) ではない |
| ユーザー操作ミス | 間違った入力(※ソフトが正しく弾くべきだった場合はソフト側バグ) | 操作ミス自体はバグではない |
| 劣化・経年変化 | ディスクの物理劣化、接触不良の進行 | ハードの故障として bug と呼ぶこともあるが、ソフト文脈では incident / outage と分けることも |
| 仕様どおりの動作 | 「仕様書にそう書いてある」意図した挙動 | 「It’s not a bug, it’s a feature」(バグではなく仕様、という冗談) |
日常会話で「全部バグ」と言ってしまいがちなのは、主に 下の表の「障害」側 と、上の表の「欠陥」側 を混同しているためです。回線が切れただけなら、それは多くの場合 環境の問題 であり、ソフトのバグとは別枠です。
4. グレーゾーン——議論になりやすい例
次のようなケースは、文脈によって「バグ」と言うかどうかが分かれます。
| 状況 | 見方 |
|---|---|
| ネットワークタイムアウト | 回線断そのものはバグではない。タイムアウト時に二重送信する などの実装はバグ |
| ハード劣化 | 部品寿命は自然だが、劣化を検知・冗長化していない設計 は欠陥とみなせる |
| 通信失敗 | プロトコル実装の誤りならバグ。相手側のダウンは環境要因 |
| セキュリティ脆弱性 | 業界では vulnerability と分けることも。バグの一種 とみなすことも多い |
「直さないと解消しない欠陥」という一言定義は、初学者向けの説明として だいたい7割程度は当たります が、上のような境界でずれます。だからこそ、表で一度整理しておくと便利です。
5. 虫の比喩——虫食いと「外部要因」の誤解
英語の bug は直訳すると「虫」です。日本語にも 虫食い という表現があり、本や紙の一部が欠けた状態を指します。
英語の bug も日本語の虫食いも、共通するイメージがあります。
ぱっと見は正常なのに、中に小さな欠けや不具合が紛れ込んでいる。
19世紀のアメリカの技術者は、機械の中に 見えない虫が潜んでいる から動かない、と考えて bug と呼んだ、という説明が史料上もなされています。1889年の新聞記事では、エジソンがフォノグラフの「バグ」を見つけるために徹夜したとあり、imaginary insect(想像上の虫) が中に潜んでいる、という比喩だと説明されています。
だから「バグ」という語を聞くと、外から何かが入ってきた問題 に聞こえるかもしれません。しかしソフトのバグの多くは、前述のとおり 人が作った欠陥 です。虫の比喩は、原因を外部にやりすごすためではなく、小さくて見つけにくい不具合 を短く表すための、技術者の言い方に近いと考えられます。
6. 語源①:1947年、ハーバード Mark II の蛾
バグに関して いちばん有名なエピソード を、ここで詳しく見ます。
何が起きたか
| 項目 | 内容 |
|---|---|
| 日時 | 1947年9月9日(午後) |
| 場所 | マサチューセッツ州ケンブリッジ、ハーバード大学の Harvard Mark II |
| 状況 | 算術ユニットのテスト中に機械が停止。リレーの接点に 蛾(moth) が挟まっていた |
| 記録 | 蛾を取り除き、ログブックに貼り付けて 「First actual case of bug being found」(バグが見つかった初の実例)と記した |
| 現物 | ログブックはスミソニアン博物館(アメリカ国立歴史博物館)に所蔵 |
直訳どおりの虫が不具合の原因だった、という 実話 です。グレース・ホッパーがチームの一員として関与し、後に講演でこのログの写真を見せたことから、「ホッパーがバグという語を生み出した」という俗説も広まりました。
よくある誤解
| 誤解 | 正しい情報 |
|---|---|
| Mark I で起きた | Mark II で発生 |
| 1945年の夏 | ログの日付は 1947年9月9日 |
| この事件で「バグ」が生まれた | 数年前から 計算機分野で bug / debug は使われていた |
| 「初の実例」=語の起源 | 比喩的な bug に対する、文字どおりの虫の実例 という言葉遊び |
1944年4月17日の Mark I ログには、すでに「Mr. Durfee from I.B.M. was here to help us find ‘bugs’」という記述があります。ホッパー自身も、蛾の事件より前の文書で debugging note や tape bugs pursued and captured という表現を使っています。
つまりログの 「first actual case」 は、「やっと 本物の虫のバグ が見つかった!」という、すでにあった言葉の 最高のダジャレ に近い位置づけです。語源の誕生エピソードとして語られることが多いですが、正体はそういうものです。
7. 語源②:エジソンと、コンピュータ以前の bug
蛾の話より ずっと前 から、bug という語は使われていました。
事件より前の証拠(抜粋)
- 1875年 — 電信雑誌 The Operator:四重電信の不具合を「バグ」と呼ぶ記述
- 1878年11月 — エジソンの手紙:「『バグ』と呼ばれるような小さな欠陥や困難が現れる」(電灯開発の文脈)
- 1889年3月1日 — イギリス紙 Pall Mall Gazette:エジソンがフォノグラフの「バグ」を見つけるため徹夜した、との報道
- 1945年 — OED 補遺が debugging を収録(王立航空学会誌の引用)
語源の流れ(簡略)
19世紀:米国の電信技術者・発明家が機械の不具合を "bug" と呼ぶ
↓
1870年代:エジソンが広く使い、一般にも知られる
↓
1940年代:IBM技術者がハーバードの Mark I チームに用語を伝える
↓
1944〜:計算機のハード・ソフト両方の欠陥を "bug" / "debug" と呼ぶ
↓
1947年9月:Mark II で「文字どおりのバグ(蛾)」を発見 → ログに記録
↓
1950年代:コンピュータ文書・一般メディアに普及
エジソンがこの言葉を 作った というより、当時の 工学の隠語 を使っていた、というのが今の通説です。IT用語としてのバグは、いきなりコンピュータから生まれたわけではなく、19世紀の電気・機械の世界から持ち込まれた言葉です。
8. まとめ
いまの「バグ」とは
- 日常では「おかしい・動かない」全般
- ITでは ソフトや設計を直さないと解消しない欠陥
- ミス → 欠陥(バグ)→ 障害 の順で考えると整理しやすい
- 回線断だけ、仕様どおりの動作は、必ずしもバグではない(§3 の表を参照)
虫の比喩
- 小さくて見つけにくい不具合 のイメージ
- 日本の 虫食い にも近い
- 外から虫が入った のではなく、多くは人が作った欠陥
語源
- 1870年代からエジソンらの時代に工学用語として存在
- 1947年の蛾 は実話だが、語の起源ではない
- 「初の実例」 は、比喩を文字どおりにした有名な記録
プログラミングを学ぶ方へ
これから「バグ」という言葉を使う機会は増えます。怖い虫の話ではなく、直すべき欠陥があるサイン と捉えるとよいでしょう。デバッグ は、その原因を探して取り除く作業です。
参考・関連
- 調査ログ:
40_企画/45_実施ログ/調査ログ/コンピュータのバグの由来.md - 動画台本:
40_企画/46_成果物/台本/コンピュータのバグの由来.md - Computer History Museum — Sep 9, 1947
- Smithsonian — Log Book with Computer Bug
- ISTQB Glossary(bug は defect の同義語)

