【好奇心のオトモ:第1回】なんで不具合のことを「バグ」って言うの?
こんにちは、G’sスタッフ加納です。
AIがなんでもこなしてくれる時代になりました。でも、その根底にある「コンピュータ」の世界については、意外と知らないまま通り過ぎがち・・・
そこで、コンピュータの世界を、身近な「なんで?」からのぞいてみるコラムをスタートします!
あなた好奇心のオトモに、ぜひご覧ください。
【第1回】なんで不具合のことを「バグ」って言うの?
思った通りに動かない。エラーが出る。画面が真っ白になる。
「あー、バグってるわ~」と、みなさんも一度は聞いたことあるのではないでしょうか?
このプログラムの不具合のことを、「不具合」とか「誤作動」と呼ばずに、なぜ「バグ=虫」と呼ぶのでしょう?
コンピュータの歴史を紐解いてみると、興味深い話に繋がっていきます。
有名な「蛾」の話
「バグの語源」を調べると、ほぼ必ず出てくる逸話があります。
1947年、ハーバード大学。
当時のコンピュータは部屋いっぱいを占めるような巨大な機械で、「Mark II」と呼ばれていました。
今のような半導体チップではなく、リレーという電気仕掛けのスイッチが無数にカチカチ動いて計算する、そういう時代の機械です。
今のパソコンとは別物です。
「Harvard Mark I Computer」by Daderot, via Wikimedia Commons / CC BY-SA 3.0
ある日、この機械が誤作動を起こしました。
技術者たちが原因を探して中を開けていくと、リレーの接点に、一匹の蛾が挟まって死んでいた。
本物の虫が、文字通り機械を止めていたわけです。
技術者たちはその蛾をピンセットでつまみ出し、作業日誌にセロハンテープで貼り付けました。
そして横にこう書き添えたのです。
First actual case of bug being found. (虫が見つかった、最初の”実際の”ケース)
ここまでのお話を聞くと、「ああ、実際に虫がいたから、不具合をバグ(虫)と呼ぶようになったのね」と思われがちなのですが・・・
実は、「バグ」の語源は、この事件が発祥ではないのです。
「バグ」という言葉のほうが先にあった?
ポイントは、日誌に書かれた一語にあります。「First actual case」——最初の”実際の”ケース。
なぜわざわざ「実際の」と書いたのでしょう?
それは、書いた本人にとって「バグ」という言葉が、すでに当たり前に通じる言葉だったからです。
日頃から不具合のことを”バグ”と呼んでいるところに、バグの原因に「本物の虫(actual bug)」が出てきたことで、
「お、これが本当のバグだ!」という、エンジニアの内輪のジョークだったわけです。
つまり、実は順番が逆で、虫がいたからバグと呼ぶようになったのではなく、すでにバグという言葉があったということ。
ではその「バグ」という言葉自体はいつからあったのでしょうか。
さかのぼると、あのトーマス・エジソンにたどり着きます。
”蛾”の事件より約70年も前、1878年の手紙で、エジソンは発明がうまく動かない苦労をこう書いています。
「”Bugs”——そうした小さな不具合や困難は、こう呼ばれているのだ」
蛾が見つかるよりずっと前から、技術者たちは「うまくいかない小さな問題」を虫にたとえて呼んでいた。
なぜ虫なのかは諸説ありますが、機械の隙間に入り込んで調子を狂わせる、目に見えないところでこっそり邪魔をする、小さくて厄介なもの。
そのイメージが、いつのまにか、不具合全般を指す言葉になっていったのです。
ただただ「面白い話」だから現代に伝わった
実は、この蛾の話には、もうひとつ尾ひれがついています。
「グレース・ホッパーという女性技術者が発見して、バグという言葉を生んだ」——そう紹介されることがとても多い。
彼女はコンパイラの開発などで知られる、コンピュータ史の偉人です。
ところが、彼女自身が後年、「私は蛾を見つけてもいないし、あの日誌を書いてもいない」と何度も語っています。実際に作業していたのは別の技術者たちで、日誌の筆跡も彼女のものではないことがわかっています。
ではなぜ彼女の話になっているのか。彼女が、このエピソードを45年間、誰よりも面白く語り続けたからです。講演のたびに日誌の写真を持ち歩き、楽しそうに話した。だから、いつのまにか「ホッパーの蛾の話」になった。
正確さが大事なエンジニアリングの世界で、「正しい話」より「面白い話」のほうを語り継いできたというのもまた、面白い話ですよね。
「バグ」という言葉から垣間見える、ものづくりの姿勢
コードを書く側にとって、バグは「失敗」じゃありません。当たり前に出るもの。ベテランのエンジニアでも、書いたコードが一発で完璧に動くほうがめずらしいくらいです。
だから彼らがやっているのは「バグを出さないこと」じゃなくて、「出たバグを、どう見つけて、どう直すか」。この作業をデバッグ(debug=虫をとり除く)と呼びます。
——と、ここまでは少し前までの話。いまはAIがコードをかなり書いてくれるようになって、自分の手でバグを生んでしまうような場面は、正直かなり減りました。
では、バグはどこかに消えたのでしょうか?
・・・実はそんなことはありません。AIが書いたコードにも、コンテキスト不全やロジックの甘さからくるバグは紛れ込みます。
しかも、自分で書いていないぶん「どこが、なぜおかしいのか」がぱっと見えにくいのが、より「厄介な虫」になりました。
つまりAIがコードを書いてくれるようになったことで、むしろ”虫”が紛れ込んでいないか、見極める目(レビュー力)の重要性が増してきたと言えます。
「バグ」という何気ない一言の裏には、うまくいかないことに名前をつけて、にらめっこしながら直していく。
150年前のエジソンの時代から、そういうものづくりの姿勢が垣間見えます。
道具がどれだけ賢くなっても、最後に残るのは、この姿勢のほうなのかもしれませんね!
参考文献
Log Book With Computer Bug | National Museum of American History
https://americanhistory.si.edu/collections/object/nmah_334663
Moth in the machine: Debugging the origins of ‘bug’ | Computerworld
https://www.computerworld.com/article/1537941/moth-in-the-machine-debugging-the-origins-of-bug.html
The Bug in the Computer Bug Story | JSTOR Daily
https://daily.jstor.org/the-bug-in-the-computer-bug-story/
Harvard Mark II | Wikipedia
https://en.wikipedia.org/wiki/Harvard_Mark_II