システムの保守について

木曜日 , 12, 1月 2017 Leave a comment

コンピュータシステムについて、よくたずねられることに『保守』『保守契約』というものがあります。

システムは、「開発・構築をして、稼働し始めたら、おしまい」ということはなく、使いはじめたら日々問題なく安定して動かせるようにしていく必要があります。
この「問題なく安定して動かせるようにする」ことを『保守』、「保守を行います」という契約を『保守契約』と呼んでいます。

保守で行うこと

保守契約を結んだ場合、問題が起きたり問い合わせがあったときに即時対応できるよう、下記のようなことを行います。

  • 開発時に使用した資料や設計などドキュメントやプログラムソースコードの整理・管理
  • 開発・テストで必要になる環境の保持
  • システムを構成する製品のアップデートや業務上必要になる法制度の情報収集

これらは、いざというときに備える体制の準備です。

「システムを構成する製品のアップデートの情報収集」というのは重要な項目です。
近年はニュースなどで報道されているように、コンピュータやネットワークに対する不正な攻撃が日々とんでもなく発生しています。
構築時点では問題がないと判断されたソフトウェア製品も、稼働後になんらかのセキュリティ脆弱性が発見されることが多々あり、実際攻撃にも使用されています。
(参考事例: 『「PHPMailer」に重大な脆弱性、直ちにパッチ適用を』)
基本的に、システムの引き渡し後に発覚した脆弱性などの諸問題については、お客様の責任での対応・処置となります。
保守契約を結ぶことで、お客様に代わり構成する製品の脆弱性情報などを収集し、必要がある場合は、システムのアップデートなどを提案します。

必要に応じて下記のようなことを行います。

  • システムを構成するソフトウェアのアップデート前の事前検証
  • システムを構成するソフトウェアのアップデート
  • ハードウェアやネットワークのメンテナンス

中でも、「アップデート前の事前検証」というのは重要な項目です。
たとえば、多くのパソコンで使われているWindowsは、Windows 10になり従来のメジャーバージョンアップに匹敵するような大規模なアップデートが配信・適用されるようになりました。
事前検証なしでアップデートを適用してしまった場合、システムに重大な問題が生じ業務に支障をきたしてしまうことがあります。

私の経験では、2016年8月に配信されたWindows 10 Anniversary Update(以下、Anniversary Update)を適用した結果、Windowsのプリンタ管理方法に変更が生じて、それまで動いていたプログラムが動かなくなる現象が起きました。
帳票出力プログラムで帳票が出力できなくなるという致命的な問題でした。
経緯については、『Windows 10 Anniversary Update適用後にVB .NETで組まれたプログラムの動作が不安定になったら』にまとめました。

事前検証を行うことで、アップデート適用時のリスクをあらかじめ知ることができ、問題を回避できるようになります。

日常的な業務としては問い合わせ対応も行います。

  • 操作に関する問い合わせ
    「〇〇〇をしたいのだけれど手順はどうすればよいか」といった問い合わせです。
    お客様がシステムに慣れていくにつれ徐々に減っていきますが、年次処理などごくごくたまにしか使用しない機能を中心に割と頻繁に発生します。
  • 仕様に対する問い合わせ
    「これはできたかな?」「こうなるといいな!」といった問い合わせです。
    日常的にシステムを使っていただいていると常に発生する問い合わせで、システムの課題発見や機能改善につながります。
  • 調査
    「〇〇〇をしたら△△△になったんだけれど…」といった、システムを使っていて発生した事象に対する調査依頼などが該当します。
    調査の結果、なんらかの修正が必要になった場合、発生要因や納品後の経過時間などにより「瑕疵担保責任で対応」や「有償対応」にわかれますが、一般的に事象の発生原因の調査までは保守の範囲内で行います。

問い合わせや課題を管理し、お客様と開発者側で認識を共有することで、業務や要望の変化にシステムを適宜対応させることができるようになります。
(発生した事象が数年に一度あるかないかの例外中の例外なのか、頻度はそれほど高くはないがシステムとしても考慮すべき事象なのかを切り分け、改修の判断材料とするなど。)

保守契約を結んでいない場合はどうなるか

