バグとグリッチの違い – IT業界の豆知識

バグとグリッチの違い IT技術

近年、インターネット上で遊ぶことが出来るオンラインゲームなどが多くリリースされており、世界中の様々な人が利用して楽しんでいます。そんなオンラインゲームにも、想定していない不具合が発生することもあり、中にはそういった不具合を不正に利用することでゲームを有利に使うような悪質なプレイヤーもいるようです。

そういったソフトウェアの不具合を利用することを「グリッチを利用する」と表現することがあるようですが、IT業界人からするとこの言葉にはとても違和感があります。今回は一般的なソフトウェアの不具合としてのバグと、近年使われるようになっているグリッチとの違いについてお話してみます。

バグとグリッチの違い

ソフトウェアを作る過程には、ほとんどの場合仕様書のような「動作を規定するドキュメント」があります。基本的には、そのドキュメントに沿って制作が進行し、正しく仕様書どおりに作られていることを確認してから、一般に公開されるのが通常の流れです。

しかし、こういった工程の中で発見・修正しきれなかった問題は、ソフトウェアに潜在的に残ってしまいます。ソフトウェアリリース後に、一般の利用者や開発チームによって発見されたこういった問題は、従来は修正が困難でしたが、現在はインターネットの普及などで比較的容易に修正バージョンを配布するといった対応が可能となりました。こういった不具合の修正のことをバグフィックス(Bug Fix)と呼び、不具合自体の事はバグ(Bug)と呼びます。インターネット上の修正内容を記したパッチノートなどで、こういった言葉を目にする機会も多いのではないでしょうか。

バグとは

バグ(Bug)とは虫の事で、言葉の意味的にはソフトウェアに巣くう虫といったところで、IT業界では一般的な「ソフトウェア上の不具合」の事を指します。通常IT業界内では、ソフトウェアの不具合の事は、単に不具合や障害といった言葉で表現する以外に、バグという言葉も使われます。バグという単語は、制作サイドの表現で、主に開発スタッフ内での会話で使われ、営業などの他部署や取引先の企業との間で使う単語としては若干不適切で稚拙なため、公的な場などでは不具合・障害といった表現が用いられます。

グリッチとは

グリッチ(Glitch)という言葉は、ソフトウェアを制作している一般的なIT企業であれば、まず使われることがないでしょう。この単語は、バグと同じく不具合のことを意味する言葉ではありますが、一般的には「ハードウェアの不具合」のことを指す場合に使う言葉です。「機械の欠陥」といったニュアンスを感じる人も多いでしょう。IT業界に入って不具合の事をグリッチと表現すると、相手によっては恥をかくことになるかもしれません。

ただ、言葉というのは生き物のように変化していくものでもあります。現にIT業界外の一般の人たちの間では、ソフトウェアの不具合の事もグリッチと表現されはじめていて、それが定着しつつあるようにも思います。今後は、バグもグリッチも同じような意味になっていくのかもしれません。

今現在は、IT業界でソフトウェア制作に携わっているような人たちが、ソフトウェアの不具合の事をグリッチと呼ぶ人のことを見ると、知ったかぶりをする子供のように痛々しく見えてしまうかもしれませんので、相手によっては注意して発言した方が良いでしょう。

IT業界と一般の「バグ」の違い

IT業界内でのバグと、一般の人が使うバグという言葉には、若干認識に違いがあるように感じます。

パソコンを使う女性

一般の人がバグという言葉を使う場合、意味合いとしては「想定外の動きをする」といった、ソフトウェアの挙動に関しての不具合の事を指す場合が多いでしょう。ゲームなどで、通常侵入できない場所にキャラクターが入ってしまったり、アイテムが複製できてしまうといった動きは、バグの典型的な例でとして知られています。

IT業界内では、もちろん一般的な「想定外の動作」についてもバグと表現しますが、もう少し広い意味合いで使われます。

仕様バグ

IT業界外でも聞いたことがある人もいるかもしれませんが、「仕様バグ」という言葉があります。これは、仕様策定の段階で既に問題があった場合に使われる言葉です。一般的には、そもそもバグとして認識されないことも多く、この問題に直面した利用者は「著しく不便」とか「ありえない」といった感想を抱くことになるでしょう。例えば、登録したデータを修正できない仕様であったり、データが大量に登録されるにもかかわらず検索も並び替えもないようなシステムの場合、仕様通り正しく実装されて動作していたとしても、仕様バグとして品質管理上は不適切な状態にあると判断されます。

こういった問題を回避するため、IT業界内ではSpec Reviewという仕様確認の工程が設けられることも多いです。これはSpecification(仕様)をReview(批評・精査)するための工程で、主に経験豊富な上流工程の開発スタッフやグループのリーダーなどが参加して、ソフトウェアの仕様が正しい状態にある事を確認します。

速度が遅いなどもバグ扱い

また、ソフトウェアの動作速度が遅いといった場合も、IT業界内ではバグとして扱われることも多いです。ソフトウェアの仕様書などに、処理にかけてよい時間は何秒といったような速度要件が記載されている場合もありますが、そうでない場合でも一般的な利用者の感覚で不適切と判断されるような状況の場合は、品質管理部門からバグとされてしまうこともあるでしょう。どこまで遅かったらという程度の問題になるため、企業やプロジェクトなどによって扱いが異なりますが、間違いなくソフトウェアの不具合でありバグの一種です。速度問題に対しては、大量データテストや負荷テストのような工程や手法で、リリース前に問題を洗って修正するという作業が行われます。

