システムのバグが出たら誰が直すの?費用は?

リリース後にバグが見つかった。誰が、いつまでに、無償で直してくれるのか――契約内容によって対応が大きく変わります。事前に知っておくべき仕組みを解説します。

「瑕疵担保責任」という仕組み

スクラッチ開発の請負契約では、納品後一定期間内に発見されたバグについて、ベンダーが無償で修正する義務を負います。これを「瑕疵担保責任」と呼びます(民法改正後は「契約不適合責任」)。

期間は契約によって異なりますが、一般的には納品後1年以内が多く、その期間内であれば開発起因のバグは無償対応が原則です。

無償対応の範囲はどこまでか

瑕疵担保責任の対象になるのは「開発時の実装ミス」に起因するバグです。以下のケースは無償対応の範囲外になることがあります。

  • 仕様書に記載されていなかった要件(仕様の抜け)
  • 発注者側の操作ミスや環境に起因する問題
  • リリース後に変更した設定・データが原因のもの
  • 第三者サービスやOSのアップデートによる影響

「バグか仕様か」の線引きはトラブルになりやすいポイントです。契約時に「バグの定義」を明確にしておくことが重要です。

バグのようでバグではない、仕様の認識齟齬という罠

ユーザーからすると明らかにおかしい動作なのに、開発者からは「仕様通りです」と返ってくる――このすれ違いはシステム開発の現場でよく起きます。

原因の多くは、要件定義の曖昧さと、機能を複雑にしすぎたことによる影響範囲の考慮不足です。仕様書に書かれた内容は正しく実装されているが、「そういう動きになるとは思っていなかった」という状態です。

このケースは厳密にはバグではないため、瑕疵担保責任の対象外になることがほとんどです。結果として仕様変更扱いとなり、追加費用が発生します。「なぜお金を払わないといけないのか」と感じる発注者と、「仕様通りに作った」と主張するベンダーの間で、プロジェクト終盤にトラブルになりやすいパターンのひとつです。

この状況を防ぐためには、要件定義の段階で「この機能はどういう状態になったら正しいか」を具体的なシナリオで確認しておくことが有効です。

瑕疵担保期間が過ぎたら

瑕疵担保期間が終了した後のバグ修正は、有償対応になります。このタイミングで保守契約を結んでいれば、保守の範囲内で対応してもらえる可能性があります。保守契約がない場合は、都度見積もりを取って対応を依頼することになります。

準委任契約の場合は異なる

準委任契約(時間単価型)で開発した場合、バグに対する無償修正義務はありません。作業の提供に対して報酬を支払う契約のため、修正対応も時間単価で別途費用が発生します。契約形態によって責任の所在が変わるため、どちらの契約で開発を進めるかは重要な判断です。

事前にしておくべき確認

  • 瑕疵担保期間は何ヶ月か
  • 「バグ」の定義と対象範囲はどこまでか
  • 対応時間の目安(緊急対応は可能か)
  • 期間後の有償対応の単価・プロセス

リリース後のトラブル対応は、契約の詳細が大きく影響します。開発中だけでなく、リリース後のことも視野に入れて契約を結びましょう。