納品物の扱い
動いていたものが急に動かなくなるということは、動作環境が変わったということなのでバグなどではないのだが、原因を調べてほしいと言われ、取り急ぎ現在の環境を一式送ってもらい、調べてみた。
まず驚いたことに、自分の送ったファイルが見つからない。作成したプログラムはある機能を持つ単一のライブラリ的なものなので、lib ディレクトリに配置してもらったはずなのにファイルが見つからない。
そこで grep をかけて関数を探したところ、ファイル名が変わっていた。まあライブラリなので中身が変わっていなければファイル名が変わったくらいでは問題ないのだけど、中身を見ると知らない関数も定義されている。
また、プログラム自体もよく見ると少し変わっている。これで動かなくなったとすれば、先方のエンジニアがなにか手を加えたということだ。いわゆる受託開発において、手を入れた納品物の動作に関してはこちらは感知しないのが通例である。しかも、追加機能を実装した最新版ではなく、少し古いバージョンを使っていながら、追加機能が動作しないというクレームも頂いていた。
こうなると論外で、まずは納品物の動作を確認してもらわなければならないし、もし動作環境が変わったとして、その対応もこちらがする場合は別途費用がかかる。
納品物の取り扱いというのは、いくつかの点で注意が必要だ。
開発元の納品物に自社で手を入れた場合、納品物との差分が発生する。その差分については開発元に責任はないため、もし納品物に修正が入り、再度納品された場合、その納品物に差分を適用する手間がかかることになる。これは端的に言えばバグの温床となる。
また、それが動作に必要な差分であれば、開発元に要求した要件が変化したことになるため、もし開発元にその差分を適用してもらう場合は別途費用がかかることになる。そのため、差分を作ることには慎重にならなければならない。
今回送ったもらったファイルを見るに、納品物として送ったライブラリを読み込む文をひとつ増やすだけで済むのに、それを怠ってもともとあったらしいファイルに納品物を合成してしまった(こうすると、読み込む文は増やさずには済む)。以降こちらの修正や機能追加がなければそれでもいいが、実際には機能追加が入ってしまったので、差分があるまま動かそうとして動かなくなってしまったという、不幸な物語の出来上がりであった。