登録日:2010/05/12(水) 11:26:41
更新日:2023/08/17 Thu 20:05:55NEW!
所要時間:約 7 分で読めます
▽タグ一覧
プログラム バグ ミス 虫 便利な言葉 ゲーム用語 ゲーム アプリ 仕様です バグゲー クソゲー 設計ミス フリーズ bug glitch 仕様です(キリッ 多少のバグは仕方がない バグ技 ≠チート プログラミング アップデートで修正される事もある デバッグ ソフトウェア ≠仕様 グリッチ フハハハハ…怖かろう! アニヲタit教室 不具合 設定ミス バグる
パソコンやゲーム機等の電子機器におけるプログラムミスの総称。
転じて、誤植や設定ミスなどもバグに含める場合がある。
『機動戦士ガンダムF91』に登場する機動兵器をお求めの方はこちらへ、石川賢作品に登場する美少女または兵器をお求めの方はこちらへ。
概要
語源は英語の「虫」(ナンキンムシ)に由来し、その昔機械の熱や光に引き寄せられた虫の死骸が原因で何らかの誤作動を起こした事からこう呼ばれる。
もともとはそのように虫が侵入するような人為的ではない不可抗力的な弊害を指す言葉であったが、
後に人為的ミスをバグに責任転嫁する風潮が高まり、現在の意味になったとされる。
またバグを取り除く作業の事を「虫取り」という意味で「デバッグ」とも呼ぶ。
英語では「bug」と「glitch」を使い分けたりもするが、実際は曖昧のようだ。
検索の際は日本でいう「バグ」は後者の方を使うとよくヒットする。
バグの症状としては、画面の表示がおかしくなる、音声が再生されないなどの軽微な物から
フリーズ、強制終了、データの消失など致命的な物まで様々。
また、バグには二種類ある。いわば、『見えるバグ』と『見えないバグ』である。
前者は言うまでもなく、エラーメッセージですぐわかるバグ。後者は文法などには引っかからないが、プログラムのロジックの間違いにより、エラーが出ることなく動くが、間違った結果が発生するもの。
ゲームなどのバグは、大方のはこれだろう。
そして開発者は、この『見えないバグ』と苦しい戦いを繰り広げるのである。
一般的に販売された何らかのソフトでバグが見つかった場合、開発元はそれを修正するプログラム(パッチ)を配布するのが普通だが、
ネット接続が不可能な時代のゲームソフトの場合はそれが困難なのでそのまま放置される事も多かった。
しかしセーブデータの破損やゲーム進行不可等のあまりに重大なバグの場合は修正版と交換してくれる場合もある。
納期の問題から、バグを放置したまま出してパッチで直すというソフトもある。
が、パッチが中々でない、パッチがないとまともに動作しないといったソフトは物議を醸す。
だが中にはどれだけ重大で商品価値を著しく損なうバグがあろうとも、「仕様です(キリッ)」の一点張りでまるで対応してくれない企業もいたりする。
とはいえ、プログラムからすべてのバグを探し出し、そして修正する事は人員・予算的にも困難である。
中にはどう足掻いてもプログラムの構造的にバグが出る・消えない事だってある。
その為、余程悪影響が出るバグでもない限りは、放置される事も珍しくない。
あまりにバグが酷いゲームは「バグゲー」とも呼ばれ、そのままクソゲーと化す場合も多い。
またバグは基本的に攻略本やゲーム雑誌ではあまり公開されないので、プレイヤー同士の情報交換がバグ回避の最良の手段となる。
バグを減らするためのオススメは?
- システムログを見る
- 先に数行程度のコードを書いて動作の確認をする
- try catch文のような例外処理を入れる
- デバッグフラグをつけて、trueの時に各種必要な変数の表示をさせる
- フローチャートなり仕様書なりを図表を交えてちゃんと書く
- オライリー Huckシリーズを熟読する
- if文乱用を避け、else文、else if文、switch文でコードをスッキリさせる
- 定数は大文字で定義、クラスはsetAniotaWikiのように2個目以降の単語の頭文字を大文字にするなど記述のルールを決める
- goto文の乱用でスパゲティにしない
- 関数を小型化・単機能化する
- 関数名、変数名は面倒でもわかりやすいようにつける
- 再帰的な記述はなるべく避け、処理ごとの階層を合わせる
- 使っている/使おうとしているAPIがどういう原理で動いているのか知っておく
- 使っている/使おうとしているAPIの対応/非対応バージョンを確認しておく
- コメントは面倒でも「どういう意図でその記述をしたのか」しっかり分かりやすくつける
- テストケースに漏れがないよう、条件と期待値のマトリクスをしっかり作成する
- 工程を最後まで進める前に、進捗ごとに複数人でのレビューを行う
- プロジェクトチームへの報連相を欠かさない
- 現在と過去のソースの差分がわかりやすいよう、Gitなどでバージョンを管理しておく
- 非同期処理は特に念入りに動作の順番を確認しておく
- 動作が重複するとまずい機能はブロッキング処理を入れる
プログラマーの心構えとして
プログラムは書けば書くほど、複雑になればなるほどバグが増えやすくなるので、
普段から簡単で分かりやすいプログラムを書くよう心構けると、自然にバグの数は減っていくだろう。
その為にも、プログラムが何処で、何をしているかをしっかり把握出来る様にするのがベスト。
自分が書いたコードの意図を他人に説明できることは最低条件である。
そうすることで懸念点の指摘を貰いやすくなり、修正もよりスムーズになる。
もちろん、デバッグにきちんと時間と労力をかけるのを忘れないように。
特に商品として世に出すのなら、デバッグにかける時間を十分に確保するようにしたい。
何故なら、デバッグにかけた労力はそのまま製品の完成度に直結する。
動けばいいやなんて根性でデバッグを軽視したら後で痛い目見ること間違いなし。
その為にも、製作期間はゆとりを持って確保したいところである。
また、将来プログラムをさらに改造していくのは自分だけとは限らない。むしろ他人から引き継いだプログラムを弄る作業もかなり多い。
こういう時に誰も読み方がわからないようなコードだと「ブラックボックス化」し、そのプログラムは再利用できなくなってしまう。訳のわからないプログラムを弄ったところで余計に何が何だかわからなくなるだけだ。
仕様書や可読性の高い記述が重要視されるのは、そういった面もあることを忘れてはならない。
開発速度も勿論大事だが、それで保守性を疎かにすると後々取り返しの付かないことに……なんてことも。
プレイヤーによるバグの利用
中にはそのバグを逆手に取り有効利用する技もあり、通称「バグ技」と呼ばれ、裏技の一種として扱われる事もある。
バグ技を使えばアイテムやお金を手軽に増殖したり普段行けない場所に行けたりしてしまうが、
作品によっては使いすぎるとデータを破損したり元の場所に戻れなくなったりする諸刃の剣。
バグ技の使用は自己責任で。
一部のRTAではバグを利用した壁抜けやフラグ無視などが必須テクニックとなっている場合がある。
たとえ何の弊害が無くとも、もともとバグ技はグレーゾーンな行為のためその使用を快く思わない人も多いので、
あまり使用した事を公開するのも良くない。
また、オンラインゲームであればバグを利用したDUPE行為などは、プレイヤーの格差(=ゲームの存続)に影響しかねない為、規約違反である場合がほとんど。
過去の例としてMHF-Gでは、シジルというアイテムの無限生産バグが見つかった際、
それを利用して無限生産を行った者・行おうとした者含めて全員アカウント永久停止(垢BAN)という処分が行われた。
ただ、ゲームソフトは他のソフトウェアと異なり「感性に訴えるもの」であるため、「このバグがあると面白くなる」と判断された場合は積極的に放置され、続編や派生作品で仕様に組み込まれたりする。
「活用すると連続技の爽快感が出る」という理由でデバッグされなかったストリートファイターⅡのキャンセル技がこの典型例である。
そのため、ゲームの進行に支障をきたす内容でなければ、絵面が愉快なバグやテクニックとして導入されているバグが修正されると逆に残念がられることも。
便利な言葉?
ゲームにおいて、理解できない状況や気に入らない仕様を何でもかんでも「バグだ!」と認定するプレイヤーがいて物議を醸す。
「対戦で負けたのは、バグで相手がワープしたからだ!」といった具合で、気に食わない状況を「バグ」と表現するプレイヤーは後を絶たない。
何でもかんでもバグのせいにするよりもまず自分の行いをじっくり省みよう。バグ認定はそれからでも遅くない。
また、近年ではSNSでのバズ狙いやアフィリエイト目的で、何でもかんでもバグと騒ぎ立てる行為が問題視される事もある。
こちらは完全に故意で騒ぎ立てる分、悪質さがより際立っている。
どちらにしても、本人の技術や勘違いに起因する問題である為、まとなプレイヤーからは煙たがられやすい。
だが、報告者の勘違いだと思われていた現象が実際バグだったというケースもある、
すぐに「それはバグじゃない、お前の勘違いだ」と決め付けるのもそれはそれでお門違い。
再現性の低いバグもある為、冷静に検証する必要がある。
なお、チートをバグ技という事も多々あるが、実査は全くの別物。
チートは非正規の外部ツールを利用するものであり、プログラム単体で成立するバグ技とは原理が根本から異なる。
確かにどちらも製作者の想定外という点だけ見れば同じではあるが、チート≠バグ技である事は念頭に置いておきたい。
改造(ゲーム)の方も参照。
ちなみにチートで意図的にバグを起こし通常ではありえないプレイをする界隈も存在する。
こちらは自分に有利にゲームを進めることではなく、不自然かつ奇想天外な動作そのものを鑑賞して楽しむことを目的としている。
余談
パッチを当てた結果
- フリーズ頻度増加、ゲームスピードの低下、表示&操作バグなど問題点が増えた「ジャンライン」
- 再起動する度にユニットが全消滅する*1最悪のバグが混入した「アジト×タツノコレジェンズ」
などのようにパッチでより酷い事になった事例も存在する。
「ポケットモンスター 赤・緑」はセレクトボタン絡みのバグのあまりの多さから、
「セレクトボタンを押すとなにかしらバグるゲーム」とまで言われた過去がある。
ただし、バグらせるには意図的な操作が必要かつ遊べるバグも多く、個性として受け入れられている面も。
3DSのバーチャルコンソール版でも修正されていない。
この項目が追記修正されないのはバグだ!!
[#include(name=テンプレ2)]
この項目が面白かったなら……\ポチッと/
#vote3(time=600,7)
[#include(name=テンプレ3)]
▷ コメント欄
- きちんとデバッグしたのにミュウ入れるなんて良くかくから・・・ -- 名無しさん (2014-01-26 22:28:35)
- 真・女神転生3の魔法威力減少もバグとか言われるけど、バランス調整の為の仕様以外の何ものでもないよね。 -- 名無しさん (2014-01-26 22:29:09)
- バグを使いこなせばゲームをより面白くプレイできそう -- 名無しさん (2014-01-26 22:53:41)
- 「バグを見つけるのが面白い」って人もいるけど、私は怖くなるなー、頭真っ白になる。バグ検証する人はすごいねぇ -- 名無しさん (2014-01-26 22:59:27)
- ポケモンのピカ版やった時バグがなくてがっかりしたなあ -- 名無しさん (2014-01-26 23:07:54)
- プレイヤーにとって有利に働くバグはどんどん利用する、ゲームはちょっと強かな位が楽しめる -- 名無しさん (2014-01-31 16:57:18)
- 「バグネタを後年になって公式がネタにしてしまった」例も結構あるよね。有名なのは魔界塔士のチェーンソーかな -- 名無しさん (2014-01-31 17:19:45)
- ゲイングランドというゲームはバグがむしろストーリーを盛り上げるため好意的に評価されてる -- 名無しさん (2014-02-10 20:02:25)
- FF8の例の進行不能バグで進まねーバグだろ!って言ったのにいろんな人に笑われたわ、まぁ事実だったけどな -- 名無しさん (2014-04-16 08:35:42)
- そうだよ、バグはプログラマにとって最大の脅威なんだよ・・・(血涙) しがない元プログラマの叫びでした>< -- 名無しさん (2014-04-16 08:39:07)
- ↑の続き そして、デバグが未熟だったために、会社を3回もクビになったやつがここにいます・・・OTL -- 名無しさん (2014-04-16 14:34:13)
- F91じゃないのか -- 名無しさん (2014-04-16 14:49:40)
- ビルギットさんを殺す機械かと -- 名無しさん (2014-04-16 14:58:25)
- 魔法陣グルグルでは、勇者が結界の僅かな隙間(バグ)からエレファントに強行突破するという非常にメタい技を覚えたり -- 名無しさん (2014-05-24 07:53:43)
- ロックマンエグゼのバグスタイルは楽しかった -- 名無しさん (2014-05-24 08:02:39)
- とあるブランドの処女作がバグ多すぎて速攻売った。 -- 名無しさん (2014-05-24 08:07:55)
- マリオ64のカセットを半抜きにしてやるアレは大笑いしたわwww -- 名無しさん (2014-05-24 17:36:45)
- 所々誤字脱字があるのはわざとかな?バグ報告しちゃうぞ^^(byデバッガー) -- 名無しさん (2014-05-24 17:43:00)
- ベースボールの魔球とかはー? -- 名無しさん (2015-03-02 22:19:10)
- 今のゲームはバグがあってもパッチで何とかなるのはいい事なのかそうでもないのか。 -- 名無しさん (2015-03-02 22:40:35)
- バグと言えばマーベラス、マーベラスと言えばバグ ルーンファクトリーはもうバグを楽しむ為だけに毎回買ってる -- 名無しさん (2015-03-02 22:45:15)
- ネトゲでバグ技使ってペナルティ食らった奴がいるとか -- 名無しさん (2016-01-14 19:18:48)
- FF8のセントラ遺跡バグは普通にやれば起きないバグだからな。ただ発生から初動が遅いという悪質さが異常 -- 名無しさん (2016-04-21 12:55:53)
- パッチを当てたら余計に酷くなったジャンラインというゲームがあってだな・・・ -- 名無しさん (2016-09-14 13:58:32)
- ディケイドがライダー世界を破壊しないのはバグだ!!byN滝 -- 名無しさん (2016-09-14 14:02:55)
- 「オライリー H【u】ckシリーズを熟読する」という不具合がある。Status: UNCONFIRMED, Assigned To: nobody -- 名無しさん (2016-10-10 06:43:16)
- A C 北 斗 の 拳 -- 名無しさん (2018-02-28 17:44:56)
- ファミコンでソフトの接触が悪くて画面表示がおかしくなることがあった。当時周囲ではあれをバグと呼んでいたけど、本来の意味からは違ってたんだね。 -- 名無しさん (2018-03-01 00:09:08)
- バグを無くす方法?バグの原因となるコードをコメントアウトすればいいのさ -- 名無しさん (2018-03-15 10:44:59)
- 知ってるか? バグには二種類ある。エラーメッセージですぐにわかるバグと、わからないバグの二つだ。 -- 名無しさん (2020-01-30 10:09:12)
- ↑2 プログラムの妖精さん「あれ?このデータの参照先が消えとる…。って事はデータなしの0入れとけばええか」 -- 名無しさん (2020-06-13 11:28:01)
- ファミコンソフトの接触が悪いと表示がおかしくなることを「バグる」と呼んでいたが、誤用だったんだな。 -- 名無しさん (2021-02-23 19:03:17)
#comment
コメント
最新を表示する
NG表示方式
NGID一覧