第4 バグが発見された場合

1. 重大な瑕疵について(争点3)

(1)「瑕疵」について

コラム「システム開発作業中におけるトラブル」でお伝えしたとおり、システム開発作業中にまつわるトラブルは、まず、システムが「完成」しているかどうかを検討する必要があります(争点1)。そして、システムが「完成」していると判断される場合には、上記の図にあるとおり、瑕疵があるかどうか(争点3-1)、その瑕疵が重大なものかどうか(争点3-2)が問題となります。このコラムでは、これらの争点について紹介したいと思います。

(2)「瑕疵」にあたるか否かの判断基準(争点3-1)

そもそも、ソフトウェアにおける「瑕疵」とは、個々の契約ごとに定められる「仕事の内容・性質」と納入されたソフトウェアとの不一致であるとされています。

しかし、一口に不一致といっても、様々なものがあるので、裁判所においては、「瑕疵」の有無の認定をケースに応じて個別具体的に判断せざるをえません。

この点について判断した裁判例としては、東京地裁平成9年2月18日判決があります。この裁判例によれば、およそバグであればすべて瑕疵にあたるのではなく、バグのなかでも「遅滞なく補修できない」か「代替措置が講じられない」ものが「瑕疵」にあたると述べられています。

また、契約書に「瑕疵」の定義が規定されていることもあり、その文言によっても「瑕疵」の範囲が左右されます。

(3)「瑕疵」が重要なものかどうか(争点3-2)

一般に、請負契約において、注文主は、(1)その瑕疵の修補が不可能である、(2)その瑕疵修補が可能であっても、長期間を要する、といういずれかの場合には、契約の目的を達することができないとして、契約を解除することができます。他方で、これのいずれにも該当しない場合には、契約の目的は達成できるものとして、契約の解除をすることはできません。

そこで、発見されたバグが契約の目的が達成できないといえるだけの「瑕疵」に当たるのかが問題なります。

この点が争点となった裁判例としては、東京地裁平成14年4月22日判決と東京地判平成16年12月22日判決があります。前者は、在庫照会に関するシステムだったのですが、在庫の検索処理に約30分以上の時間を要し、システム内容を変更した後の朝は起動に数十分の時間を要するというバグが発見された事案です。裁判所は、契約の目的を達成できないほどの「瑕疵」にあたるとして、契約の解除を認めました。後者も在庫照会に関するシステムなのですが、300件の在庫引当に44分以上の時間を要し、一括在庫引当中には他の商品マスタを使用する処理ができないというバグが見つかった事案でした。これも、裁判所は、契約の目的が達成できないとして、解除を認めました。

他方で、解除が認められなかった例としては、商品コードの桁が多く、使い勝手が悪い上、伝票が一画面確認できず、数値入力が煩雑であったという東京地裁八王子支部平成15年11月5日判決の事案です。

2. 「瑕疵」の原因について

瑕疵による解除の場合、瑕疵の原因がベンダーとユーザーのいずれの行為によるものか争いになることもあります。これは、民法636条によって瑕疵が委託者の「指図」によるものある時には受託者が責任を負わないとする規定があるため、問題となります。すなわち、もし重大なバグがあっても、それがユーザーの「指図」によって発生したものであれば、ベンダーが責任を負わないという結論になります。特に、ユーザーの要望事項が開発途中で増加し、増加した仕事の部分にバグがみつかった場合には、ユーザーの「指図」によってバグが生じたものかどうかが争点となります。

この点を判断した裁判例としては、ソフトウェア開発に関するものを判断したものはありません。しかし、建築工事請負に関して、請負人は専門的技術を十分に駆使して工事をすべきであるから、注文者の指示があったというだけで、軽々に636条を適用して請負人の責任を免除すべきではないと判示するものが多いです(東京高判昭和52年11月30日など)。また、必ずしも適切でない注文者の指示を請負人が十分に吟味せずこれに従った結果、工事に瑕疵が生じた場合には、請負人の瑕疵担保責任は免除されないとする裁判例もあります(京都地判平成4年12月4日)。

そこで、ユーザーとしては、ユーザーがソフトウェアの各開発工程において、ベンダーに対して要望した事項は、636条の「指図」ではなく、ソフトウェア開発の専門的知識・技術を有するベンダーによる十分な分析・検討を経ることを予定したものであったこと、ベンダーから技術的な困難性の指摘があれば、柔軟に変更することを予定したものであったことを念頭に置いた主張を行うべきと考えられます。