仕様書に記載されていることが絶対ではありますが、仕様書に記載がなくても「当たり前」ということは往々にしてあるものです。利用者は仕様書をみてから使うのではないのです。普通に使って「おかしい」と感じることも、ときには重要になるという事です。

デバッグとテストの違い

バグとグリッチの勘違いと同じように、デバッグとテストについても混同して語られる場合があるようなので、ここで合わせて紹介しておきます。

仕事風景

ソフトウェアの不具合を発見する作業として、一般の人が「デバッグ」という表現を使うことがありますが、これは正確には正しくありません。

テストとは

ソフトウェアの不具合を発見するまでの工程は「テスト」と呼びます。学生の間にも聞くことがある単語のため、幼稚に感じるかもしれませんが、IT業界内では重要な工程の名称です。ソフトウェアが仕様書通り正しく動作をするかを確認するために、IT業界内では様々なテストが実施されています。

代表的なものでは、ソフトウェアのパーツやモジュールなど小さなところに着目して実施する単体テストや、それらをつなぎ合わせた状態で正しく動作することを確認する結合テストなどがあり、テストの実施範囲や内容によって名称も変わってきます。情報処理技術者試験などでもブラックボックステストの定義などが出題されることもあるほど、テストの名前や実施内容については、IT技術者にとって重要な事です。

デバッグとは

デバッグというのは、テストで発見された不具合を調査して、原因を突き止める工程や作業の事です。

実際のプログラムを実行しながら、どういったプログラムコードが実行された時に問題が起きているのかを確認し、その上で何故その挙動をしてしまう状態になっているのかという根本原因を突き止めます。原因と不具合が同じ画面や近い場所にある事もあれば、数年前に登録された一つのデータが特定のユーザーの特定の画面でのみ異常を引き起こすといったレアな不具合を発生させるといったこともあります。デバッグ作業は暗闇を松明を掲げて洞窟を探検する様な作業でもあり、人によってはプログラムに「潜る」という表現を使う場合もあります。

一般にリリースされているソフトウェアに対して、様々な操作を行って不具合を出そうとする行為を「デバッグ」と表現する場合があるようですが、この行為は間違いなく「テスト」ですので、特にIT業界内では間違えないように注意しましょう。

デバッグ作業は新人も活躍

デバッグ作業は問題の発生する箇所と原因を探す旅をする大変な作業で、時間もかかりますが、ソフトウェア制作の中では欠かすことが出来ないとても重要な作業です。こんな重要な作業ではありますが、意外なことにIT業界ではデバッグ作業を新入社員などの新人に任せるということもよくあります。

デバッグ作業は重要な作業ではありますが、最終成果物のプログラムに変更が入らないという大きな特徴があります。プログラムを制作することができなくても、プログラムを追いながら異常な部分を特定する事さえできれば、実施することが可能です。また、先輩や前の担当者が制作したプログラムを読み進めることで、デバッグ作業と並行してソフトウェアの内部の構造を理解することができます。こういった作業の特徴から、教育を兼ねて、新人はまずデバッグ作業から現場の仕事を与えられるということが往々にしてあります。

新人をデバッグ作業に割り当てるということは、新人にとっては入社直後に責任の重いコーディングの仕事を与えられず、なおかつプログラムを読んで理解する時間を与えられ、ソフトウェア全体としては品質向上のためのデバッグ作業を消化できるという、良いことだらけの配置とも言えるでしょう。

これからIT企業への就職を考えている人は、就職前に自分のプログラムなどでデバッグ作業を経験しておくと、就職後に経験が役立つことになるでしょう。本サイトでは、IT企業への就職を目指している人を応援する記事もありますので、興味のある方はそちらも是非ご覧ください。

正しい言葉を知っておこう

言葉は変化するもので、流行もあるため、他の人が使っていると自分も使ってみたいと思うこともあるでしょう。皆が一緒に間違って使っていけば、それはそのうち正しいということになる場合もあります。特に日本語には、外来語をカタカタ語として音を基準にして取り込む流れがあるため、従来の意味合いとは違う意味で使われるようになるということが起こりやすい環境でもあります。

今回取り上げたバグとグリッチ、テストとデバッグという単語は、それぞれ前者の「良く知られた単語」の方が意味としては正しいのですが、グリッチとかデバッグのような少し専門的に感じる単語の方が「使ってみたい」と思わせる力が強いのでしょうか、間違った意味が広がっていく傾向があるように思います。

言葉としては流行に合わせて自由に使っていけば良いかと思いますが、元来の「正しい意味」を知った上で使っていきたいものです。個人的には、知らずに誤った使い方をしていると、それはとても恥ずかしい事だと思うのです。

ただ、誤った使い方をしている人に対して指摘するかどうかは、相手との関係性や言葉の意味の変化など様々な事に留意しながら、慎重に考えた方がよいでしょう。IT業界で自分の部下が間違った使い方をしていたら、怒るのではなく是非訂正してあげてください。

似た様な事例で、専門用語を使いたがる人材はIT業界内で嫌われやすい傾向にある事を記事にまとめています。言葉は「自己主張するツール」ではなく、「意思疎通のためのツール」であるべきでしょう。興味のある方は是非以下の記事もご覧ください。

コメント