SNSなどでよく「プログラミングを勉強しています」という文言をみかけます。
プログラムを書いているときは確かに楽しいです。
ですが、書いたプログラムをデバッグ(バグ修正)することは
地味で大変で面倒な三重苦となっています。
プログラムを一生懸命勉強して、念願のプログラミング関係の仕事ができる!と思っている方に辛くのしかかってくるのがこの「デバッグ作業」です。
プログラミングの仕事はただプログラムを書くだけではありません。
念入りなテストを行い、バグを洗い出し、修正し再びテストのような地味な作業が待っています。
もし、バグがあるまま納品して、受注先からバグの報告を受けてしまったら、今やっている仕事の他にそのバグ対応も行わなければなりません。
かなり時間に追われることになります。
ですので、プログラミングを行う上で、デバッグの大切さについて書いていこうと思います。
デバッグを疎かにするとどうなるのか
デバッグを疎かにするとどうなるのかを説明していきたいと思います。
多額の損害賠償を請求される
大規模なシステム停止のニュースをみたことはありませんか?
そのシステムが稼働していないため、利益が発生せずそのシステムを利用している企業が大赤字になってしまう場合があります。
原因はシステムですので、そのシステムを使用した企業がシステムの購入先に損害賠償請求をすることも少なくはありません。
単純ミスで何億ものお金が動くものもあります。
あなたはそのような損害賠償を支払えますか?
会社のイメージの悪化
多額の損害賠償を求められると、それは全国ニュースとして報道されます。
マイナスイメージとして全国に情報が行きわたってしまい、
「じゃあこの会社から買うのやめよう」
となり、会社としてのイメージがかなり悪化してしまいす。
損害賠償をされただけではなくマイナスイメージにもなり泣きっ面に蜂状態になってしまいます。
人の命にかかわることもある
医療などのシステムでバグをだしてしまうと医療ミスが起きてしまう原因になりかねます。
つまり、ミスると人が死にます。
そこから、損害賠償→マイナスイメージの流れになってしまうわけです。
また、ニュースで銀行のシステムのトラブルが報道されると
「あ、誰か死んだな」
と私は思ってしまいます。
その「誰か」というのはシステム作成者の「誰か」です。
数億の不利益をだしてしまった人がまともな精神状態でいるのは難しいです。
なので、その後の様子をつい想像してしまいます・・・。
デバッグが疎かになってしまう原因
デバッグが疎かになってしまう原因をあげてみます。
短納期
納期までの期間が短いと、一番最後に行うテスト作業の時間を十分に確保できなかったりします。
時間が十分にとれないので、テストする項目数も必然的に少なくなってしまいます。
テスト項目がすくないと、細かい部分のテストを当然ながら行うことはできません。
そのため、テストをしたけれどもバグを見つけられなかったということになりかねるのです。
受注金額
受注金額についてですが、こちらは短納期と理由がにています。
納期までは十分に時間があっても受注金額が作業ボリュームと見合っておらず、時間をかけてしまうと働いている会社側が赤字になってしまうからです。
受注した金額に該当する時間以上、時間を費やしてしまうと人件費などの経費が足りなくなり当然赤字になります。
そのために金額に見合った時間以内で作業を完成させる必要があるのです。
私が働いてる会社ではきちんとテスト工数分をきちんと請求しています。
知識不足・経験不足
知識不足・経験不足により、テスト項目を洗いだせずデバッグができないパターンもあります。
知識不足・経験不足の人がやることは「有識者にレビューしてもらう」ことです。
レビューは確かに面倒で私も嫌いですが、レビューされた後はかなりイライラもしてしまうことがありますが、確実に自分自身も成長することができます。
会社の人に頼るのも成長の第一歩ですよ!
バグを出さないようにするには
バグをださないようにするコツを紹介いたします。
誰もが理解できるプログラムを書く
たまに勘違いしている人がいるのですが、「自分しか理解できないプログラム=凄い」とはなりません。
誰もが理解できるプラグラムであってこそ凄いプログラムになるのです。
どうしても処理が複雑になってしまう場合も多々あります。
それをどのような方法で処理しているのかをコメントで示してあげると後からソースを見た人も理解しやすいです。
バグ発見時もかなり対応しやすくなってしまいます。
面倒だと思ってもコメントとして処理内容を理解できるように残しておきましょう。
コメントじゃ説明しきれない場合はイメージ付の資料として残すのが良いでしょう。
テストはエビデンス(証拠)を残す
テストを行う際に、スクリーンショットのエビデンスを残すようにするとかなりバグが減ります。
中には面倒で本当はテストしなければ内容でも「どうせ動くだろ」と思ってサボってしまう人も一定数いるからです。
わざわざスクリーンショットをとるのはテストの時間が大きく増えてしまいますが効果は絶大です。
別の人が同じ内容をテストしたときに、前回のテストはどのようにテストしたのかを理解させることも可能です。
異常系のテストも行う
通常、テストは作ったものがきちんと動くかをテストします。
では、きちんと動かなかった場合どうするの?
バグが発生し、フリーズで進行不能になるのではなく
エラーメッセージで何のエラーが発生したのかきちんとわかるようにしましょう。
その部分までしっかりテストすることが大事です。
不具合があった連絡を受けたときに原因の特定を早くできるというメリットもあります。
修正していない箇所の影響も確認する
プログラムで自分が追記した部分以外に、自分が書いたプログラムが影響してしまいバグが発生することは多々あります。
「こっちを直したらあっちがおかしくなった」
のような現象を避ける必要があります。
自分が書いたプログラムの箇所以外にも、いろいろ意地悪テストをしてバグを発見しましょう!
まとめ
プログラミングにはデバッグはつきものです。
デバッグは正直かなりつまらない作業ですが、とても重要な作業となります。
デバッグが面倒だからといって疎かにしてしますと、多額の賠償請求や人の命にかかわりかねません。
プログラムを書いた時間以上にテストに時間を割いてくださいね。
余談ですが、ドラゴンクエストというゲームはほとんどバグがありません。
そうとう念入りにテストしているのがわかりますね!
初心者はココナラで実践経験を積むのもありかもしれませんね!
幸い、損害賠償請求されたことはありません