3. 解除の際の催告と意思表示

(1)催告

このように、「完成」したシステムに契約の目的が達成できないほどの重大な瑕疵がある場合、ユーザーは契約を解除できるわけですが、ユーザー側がいきなり解除をできるかどうかが問題になります。

この点、民法635条には催告を要するとの規定はあませんが、債務不履行解除の規定である民法540条や同541条を類推適用して、相当の期間を定めて催告した後でなければ解除することができないとするのが公平かつ妥当です。

ただし、バグが発見さる前から、度重なる開発期間の延長等がなされていれば、事前に催告なく直ちに解除をしても不合理と認められないでしょう

そして、催告をする際には、不具合の内容・程度について具体的に特定したうえで催告をすべきです。具体的な特定を欠く催告をして解除をしても、催告によりベンダーには修補の機会が与えられていないのであるから、それに続く解除は要件を欠き、無効であると判断される可能性があります。

(2)解除の理由

次に、解除の理由を特定するべきかどうかが問題となります。

この点が問題となった事案としては、東京地判16年12月22日があります。これは、解除後に主張された不具合については全く修補の機会が与えられていないから、解除後に認識した自由を解除原因として追加して主張することはできないとの主張がベンダーからなされた事案です。裁判所は、「ソフトウェア開発の請負契約においては、不具合の具体的な認識を要するとすると、専門家ではない注文者にとって酷であって相当ではない」として、「解除の意思表示には、必ずしも解除原因を示す必要はなく、複数の解除原因による解除を単一の意思表示によってすることができるのであり、解除の意思表示にあたってある理由を掲げても、とくにそれ以外の理由によっては解除しない旨を明らかにする等特段の事情がない限り、当該意思表示は解除当時存在していたすべての理由に基づき、およそ契約を一切終了させるという意思表示であると考えられる」と判示しました。つまり、特にそれ以外の理由によって解除しない旨を明らかにしない限り、後から発見されたバクを解除理由として追加することは許されるのです。

とはいえ、修補を求める不具合の内容については、催告の時点で判明しているものは可能な限り列挙しておくことで、その後に契約を解除した際、修補の機会が与えられなかったとのベンダーの主張を封じておくべきであるでしょう。

(3)バグ修正の際のベンダー側からの追加請求

当然、バグを検知し修正する責任は原則としてベンダーにあります(東京地判平成16年12月22日判決)。そのため、バグを修正した場合でも、ベンダーは追加の報酬請求はできないものが原則であると考えられます。

もっとも、①もともとの受託範囲にバグの修正が含まれていないのが明確であること、②ユーザー側も納品後にバグが発生する可能性を認識していたこと、③バグの修補に関する費用の算定方法が明確であること等の事情があれば、バクの修補に追加報酬の請求をすることも認められる可能性があります。

いずれにしても、バグの修補に関する追加費用請求をする場合には、契約書や見積書などにあらかじめ追加費用の算定方法などを定めておくことが求められ、そのような定めがないときには、追加請求はできないといえます。

4. 紛争の予防のためには(ベンダーの立場から)

以上みてきた瑕疵担保責任は無過失責任で、ソフトウェアの瑕疵によって受託者が負う責任の範囲があまりにも広範になるおそれがあります。
そこで、ベンダーは、契約締結時に以下のような配慮をすることが考えられます。

①まず、瑕疵担保責任について「受託者の責めに帰すべき事由に限る」との規定を定め、無過失責任から過失責任に転換することが考えられます。

瑕疵担保責任は原則として受託者が無過失でも認められる責任ですが、それを、受託者が過失のある場合のにも認められるものと規定するわけです。

このような受託者(ベンダー)の責任を過失責任とする規定があると、例えば、仕様書のとおりに開発したのに当該ソフトウェアが良好に稼動しないようなときであっても、仕様書の内容の決定に際してベンダーの責めに帰すべき事由がなかったのであれば、ベンダー側には帰責事由がないとして瑕疵担保責任は負わないとの結論になりやすいと考えられます。

ただし、このような限定規定を入れたとしても、仕様書や委託者の指示が不適当であることをベンダーが知りながら、何らそのことをユーザーに告げずにソフトウェアの開発をした場合、その責任を免れないというべきでしょう。

② 次に、アフターフォロー(修補)の期間を限定することが考えられます。

