検収は、システム開発契約義務の履行もしくは不履行を判断する方法として不可欠のプロセスである。検収の内容や方法については、契約によって事前に詳細に合意しておく必要がある。加えて、検収時に発生したトラブルの対処手順や、遅延によるコスト負担の責任についても明確にしておかなければならない。

 検収は、システム開発契約における最後の履行段階である。あらゆる取引の履行に関して、その履行が契約の趣旨に合致しているか否かを検査し、その検査に合格した時点で履行が完了するという制度は、どこの国においても認められている制度である。わが国の商法は、第526条「買主による目的物の検査及び通知」がそれを規定している。

 ただし、商法第526条が定める検査は、目視もしくは簡易な使用による検査を前提としており、コンピュータプログラムやシステムの検査を念頭においた立法ではない。そのため、極めてハイレベルで、かつ複雑な技術成果物であるシステム開発の検収の法的根拠として利用できるような規定ではないのだ。

 このような立法上の不備を埋める役目を果たすのが、契約である。検収行為の内容や程度は、開発するシステムのサイズや技術レベルに応じて、関係当事者間の合意によって決定される。例えば、検収の方法や期間、検収テストに利用するテストデータの種類と内容、検収への関与者、研修結果の評価方法などを、事前に合意しておくことが極めて重要なのである。

開発過程の適切なテストが前提

 そして、適切な検収の前提となるのが、システム開発過程の要所要所で適切なテスト(検査)を実施することだ。開発過程におけるテストは省略することもできるが、途中の検査を省略すると、万一トラブルが発生したときに、開発当初まで遡って原因を究明しなければならなくなる可能性ある。開発過程でのテストが検収時のトラブル回避につながるほか、トラブルがあっても、早期の対策の立案に役立つのだ。開発過程で何度も同じような検査を実施することは、無駄な作業と考えがちだが、それぞれの検査は違った目的で実施されていることを十分に理解するべきである。

 開発過程における十分な検査を実施した上で、最終的な検収テストを実施することになるが、そこで最も重要なのが、テストデータとテスト方法の準備である。検収は、システム開発の最終段階であるから、あらゆるテスト方法を講じておかなければ、検収不十分という結果になりかねない。単なるテストデータを使った検収では不十分である。システム利用のピーク時を再現するテストが不可欠になるからだ。正常に稼働しているシステムが、負荷が高くなった途端にダウンするという事態を経験した読者は少なくないはずだ。

 そのため検収に先立って、テストデータによる検収終了から本番データの使用への移行、検収合格の基準などを明確にしておく。さらに、検収の時間帯をさまざまに変えることで、様々なシステムの稼働状況、負荷の限界値などをテストする必要がある。まずはテスト環境下で、検収用に作成したデータにより検収テストを実施し、そのテストに合格したら本番データを使ったテストへ移行する。そして最後に、コンピュータ使用の実環境下での検収へと移行するのが一般的である。

 実環境下でのテストは、深夜や週末などのタイミングを利用することが安全である。トラブルが起こることも想定したテスト計画が不可欠なのだ。

遅延コストの負担者を慎重に見極める

 検収時にトラブルが発生した場合は、そのトラブルをいかに短い時間で解決して、検収を終了するかに発注者も受注者も集中すべきである。トラブルに遭遇すると、両者ともに責任の押し付け合いに陥りがちだが、その態度は検収を長引かせ、システム開発の終了を遅らせるだけである。

 そのため検収過程では、トラブルが発生したときの原因分析、解決策の討議の仕方についても、事前に合意しておくことが不可欠だ。基本的には、発注者および開発者のプロジェクトマネジャーを通じて討議し、対処策を決定することになる。

 検収が順調に進まなければ、検収にかかる期間や必要な人員のコストは当然ながら増大する。この費用を誰が負担するかという問題が生ずる。この費用負担者の決定は、システム開発委託の種類と、トラブル発生の原因が発生者側にあるのか、それとも委託者側にあるのかによって決まる。

 まず、委任型の開発契約では、受注者側は、開発契約で合意したスキルレベルのSEを合意時間数だけ提供すれば、システム開発責任は果たしたことになる。そのため、検収に合意時間数を超えた人員を提供すれば、法的には発注者者側が費用を負担する責任がある。ただし現実には、その超過時間数に対して費用を請求するか、それともサービスで人員を無償提供するかは、その時の状況全般を考えて、開発受託会社が判断することになる。

図●検収時の検査方法などについて、契約で事前に合意しておく必要がある
図●検収時の検査方法などについて、契約で事前に合意しておく必要がある

 一方、システム開発を請負契約の形式で行った場合には、検収に要した時間とコストは原則として、請負者側が負担する。一定請負代金を対価としてシステムの完成を請け負ったもので、検収が完了し、開発成果を発注者側に引き渡すまでは、請負作業は完了していないと判断されるからである。

 ただし、トラブルの原因が発注者側にある場合は、その限りではない。契約によって定めた請負義務に照らして、どちらかが負担すべき費用であるかを慎重に判断し、必要に応じて発注者側の負担を主張すべきである。システムの請負案件でソリューションプロバイダの多くが赤字案件を抱えた背景には、検収その他の開発遅延コストをすべて、受注者側が負担したことがある。コスト負担の責任の所在を慎重に判断すれば、結果は異なっていたかもしれないのだ。

 検収完了後も開発者側は、一定期間の瑕疵担保責任を負う。検収に合格した後であっても問題が発生すればソリューションプロバイダに解決の責任があるのだ。ただ、本番稼動後に発生する障害の損害を考えれば、検収時にどれだけ厳密なテストを実施できるかが極めて重要である。

高石 義一氏 高石法律事務所 弁護士
元・日本IBMの法務・知的所有権担当の常務取締役。1993年に高石法律事務所を設立し、国内外のIT関連の開発、SIビジネスなどに関する法律問題の処理に携わっている。