F氏が手がけたエキセントリック・コード
次に紹介するのは、大規模システムのデータベースで起こった怖い話だ。この話を聞かせてくれたのは、30代 プロジェクトマネージャのE氏。彼は、データベーステーブルのデッドロックが頻繁に発生すると報告を受け、調査を開始したという。
「弊社が手がけていた大規模システムの導入に向けて、テストを行っている最中の出来事でした。そのとき私は別のプロジェクトに参画していたのですが、急遽呼び出され、対応に当たってほしいと指示されました。
システム構築の指揮をとっていたのは私の同期のF氏で、どうやら彼が担当したプログラムが頻繁にデータベーステーブルのデッドロックを起こしていたようでした。あいにくF氏は季節はずれのインフルエンザでダウンしており、問い合わせても明確な答えがでてきません。
導入の期日が迫っていることから、私が担当していたプロジェクトを外れて調査を行うことになりました。さらに10数人の技術者を集めて調査チームを立ち上げ、2週間以上を掛けて、データベース周りはもちろん、システムのハードウェア環境までつぶさに調査することになったのです」
「調査の結果、システムのハードウェア構成については、該当プロジェクトの大きさからいえば問題ないものでした。またデータベース周りについても、特にデッドロックの原因となりそうなものはみつかりません。
最終的に、F氏が自ら手がけたプログラム本体が『怪しい』という結論に至りました。そこで、F氏の書いたプログラムのソースコードをみたところ、頭を抱えたくなりました。
彼の書いたコードでは、カーソルや不等号、for文を組み合わせた、まさに『エキセントリック』としかいいようがない分岐処理が行われていました。通常、同様の処理をさせるためならば、IF文を使って単純に記述できるはずのものです。
このエキセントリックなコードが使われている部分でオーバーヘッドが多発し、それがデッドロックの一因となっていることが判明したわけです。
後日、体調が戻って復帰したF氏にこのコードについてたずねたところ、『プログラムを一行減らすことができて、嬉しかった』とばつが悪そうな顔で応えてくれました。
…10数人の調査人員と工数の無駄が、ただ悲しい出来事でした」
F氏本人は「一行コードを減らせて喜んだ」ことが、結果として多数の人々の手を煩わせ、あわや納入に間に合わない、という状況を生んでしまったのである。自分の自己満足で他者の足を引っ張っていないか、考えさせられる怖い話だ。
続いては、予期せぬ設計変更が招いたバグ話を紹介する。 次のページ