システム開発における「完成」

仕事の「完成」による効果

請負類型におけるシステム開発契約では、仕事の目的物たるシステムが完成することによって初めて、ベンダーがユーザーに対して報酬を請求できる権利(報酬請求権)を行使できます。
報酬は前払いとする旨が当事者間の契約の内容となっていた場合であっても、システムが完成しなかったのであれば、既払金を返還しなければなりません。

ただし、その場合であっても、ベンダーの仕事の提供によってユーザーが利益を受ける場合、提供された仕事の限度で当該仕事は完成したとみなされるのが原則です(民法634条各号)。その場合、ベンダーは、ユーザーが受ける利益の割合を差し引いてユーザーに既払金を返還することとなります。ベンダーは、既払金のみでは当該仕事の割合に応じた報酬として不足する場合、ユーザーに対し、追加で不足分を請求することも可能です。
なお、ベンダーは、システム未完成の原因がユーザーにある場合、ユーザーに対し、報酬の全額を請求できます(民法536条2項)。

(請負)
民法632条 請負は、当事者の一方がある仕事を完成することを約し、相手方がその仕事の結果に対してその報酬を支払うことを約することによって、その効力を生ずる。
 
(報酬の支払時期)
同法633条 報酬は、仕事の目的物の引渡しと同時に、支払わなければならない。ただし、物の引渡しを要しないときは、第624条第1項の規定を準用する。

(報酬の支払時期)
同法624条 労働者は、その約した労働を終わった後でなければ、報酬を請求することができない。
2 (略)

 
(注文者が受ける利益の割合に応じた報酬)
同法634条 次に掲げる場合において、請負人が既にした仕事の結果のうち可分な部分の給付によって注文者が利益を受けるときは、その部分を仕事の完成とみなす。この場合において、請負人は、注文者が受ける利益の割合に応じて報酬を請求することができる。
 一 注文者の責めに帰することができない事由によって仕事を完成することができなくなったとき。
 二 請負が仕事の完成前に解除されたとき。
 
(債務者の危険負担等)
同法536条 当事者双方の責めに帰することができない事由によって債務を履行することができなくなったときは、債権者は、反対給付の履行を拒むことができる。
2 債権者の責めに帰すべき事由によって債務を履行することができなくなったときは、債権者は、反対給付の履行を拒むことができない。この場合において、債務者は、自己の債務を免れたことによって利益を得たときは、これを債権者に償還しなければならない。

また、旧法が適用される場合、すなわち、瑕疵担保責任に関する規定が依然適用される場合、システムが完成したことをもって、ユーザーはベンダーに対して(仕事の完成に関する)債務不履行責任を追及できず、瑕疵担保責任を追及できるにとどまります。
瑕疵担保責任しか追及できないとなると、契約を解除できる場合は、契約目的を達成できない程度の重大な瑕疵があった場合に限られます。

以上のとおり、システムの完成の有無は、新民法適用下においても報酬請求権の行使との関係で重要ですし、旧民法適用下においては瑕疵担保責任の適用場面か否かという問題との関係でも重要です。

システム開発における仕事の「完成」

ところで、システム開発契約は建築請負契約と類似していると考えられています。
もちろん、主たる成果物が有形物か無形物か、完成後の成果物のイメージが事前につきやすいかつきにくいかなど、システム開発契約と建築請負契約とでは大きく違う点が多数あることは事実です。しかし、抽象的に完成までの流れを見れば、やはりシステム開発契約は建築請負契約と類似していると言い得るでしょう。

なぜシステム開発契約は建築請負契約と類似しているという話を持ち出したかと言うと、システム開発契約におけるシステムの完成の有無は、裁判例上、建築請負契約における建築物の完成の有無と同様の判断基準が採用されていることによります。
具体的には、システムの完成の有無は、ベンダーの仕事が当初のシステム開発契約で予定された最終工程までを終えたか否かを基準に判断すべき、と考えられており、多くの裁判例がこの判断基準を採用しています。

検収」と「完成」の関係

多くのシステム開発契約では、ベンダーがシステムを引渡した後、ユーザーが検収をすることが契約内容になっているかと思います。
検収は、一般的には当初のシステム開発契約で予定された最終工程でしょう。ですから、検収が完了したのであれば、原則として、システムの完成が認められると考えられます。
また、ユーザーがシステムを稼働させている場合も、稼働段階まで至ったわけですから、同様にして、システムの完成が認められると考えられます。裁判例も、稼働したシステムにつき、当該システム稼働時には遅くとも当該システムは完成していた旨を認めています。
個々の事案によるところではありますが、検収や稼働の事実は、「ユーザーがシステムの完成を確認した」という意味を含んでいると通常は考えられています。

