↓ ↑ページトップへ
表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
転生プログラマの魔法デバッグ ~この魔法、クソコードすぎる~  作者: 空乃真芽


この作品ページにはなろうチアーズプログラム参加に伴う広告が設置されています。詳細はこちら

PR
1/23

プロローグ 最後の障害対応


 午前四時十二分。


 オフィスで起きている人間は、もう俺ひとりだった。


 いや、正確には、俺がまだ人間の状態を保っているかどうかも怪しい。


 机の端には、空になったエナジードリンクの缶が四本。いつ淹れたのか覚えていないコーヒーは、とっくに冷めて表面に薄い膜を張っている。モニターの白い光が目に刺さり、こめかみの奥では小さな太鼓が鳴り続けていた。


 最後にまともに寝たのは、いつだったか。


 たしか二日前――いや、三日前?


「神谷なら直せるだろ。朝までに頼むよ」


 そう言い残した部長の顔だけは、嫌になるほど鮮明に覚えている。


 神谷湊、二十九歳。中小IT企業勤務。


 肩書きはプログラマ。実態は、仕様書の消えた業務システムを延命し続ける保守担当だった。


 今回の障害は、翌朝に控えた大規模リリースの最終試験で見つかった。特定の条件で売上データの集計が二重に加算される。数字が少しずれるなどという可愛い話ではない。このまま出せば、複数の取引先へ間違った請求が飛ぶ。


 元担当者は半年前に退職。設計書は三年前の状態で止まっている。コメントには、こう書かれていた。


# 暫定対応。あとで直す


 書かれた日付は、七年前だった。


「あとで、ねえ……」


 誰も来なかったらしい。その“あと”は。


 問題の処理は、請求対象を抽出する関数の奥深くに埋まっていた。似たような条件分岐が何重にも続き、同じ名前の変数が途中で別の意味に使い回されている。すでに廃止されたキャンペーンの判定、存在しない支店向けの例外処理、何のためにあるのか分からないフラグ。


 消したい。


 全部選択して、きれいさっぱり消してしまいたい。


 だが、動いている処理には、たいてい動いている理由がある。たとえ、その理由が誰にも分からなくなっていたとしても。


「分からない処理を本番直前に消すな。明日の俺が死ぬぞ……」


 もう今日の俺が死にそうだが、それとこれとは別問題だ。


 俺はログを一件ずつ追った。


 正常なデータと異常なデータを並べ、どこで処理経路が分かれるかを調べる。条件を変えて再現させ、変数の中身を確認する。目についた怪しい箇所を片っ端から直すのではない。原因を特定して、影響範囲を絞り、必要なところだけを変える。


 新しいものをゼロから作るのは、俺より得意な人間がいくらでもいる。


 だが、誰が書いたか分からないコードを読み解くことなら、少し自信があった。


 一時間ほど前、ようやく二重加算が始まる地点を見つけた。


 通常の集計処理を通ったあと、七年前のキャンペーン用処理が同じデータを拾っている。キャンペーン終了時に無効化されたはずのフラグが、今回追加された新しい区分と偶然同じ値になっていたのだ。


 しかも、その判定は三か所にコピーされ、二か所だけ修正されている。


「誰だよ……こんなクソコード書いたの……」


 乾いた声が、無人のオフィスへ落ちた。


 履歴を調べる。


 七年前のコミット。その作成者欄に表示された名前を見て、俺は黙った。


 KAMIYA_MINATO。


「俺かよ……」


 新人だった頃の俺である。


 当時は、動かすだけで精いっぱいだった。締め切りに追われ、既存処理をコピーし、意味を理解しきれないまま条件を足したのだろう。その後、何人もの担当者が継ぎ足し、今の迷宮が完成した。


 犯人を見つけたところで、責任追及に使えるのは鏡くらいだ。


「七年越しのセルフ障害対応とか、聞いてないぞ……」


 妙に笑えてきた。


 だからといって、古い処理を丸ごと削除するわけにはいかない。別の取引先が、まだその分岐に依存している可能性がある。


 俺は問題の条件を切り分け、新しい区分がキャンペーン処理へ入らないよう修正した。周辺のテストを追加し、対象外のデータまで一通り流す。


 一回目。


 失敗。


 見落としていた別のフラグが立っていた。


 二回目。


 集計値は合ったが、古い取引先のデータが欠けた。


「はいはい。そう簡単には帰してくれないよな」


 指先の感覚が鈍い。キーボードを打っているのに、厚い手袋越しに触れているようだった。


 条件をもう一段だけ狭める。差分を確認する。余計な変更が混ざっていないことを確かめる。


 三回目。


 黒い画面を、白い文字列が流れていく。


 単体テスト。正常。


 結合テスト。正常。


 問題が起きたデータ。集計値一致。


 既存取引先の回帰テスト。一致。


 最後の一行が表示された。


SUCCESS


 しばらく、その文字の意味が理解できなかった。


 終わった。


 本当に、終わったのだ。


 変更を保存し、手順書へ結果を記録する。念のため差分をもう一度見る。問題ない。今すぐリリースできる状態ではあるが、本番反映は朝の担当者に引き継ぐ。疲労でまともな判断ができない人間が、ひとりで本番を直接いじるべきではない。


 送信ボタンを押すと、肩から力が抜けた。


「……やっと帰れる」


 椅子から立とうとした。


 その瞬間、床が大きく傾いた。


 違う。傾いたのは俺だ。


 机へ手を伸ばしたはずなのに、指は何にも触れなかった。モニターの光が細い線になり、遠ざかっていく。


 痛みは、なかった。


 ただ、ひどく眠かった。


 せめて家に帰ってから寝たかったな、と。


 そんな、どうでもいいことを最後に考えた。


 暗闇の中で、不意に文字が浮かんだ。


EXTERNAL MAINTAINER DETECTED


COMPATIBILITY : 99.97%


IMPORTING...




評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。