不具合を調べる時に意識している事

不具合の調べ方は人それぞれなのねぇと思ったので自分が普段意識してる点を確認してみる。すごい事は全く書いていないので、ちゃんとしたプロフェッショナルの人は見なくても大丈夫だと思います。

気になったらとにかく調べ始める

後で「あれ不具合だったのか」とかなるのは新人の頃だけで十分なので、気になったらとにかく調べ始める。速度なり環境依存の問題なり他人の担当なり関係ない。気になる(納得してない)という事は何かあるという事ですよ。

時には芋づる式に色々発掘される可能性もあるんだろうけど全部見る。あるいは人に助けてもらう。

「これ不思議なんですけど」と他人にアウトプットするだけでも違ってくる気がする。

何はなくともログを見る

ログも見ずに「ここ変なんですけど」とか先輩に聞きに行って怒られるのは新人の頃だけで十分なので、ログがあればまずログを確認する。

ログを見た結果、わからなくても時系列に整理するとか、関係がありそうな情報をまとめる。自分なりの仮説を立てれると検証なり矛盾の指摘なりができるのでなお良い。その上で誰かに質問するなり相談するなりすると解決までの時間が短くなるだろう。時間をかけすぎても良くないので 30 分ルールとか作っておくといいと思う。

再現環境は壊さない

つい OS を再起動してしまって、もう一度再現するまで 100 回同じ事を繰り返すとか新人の頃だけで十分なので、状態を壊すのはできるだけ原因や再現条件が判明してからにする。せめて情報を取ってからにする。

常に「切り分ける」意識を持って調査する

闇雲に調べて(中略)なので、「原因が○○ではない(あるいはドンピシャである)」事がわかる事をひとつひとつ確認する。そうする事で次の確認観点を挙げやすい。

もし自分がわからなかったとしても、ある程度切り分けが終わっていれば他の人に聞くなり引き継ぐなりした段階ですぐにわかるかもしれない。

原因の判明 〜 修正

一般的に意識する点は思いつかなかったので省略。

修正した後は類似不具合も見つけておく

直したつもりでいい気になって(中略)なので、grep なり、脳内で把握してるコードなりをフル活用して類似不具合も見つけておく。例えば、require 'foo.so' とか書いてしまって、Windows で動きませんみたいな不具合があったとすると、grep で全部発見できますよね。

同じ間違いを犯しても機械的にわかるようにしておく

全部直したけど(中略)なので、できれば未来の自分が同じ間違いを犯しても大丈夫なように CI などで機械的にわかるようにしておく。例えば、テストが書けない部分にうっかり Syntax Error なんかを仕込んだりしても大丈夫なように、文法チェックだけは CI でするとか。


流石にここまでやると潔癖症かもしれないなぁ。あと意外に沢山あったなぁ。まぁ規模なり自らを取り巻く環境なりによって変化するのだろうから、あくまでもこれは自分の場合でございます。