ramble Advent Calendar 2021 18日目の記事です。
エンジニアにとって面倒かつおそろしいデグレードについて、
過去の経験談を踏まえ、その時はどうしたか、どのように対処するべきだったか、ご紹介します。
デグレードとは?
ソースコードや環境に手を加えることにより、手を加える前より品質が低下してしまうことです。
(例:前はこの画面でボタンを押下すると画面遷移したのに何故か遷移しなくなっている…)
また、デグレードは日本特有の呼び方らしく
regression(リグレッション):後戻り
の意味で使われているようです。
「デグレ」「デグレった」といった感じで聞くのがほとんどではないでしょうか。
デグレードを経験した時期
経験した時期は、エンジニアとして活動し始めて半年が経った頃でしょうか。
PHPでWebアプリケーションを開発するプロジェクトに先輩エンジニアと参画していて、
人員も十数人と多めでフロントからバックエンドまで縦横無尽に駆け回る役回りでした。
デグレードの始まり
その時、私はフロントとバックエンドの改修を同時におこなっていました。
改修の内容は、とある画面(A)で入力された値をバックエンド側でチェックして
他画面に遷移する。という簡単なものでした。
また、すべて同じではないものの、既に同じようなフローで入力値チェックの処理をおこなう
関数(A`)があったので、私の担当箇所仕様にちょっとだけ手を加えて(ここ試験に出ます)
プルリクエストもマージされて作業を終わらせました。
にわかに騒ぎ出す周囲
数時間後、作業もひと段落して残作業がないか確認していると、何やらチャットが騒がしい。
どうやらとある画面が遷移した時点で500エラーになるようになってしまったとのこと。
「ついさっきまで見えていた」「何がなんだかわからない」
その画面はシステムの仕様上ほぼ経由する画面のようで、影響が大きいようだ。
穏やかではないチャットにビビりながらも「大変な画面なんだな…がんばって…」
と心の中で思っていました。
そして事実発覚
すると、先輩エンジニアが無表情で「今皆が騒いでる500エラーってさっきの改修が原因じゃない?」
と言う訳なんですね。
いきなり押しかかるとプレッシャーと何を根拠に言っているんだという両方から完全に混乱状態に。
そんな私を見兼ねて、何が原因になっているか一緒に調べようと言ってくれて、
あれよあれよという間にあっさり解決してくれました。
何が原因?
私が手を加えた既に存在していた関数(A`)、実は他の画面でも利用していた関数なのです。
「既に存在している ≒ 既に利用されている」 となるはずなのですが、
・他で利用されている箇所も確認していない
・何故か「大丈夫だろう」と思い込んでいる
・自分の処理が上手くいくよう既存のソースコードを何も考えず修正
・仕様把握していないのに突き進む
何ひとつ良いところも無く、
その結果500エラーを招いて十数人の作業を数時間無駄にしてしまいました。
数時間か、といっても人数分掛けるととんでもない時間になるのです。
どうするべきだったか
・ソースコードに手を加える時は入念な影響調査(とても大事)をオススメします。
・手を加えた後も影響が無いか、ローカルでの動作確認は大事です。
・テストも実施出来ると更にGoodですね!
ちなみに、私は上記のうちローカルでの動作確認しかしていませんでした。。。
おわり
ここまで読んでいただきありがとうございました。
過去に経験したことで、それ以来デグレードは起こしていないと思います。
同じ過ちを繰り返さないようにするためになれば嬉しいです。
ramble Advent Calendar 2021、次回は加納さんです!