プログラミングを勉強している中でバグ修正に苦しむことは多々あります。
特に駆け出しエンジニアの頃は知識や経験も無いため、解消するまでに多くの時間を必要とします。
未経験からエンジニアになった経験から、どうやったらバグを平和に解消できるのか本記事で解説します。
前置き : バグは成長のチャンスと捉える#
先日このようなツイートをしました。
【バグとの向き合い方】
— kzy@ダナン在住エンジニア🇻🇳 (@KzyRepository) March 26, 2021
プログラミング学びたての時1番苦労したのは「コピペで治らないバグ」でした。
時には何日、何週間も修正にかかる時もあり、何度も心が折れそうになりました。
バグ修正は本当にタイムキラーではあるけれど、その分得られる知識、経験は大きいです。
バグを修正するというのは実に手間も時間がかかることなんです。
教材のように答えが決まっておらず、自力で問題を解決していく必要があります。
しかし、バグを修正することは多くの成長のチャンスを秘めています。
開発現場におけるバグ修正とは#
実はバグを修正するという行為には下記のようにいくつかの工程が必要となります。
- バージョン確認
- バグの再現性確認
- バグ発生箇所の原因調査
- バグの修正
- バグ修正後の再テスト
プログラミング学習初期の頃は特にエラーが出たらググってコピペして終わり、のような場合が多いかと思います。
しかし、これは実際の開発現場では通用しません。
まずはそれぞれの工程について順番に解説します。
開発現場におけるバグ修正その1 : バージョン確認#
まずはハグが発生したアプリやWebサービスのバージョンを確認します。
バージョンとは各リリースごとにつける管理番号のようなものです。
この管理番号を元に例えば下記のような流れでバグの原因調査を進めることができます。
前のバージョン(1.0.1)ではこのバグは起きなかった
↓
今のバージョン(1.0.2)でこのバグが起きるようになった
↓
つまり昔からあるバグではなく、今のバージョンの機能実装でバグが発生した
開発現場におけるバグ修正その2 : バグの再現性確認#
続いて端末の確認です。
端末と単に言っても確認することはたくさんあります。
- どのプラットフォーム(iOS/Android/Web)で起きるのか(もしくは全てか)
- 端末のOSのバージョンは何か
- 端末のハードウェアはどの世代のものか
実際の開発ではバグが発生した場合、自分の手元でもバグを再現することが必要になります(これを再現性確認と言います)。
バグを自分の手元で発生できないと原因特定が難しくなり結果修正も難しくなってしまいます。
そのため、バグが起きた端末の詳細な情報を把握することも重要となります。
特にAndroidは端末の種類が沢山あり、端末起因のエラー等もあるので注意が必要です。
開発現場におけるバグ修正その3 : バグ発生箇所の原因調査#
続いてバグの原因調査に進みます。
実際の開発現場ではこのような観点から原因調査を行います。
- どの処理で発生しているのか
- どの範囲まで影響があるものなのか
- どれほどそのバグは深刻なのか
バグと言っても軽微なものからアプリが落ちるといった重大なものまで様々です。
原因調査をして影響度、優先度を確認しバグの分類(UI関連か、もしくは機能関連か)を行います。
そしてバグの影響度が大きいものであれば、優先して対応を行います。
開発現場におけるバグ修正その4 : バグの修正#
原因調査、影響調査が終わるとようやくコードの修正を始めます。
コードを修正する際に気をつけることはデグレーション(デグレ)です。
デグレとは修正対象のバグを直したことにより、別のバグが発生することを指します。
よくあるのは直したコードが実は他の処理でも使われていたりするパターンです。
(影響調査が大事なのはそのためです。影響調査を適当にすると想定外のデグレが起こりやすくなります。)
開発現場におけるバグ修正その5 : バグ修正後の再テスト#
バグを修正したら、動作確認をします。
修正後の動作確認をする場合は直した箇所のみではなく、関連処理についても同時に確認するようにしましょう。
理由は前述した通り、他の箇所でデグレが起こっていないか確認するためです。
後から以前の箇所を修正することになると精神衛生上もよくはありません。
そのため、デグレの確認は入念に行うように心がけましょう。
プログラミング力を爆速で成長させる方法:バグ修正をすること#
バグ修正とは実はプログラミング学習の上でもっとも実力がつく工程です。
なぜならバグ修正では処理を完全に理解しないといけないからです。
ソースコードへの読解力もつき、かつ処理を理解するために必要とされる論理的思考力も鍛えられます。
さいごに#
ここまでお読みいただきありがとうございました。
私のブログ記事を読んでいる方の中には海外転職・海外移住への興味がある方もいらっしゃるかと思います。
私自身ダナンで働き始めて7年目になりますが、海外就職を実現するために大事なのは英語力と開発現場で働いた経験だと感じました。
もし今後海外移住・海外就職を本気で実現させたい方はぜひこれらのサービスを活用してみてください。
レアジョブ - 実務で使える英語力を身につけよう#
レアジョブ英会話は英会話力の向上に特化したサービスです。 私の友人もレアジョブを通じて0から学習を続け、現在はベトナム人のエンジニアとも英語でコミュニケーションが取れるレベルまで英会話力を伸ばすことができました。
レアジョブが選ばれる理由は多岐にわたりますが、主な理由としては下記3点が考えられます。
- 優秀な講師陣:公用語が英語であるフィリピン人の方が講師となり、生きた英語を身につけることができる
- 豊富な教材: 5,000以上の教材を提供しており、学習者のレベルや目的に応じて最適な教材を選べます。
- 安心のサポート体制:初心者でも安心して始められるように、日本人カウンセラーが学習のサポートをしてくれます。
海外移住計画の第一歩として、スピーキング力を身につけたいと考えている方は、ぜひこちらの無料体験を試してみてはいかがでしょうか。