システムのバグが出たら誰が直すの?費用は?
リリース後にバグが見つかった。誰が、いつまでに、無償で直してくれるのか――契約内容によって対応が大きく変わります。事前に知っておくべき仕組みを解説します。
「瑕疵担保責任」という仕組み
スクラッチ開発の請負契約では、納品後一定期間内に発見されたバグについて、ベンダーが無償で修正する義務を負います。これを「瑕疵担保責任」と呼びます(民法改正後は「契約不適合責任」)。
期間は契約によって異なりますが、一般的には納品後1年以内が多く、その期間内であれば開発起因のバグは無償対応が原則です。
無償対応の範囲はどこまでか
瑕疵担保責任の対象になるのは「開発時の実装ミス」に起因するバグです。以下のケースは無償対応の範囲外になることがあります。
- 仕様書に記載されていなかった要件(仕様の抜け)
- 発注者側の操作ミスや環境に起因する問題
- リリース後に変更した設定・データが原因のもの
- 第三者サービスやOSのアップデートによる影響
「バグか仕様か」の線引きはトラブルになりやすいポイントです。契約時に「バグの定義」を明確にしておくことが重要です。
バグのようでバグではない、仕様の認識齟齬という罠
ユーザーからすると明らかにおかしい動作なのに、開発者からは「仕様通りです」と返ってくる――このすれ違いはシステム開発の現場でよく起きます。
原因の多くは、要件定義の曖昧さと、機能を複雑にしすぎたことによる影響範囲の考慮不足です。仕様書に書かれた内容は正しく実装されているが、「そういう動きになるとは思っていなかった」という状態です。
このケースは厳密にはバグではないため、瑕疵担保責任の対象外になることがほとんどです。結果として仕様変更扱いとなり、追加費用が発生します。「なぜお金を払わないといけないのか」と感じる発注者と、「仕様通りに作った」と主張するベンダーの間で、プロジェクト終盤にトラブルになりやすいパターンのひとつです。
この状況を防ぐためには、要件定義の段階で「この機能はどういう状態になったら正しいか」を具体的なシナリオで確認しておくことが有効です。
瑕疵担保期間が過ぎたら
瑕疵担保期間が終了した後のバグ修正は、有償対応になります。このタイミングで保守契約を結んでいれば、保守の範囲内で対応してもらえる可能性があります。保守契約がない場合は、都度見積もりを取って対応を依頼することになります。
準委任契約の場合は異なる
準委任契約(時間単価型)で開発した場合、バグに対する無償修正義務はありません。作業の提供に対して報酬を支払う契約のため、修正対応も時間単価で別途費用が発生します。契約形態によって責任の所在が変わるため、どちらの契約で開発を進めるかは重要な判断です。
事前にしておくべき確認
- 瑕疵担保期間は何ヶ月か
- 「バグ」の定義と対象範囲はどこまでか
- 対応時間の目安(緊急対応は可能か)
- 期間後の有償対応の単価・プロセス
リリース後のトラブル対応は、契約の詳細が大きく影響します。開発中だけでなく、リリース後のことも視野に入れて契約を結びましょう。