契約にもよりますが、納品・検収の一連の流れが完了した時点で、すべて忘れます。
(もちろん、瑕疵担保責任に備えた最小限の体制は敷きます(^-^;)

契約上問題がないのであれば、ソースコードなどデータ・ドキュメント類のバックアップなどは取りますが、契約によってはそれらをすべて返却または破棄することもあります。この場合は、作業をした人の記憶だけが頼りです。
また、開発で使用した開発環境などもハードディスク上から削除したり、クラウド上で作業を行った場合は契約解除したりしてしまいます。
保守が必要になったとき、「作ったところだから、なにかしらは知っているだろう」と思いたいところですが、あまり期待はできないと思います。

問題や問い合わせが発生した場合は、必要な資料やソースコードの取り寄せ、開発・検証環境の整備、仕様の確認、事象の調査…など、一連の作業を最初からやり直すので、対応完了までに多くの時間と費用が必要になります。

保守費について

一般的に、『保守費』はシステム構築にかかった費用から算出され、月額や年額などで保守業者へ支払います。
保守費の目安としては、構築費の10~25%程度が多く、15%前後が相場と言えると思います。

たとえば、350万円で構築したシステムの場合、年額で52.5万円程度(15%で計算)ならば、妥当と言える金額です。

ただ、保守費は契約内容により金額が大きく変動する部分です。
提示された金額を見て、「ん!?( ゚Д゚)  工工エエェェェェェェェ(゚Д゚)ェェェェェエエエ工工 」となった場合は、保守業者に保守の範囲と内容について確認をした方が良いと思います。

保守費は、「いざというときに備える体制の準備」に対しての費用と見ることができ、保険料や顧問料のような性質があります。
ですので、その月その年の中でなにも起きなかったとしても支払いの必要が生じます。

諸々の事情により「保守契約を結ばない」「保守契約を打ち切る」という選択をすることもあると思います。
この場合、保守が必要になった際に「スポット保守対応」として通常よりも割高な保守費を請求されることがあるので注意が必要です。
(会社によっては保守そのものを拒否されることもあるようです)

また、「構築時には保守契約を結ばなかったけれど、2年後に問題が生じ、やっぱり保守契約を結びたくなった」というケースもあるかと思います。
この場合、契約時点からの請求ではなく、構築時点に遡及して請求されることがあるので注意が必要です。
「構築時に保守契約を結んだものの途中契約を打ち切り、再度保守契約を結びたい」といったケースでも、打ち切った時点に遡って請求されることがあります。

保守契約を結べばシステムで起きる問題すべてに対応してもらえるのか?

「では、保守契約を結べばシステムで起きる問題すべてに対応してもらえるのか?」という疑問がわきますが、これはほとんどのケースで「NO」です。
保守契約を結んでいても、契約で定めた範囲を超える作業・負荷が生じた場合、別途費用が発生します。

たとえば、「月に3回までの問い合わせ、のべ20時間分まで対応」と定めてある場合、4回目以降の問い合わせや、1回目の調査でも20時間を超える作業が生じたときは、保守費とは別に費用が発生します。

「全部コミコミで面倒を見て!」と言いたくなるところですが、この場合、前述した構築費の10~25%で算出とはならず、過去の実績(類似するケースなど)や考えられるリスクなどから算出されると思います。
(技術者は起こりうる事象を多方面多角的に考え悲観的に見る傾向が強いので、それらすべてに対応するとしたら…と見積もり、おそらく高額になります(^-^; 逆に、著しく安すぎる金額が提示された場合は、起こりうるケースを過少に評価しすぎていて、実際に問題が起きたときに対応が取れないといったこともあるようです。)


『保守』について書きましたが、ぶっちゃけ『運用』と呼ばれる領域も含まれています。
定義的には、保守は問題が起きないように保持する業務、運用はシステムを安定して動かす業務とされていたはずです。
最近は、「運用」「保守」がセットになっていることが多く、どちらも「システムをうまいこと動かす」という目的は共通しているので、はっきりとわけずにモヤっとしたまま、ふたつまとめて「サポート」と呼んだりもします。
実際にどこまでを範囲とするのかは、契約次第といった感じでしょうか。

「保守契約を結んだ方がよいのか?」というのが一番の関心事だと思うのですが、私感では「いざというときに相談できる相手がいる」というのは大きなメリットだと思います。
システムを長く使い続けるためには日常的に課題を整理解決していく必要があり、円滑に課題を整理解決する手段として保守契約は有効な解なのではないかと思います。

Please give us your valuable comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください