メインコンテンツへスキップ
プログラミング学習におけるバグとの向き合い方【バグによる精神消耗を減らす対処法】
  1. Posts/

プログラミング学習におけるバグとの向き合い方【バグによる精神消耗を減らす対処法】

プログラミングを勉強している中でバグ修正に苦しむことは多々あります。

特に駆け出しエンジニアの頃は知識や経験も無いため、解消するまでに多くの時間を必要とします。

未経験からエンジニアになった経験から、どうやったらバグを平和に解消できるのか本記事で解説します。

前置き : バグは成長のチャンスと捉える
#

先日このようなツイートをしました。

バグを修正するというのは実に手間も時間がかかることなんです。

教材のように答えが決まっておらず、自力で問題を解決していく必要があります。

しかし、バグを修正することは多くの成長のチャンスを秘めています。

開発現場におけるバグ修正とは
#

Alt text
実はバグを修正するという行為には下記のようにいくつかの工程が必要となります。

  • バージョン確認
  • バグの再現性確認
  • バグ発生箇所の原因調査
  • バグの修正
  • バグ修正後の再テスト

プログラミング学習初期の頃は特にエラーが出たらググってコピペして終わり、のような場合が多いかと思います。

しかし、これは実際の開発現場では通用しません。

まずはそれぞれの工程について順番に解説します。

開発現場におけるバグ修正その1 : バージョン確認
#

まずはハグが発生したアプリやWebサービスのバージョンを確認します。

バージョンとは各リリースごとにつける管理番号のようなものです。

この管理番号を元に例えば下記のような流れでバグの原因調査を進めることができます。

前のバージョン(1.0.1)ではこのバグは起きなかった
今のバージョン(1.0.2)でこのバグが起きるようになった
つまり昔からあるバグではなく、今のバージョンの機能実装でバグが発生した

開発現場におけるバグ修正その2 : バグの再現性確認
#

続いて端末の確認です。

端末と単に言っても確認することはたくさんあります。

  • どのプラットフォーム(iOS/Android/Web)で起きるのか(もしくは全てか)
  • 端末のOSのバージョンは何か
  • 端末のハードウェアはどの世代のものか

実際の開発ではバグが発生した場合、自分の手元でもバグを再現することが必要になります(これを再現性確認と言います)。

バグを自分の手元で発生できないと原因特定が難しくなり結果修正も難しくなってしまいます。

そのため、バグが起きた端末の詳細な情報を把握することも重要となります。

特にAndroidは端末の種類が沢山あり、端末起因のエラー等もあるので注意が必要です。

開発現場におけるバグ修正その3 : バグ発生箇所の原因調査
#

続いてバグの原因調査に進みます。

実際の開発現場ではこのような観点から原因調査を行います。

  • どの処理で発生しているのか
  • どの範囲まで影響があるものなのか
  • どれほどそのバグは深刻なのか

バグと言っても軽微なものからアプリが落ちるといった重大なものまで様々です。

原因調査をして影響度、優先度を確認しバグの分類(UI関連か、もしくは機能関連か)を行います。

そしてバグの影響度が大きいものであれば、優先して対応を行います。

開発現場におけるバグ修正その4 : バグの修正
#

原因調査、影響調査が終わるとようやくコードの修正を始めます。

コードを修正する際に気をつけることはデグレーション(デグレ)です。

デグレとは修正対象のバグを直したことにより、別のバグが発生することを指します。

よくあるのは直したコードが実は他の処理でも使われていたりするパターンです。

(影響調査が大事なのはそのためです。影響調査を適当にすると想定外のデグレが起こりやすくなります。)

開発現場におけるバグ修正その5 : バグ修正後の再テスト
#

バグを修正したら、動作確認をします。

修正後の動作確認をする場合は直した箇所のみではなく、関連処理についても同時に確認するようにしましょう。

理由は前述した通り、他の箇所でデグレが起こっていないか確認するためです。

後から以前の箇所を修正することになると精神衛生上もよくはありません。

そのため、デグレの確認は入念に行うように心がけましょう。

プログラミング力を爆速で成長させる方法:バグ修正をすること
#

Alt text
バグ修正とは実はプログラミング学習の上でもっとも実力がつく工程です。

なぜならバグ修正では処理を完全に理解しないといけないからです。

ソースコードへの読解力もつき、かつ処理を理解するために必要とされる論理的思考力も鍛えられます。

関連記事

【ベトナム語のスラング】mlem mlemとはどういう意味なのか解説!【Vol.1】
【最新版】ベトナム株式投資の始め方ガイド【口座開設】
【flutter】Tinderのようなスワイプ型カードのやり方をわかりやすく【アプリ開発】