プログラマ的病気の治し方

子供が突発性発疹というものに罹ったらしい。なんだかネット上で調べてみても原因がよくわからないらしい。ただ数日中に治るものだそうだ。

治るといわれても気持ちが悪い。病気になったんだから何か原因があったんだろう。それを完治しておかねば、また同じことを繰り返すかもしれない。これはエンジニアとしての性分だ。

プログラムのバグなどは、再現しなくなったからといってほっといていいわけではない。今後、見過ごしたことが原因でより悲惨な結果になる可能性だってあるのだ。異常だと思ったらその原因まで遡って追求し、そこから治さねばならない。

そう思って、治療をデバッグとなぞらえて考えてみた。

デバッグするさいには正常な動作と異常時のトレースを比べてみるのが一番だ。とはいうものの人間の体の正常時のトレースなんてちゃんと記録されてるんだろうか? 血糖値とかみて正常な値だとかはわかるだろうが、神経細胞の伝わり方をみて、どこまでが異常だとか判断できないような気がする。

さらに、バグを修正する最に最も大事なのは「このプログラムは何のためにあるのか?」というのをちゃんと把握しておくことだ。これを考え直してみると、今まで正常だと思っていた動作が実は異常だったと判明したりする。異常な部分を異常だと認識できず、他の部分でごまかそうとすることもおおい。でも結局は温泉旅館建て増し方式のような始末に終えないプログラムになってしまうのが落ちだ。

これを人間に当てはめてみると「この人間は何のためにあるのか?」という問題に行き着いてしまうことになる。万が一「この人間はいらない」ということなら治療放棄するのが正しいということになる。思わず哲学的な問題に行き着いてしまった。

と、フォーを食べながら考えていたら、治療という問題はプログラマ的に考えていたのでは突き詰められないものである、というのが結論らしい。このよくわからない有機物の塊は、目的もわからないが結構精巧なシステムを作り上げてしまったらしい。そんなものが逆に動いてしまっている (ように見える) だけでも奇跡だ、そう思った方がプログラマにはしっくりくる。とても恐れ多くて触れない。

俺たちはわけにわからないシステムによって生かされているんだなあ、とアミラーゼを分泌して澱粉麦芽糖に分解しながら考えた午後でした。