委託者からの請求により、無償で受託者が修補をする義務を定めることが一般的ですが、この義務を無期限に認めると、受託者の負担が過大となりますので、期間の制限を設ける必要があります。

民法上の瑕疵担保責任の追及期間は引渡から1年であるので、これにならって、「検査合格の日から1年間」とすることも多いです。ただし、場合によっては、6か月程度まで短縮することを考えてもよいかと思います。

③ さらに、修補の対象となるバグの範囲を限定することも考えられます。

一般に、受託者の瑕疵修補責任は、瑕疵を完全に修補するまで存続するとも考えられます。しかし、契約書に「瑕疵が重要でない場合において、合理的範囲で修補の努力を繰り返しても修補できないときはこの限りでない」という規定を入れて、一部の瑕疵修補責任を免除することも考えられます。

他方で、単なる免除だけでは不都合と考えられる場合には、この瑕疵については損害賠償の規定により、受託者が責任を取ると定めることも可能です。

④ 最後に、瑕疵担保責任の効果としての損害賠償義務を限定することも考えられます。

民法の原則は「履行利益を対象とし、通常損害および特別事情による損害のうち、予見可能な損害として相当因果関係が認められる範囲」での損害賠償が認められますが、ソフトウェア開発の場面における特別事情に基づく損害は、一般的には予測することができたとしても、極めて巨額な損害になる可能性があります。そこで、契約書に「委託者に直接の結果として、現実に被った通常の損害のみに限り、逸失利益、特別事情による損害や第三者に生じた損害については賠償責任を負わない。」といった規定を入れて、特別事情による損害等については、受託者の損害賠償責任の範囲外であるとして、その責任を限定することが考えられます。

また、損害を定める根拠となる範囲を限定するのではなく、具体的な金額などにより、損害賠償額の上限を定める場合もあります。たとえば「(受託者の)損害賠償責任は、〇〇円を限度とする。」「(受託者の)損害賠償責任は、本契約の契約金額を上限とする。」(これには、プロジェクト全体の受注金額総額としたり、個々の開発の個別契約の契約金額に限定する等のバリエーションがある)等の規定をすることが考えられます。

これらの対処は、ソフトウェアに瑕疵がある場合には、受託者がその委託料に見合った限度まででのリスクを負担するべく、その責任を制限するために規定されるものです。

このように、損害賠償の範囲に契約金額に応じた上限を設けるかどうかは、実務上よく問題となりますが、受託者側としては、損害賠償の額に上限をつけないと、その契約によって得る利益をはるかに上回った損害賠償を負うおそれがあるので、契約締結の際には、どの程度のリスクを負担するのかについて考慮した上、相手に「損害賠償の額に上限をおいてリスクの限定ができない前提であれば、そのリスクを織り込むために契約金額は上昇することとなる」などと説明を交えながら、上限額を設定することを持ち掛けるべきです。

5. 今回のコラムのまとめと次回のコラムについての紹介

以上、システム開発作業中におけるトラブルのうち、重大な瑕疵について見てきました。以下、ベンダー側とユーザー側の双方からの注意点をまとめます。

まず、ベンダー側としては、システムが完成している場合でも、バグが発生しているときは、バグ検知・修正の責任は原則としてベンダーにあり、バグが瑕疵と認められれば契約を解除される可能性があります。

契約の目的が達成できないほどの重大なバクがあると認められるのは「遅滞なく補修できない」、「代替措置が講じられない」バグですので、原則として、解除されてしまいます。ただし、重大なバグ検知・修正をした場合でも、協議をして、解除をしないで済ますことも十分に考えられますし、場合によっては追加報酬の請求をすることも認められる可能性がありますので、重大なバグが検知された場合には、ユーザーと誠実に対応することが重要です。

次に、ユーザー側としては、バグが発生された場合でも、それが契約の目的が達成できなければ契約を解除できますが、さもなければ、システムが完成し解除もできないものとして代金を支払わなければならないこととなりますので、これを念頭に置いて対応することが必要です。

まずは弁護士事務所へお気軽にご相談ください!

  • さいたま大宮 048-662-8066 対応時間.9:00~21:00
  • 上野御徒町 03-5826-8911 対応時間.9:00~21:00

法律相談は、すべて当事務所にお越しいただいた上で実施いたします。
電話での法律相談やメールでの法律相談はいたしかねますので、あらかじめご了承ください。
また、初回の法律相談のお申し込みは、すべて、お電話またはご相談申込フォームからお願いいたします。

ページ先頭へ