他方、検収や稼働の事実がなかった場合はどうでしょうか。
システムの完成の判断基準を振り返ってみると、それは「ベンダーの仕事が当初のシステム開発契約で予定された最終工程までを一応終えたか否か」です。
もちろん、検収や稼働の事実は、積極的に完成を肯定する要素と言い得ます。しかし、検収や稼働の事実がないからといって「最終工程まで終えていない」ことにはならないはずです。

システム開発は、ユーザーとベンダーがシステムの完成に向けて協同して行うものです。検収や稼働も、ベンダー単体でできるものではなく、ユーザーの協力が必要です。
ベンダーが単独で実施できる作業を終えず、またユーザーの作業へ協力する態度を示していないのであれば話は別です。
しかし、そうでないにもかかわらず、ユーザーが検収を行わなかったり、稼働に必要な作業を行わなかったりした場合にも完成を認めず、ベンダーがユーザーに対して報酬を請求できないのでは酷です。
このような価値判断に立つと、ベンダーが単独で実施できる作業を終え、ユーザーの作業に協力する態度を示したにもかかわらず、ユーザーが検収等ユーザー作業を完了させなかったような場合には、システムの完成を認めてもよいと考えられます。裁判例にも、そのような判断を行ったものが見受けられます。

ところで、以上を踏まえ、システムの完成に関し、システム開発契約でどのようなことを合意しておけばよいでしょうか?
契約書チェックや契約内容の検討では、すべての条項の検討にあてはまるわけではありませんが、紛争で問題となる点から逆算して考えるという方法が有用です。
この点についてはまた別途触れることとしますが、本エントリを読まれた方は、是非一度考えてみていただきたいと思います。

「バグ」と「完成」の関係

システム開発において、バグが生じることは不可避です。そこで、バグが生じた場合の法律関係は常に問題となります。
前述のとおり、「完成」は、旧民法適用下において瑕疵担保責任の適否を決する基準として機能していました。ですから、旧民法適用下では特に大きな問題となります。

さて、繰り返しになりますが、システムの完成の判断基準は「ベンダーの仕事が当初のシステム開発契約で予定された最終工程までを終えたか否か」にあります。
また、ユーザーは債務不履行責任による保護を受けることができ、バグがあった場合にシステムの完成を認めても、ユーザーに一方的に不利益が生じるわけではありません。例えば、システムの稼働に支障をきたす重大なバグがあった場合には、債務の不履行が軽微とは言いがたく(新民法)、又は契約目的が達成できないと言いやすい(旧民法)でしょうから、完成が認められたとしても、契約解除が認められる可能性は高いでしょう。

とすれば、バグが生じていた場合であっても、システムは完成したものと扱うべきと考えられます。

(催告による解除)
民法541条 当事者の一方がその債務を履行しない場合において、相手方が相当の期間を定めてその履行の催告をし、その期間内に履行がないときは、相手方は、契約の解除をすることができる。ただし、その期間を経過した時における債務の不履行がその契約及び取引上の社会通念に照らして軽微であるときは、この限りでない。
 
(催告によらない解除)
同法542条 次に掲げる場合には、債権者は、前条の催告をすることなく、直ちに契約の解除をすることができる。
 一 債務の全部の履行が不能であるとき。
 二 債務者がその債務の全部の履行を拒絶する意思を明確に表示したとき。
 三 債務の一部の履行が不能である場合又は債務者がその債務の一部の履行を拒絶する意思を明確に表示した場合において、残存する部分のみでは契約をした目的を達することができないとき。
 四 契約の性質又は当事者の意思表示により、特定の日時又は一定の期間内に履行をしなければ契約をした目的を達することができない場合において、債務者が履行をしないでその時期を経過したとき。
 五 前各号に掲げる場合のほか、債務者がその債務の履行をせず、債権者が前条の催告をしても契約をした目的を達するのに足りる履行がされる見込みがないことが明らかであるとき。
2 次に掲げる場合には、債権者は、前条の催告をすることなく、直ちに契約の一部の解除をすることができる。
 一 債務の一部の履行が不能であるとき。
 二 債務者がその債務の一部の履行を拒絶する意思を明確に表示したとき。

バグが生じていた場合であってもシステムは完成するとなると、報酬請求権との関係が問題となりそうですが、それはまた次の機会(「バグ」と「契約不適合(瑕疵)」に関するエントリ)で触れようと思います。