納期が遅れる、見積もりが膨らむ、できあがったものが思っていたのと違う。こうしたトラブルを、特別な現場でだけ起きる話だと思っていないでしょうか。実際には、進め方を少し誤るだけで、多くのプロジェクトで起こり得ます。
ただ、リスクは種類を知って終わりではありません。どの工程で生まれ、どう評価し、どんな対策に落とし込むか。ここまでがセットになって、はじめて損失を防ぐ手が打てます。この記事では、起こりやすいリスクの全体像から、工程ごとの発生ポイント、洗い出しから監視までの手順、そして発注側が事前にできることまでを順に整理していきます。
システム開発における「リスク」とは?
そもそもリスクとは、まだ起きていないけれど、起きればプロジェクトに損害を与える「不確実な出来事」を指します。すでに起きてしまったトラブルとは、はっきり分けて扱うのが基本です。ここを混ぜてしまうと、何から手をつけるべきかという優先順位を見誤ります。
まずは入り口として、次の2つを整理しておきましょう。
- リスクと「問題」はどう違うのか
- 発注側と開発側、リスクを負うのはどちらか
リスクと「問題」はどう違うのか
違いはシンプルです。「キーパーソンが退職するかもしれない」はリスク、実際に退職して開発が止まったらそれは問題(イシュー)。これから起こるかどうかが、両者を分ける境界線です。
なぜこの区別が大切かというと、打てる手が違うためです。
リスクの段階なら、発生確率を下げたり、起きたときの影響を小さくしたりと、余裕を持って備えられます。問題になってからでは、損害を最小限に抑える後手の対応しか残りません。だからこそ、まだ起きていないうちに洗い出して向き合う姿勢が、結果としてプロジェクトを安定させます。
発注側と開発側、リスクを負うのはどちらか
「開発は委託したのだから、トラブルは開発会社の責任」と考えたくなる気持ちはわかります。ですが、リスクの種類によって責任の所在は変わります。技術選定や実装の品質は開発側の領域ですが、要件の曖昧さ、意思決定の遅れ、仕様変更の多発は、発注側に起因することが少なくありません。
ポイントは、どちらか一方が背負うものではなく、それぞれが担うリスクを切り分けて把握しておくことです。発注側が自分の責任範囲を理解しないまま進めると、認識のズレが手戻りを生み、最終的に納期と費用の両方に跳ね返ってきます。リスク管理は、決して任せきりにできるものではありません。
実際、システム開発の紛争では、裁判所は「ベンダーのプロジェクトマネジメント義務」と「ユーザの協力義務」という2つの概念を用いて、どちらにどれだけ責任があるかを判断します。ベンダーは専門家として進捗を管理し開発をリードすべき義務を負う一方、ユーザにも仕様の決定や必要な資料の提供などを適時に行う協力義務があり、両者は表裏一体の関係です。
起こりやすい5つのリスクと主な原因
システム開発のトラブルは数えればきりがありませんが、原因をたどると大きく5つの型に整理できます。やっかいなのは、これらが単独で起きるとは限らない点です。ひとつのほころびが連鎖して、別のリスクを次々と呼び込みます。
現場で頻度の高い、次の5つを順に見ていきましょう。
- 金銭リスク:見積もりのズレと追加費用
- 納期リスク:スケジュールの遅延
- 品質リスク:仕様未達と不具合の多発
- 技術リスク:技術選定と実現性の見誤り
- 組織・コミュニケーションリスク:認識のズレと体制変更
金銭リスク:見積もりのズレと追加費用
予算が想定を上回る背景には、初期見積もりの精度の低さがあります。要件が固まりきらないうちに概算を出し、開発が進むにつれて「これも必要だった」が積み重なると、追加費用がふくらんでいきます。
発注側がとくに陥りやすいのが、見積もりの「前提条件」を確認しないまま金額だけで判断してしまうケースです。どこまでが見積もりに含まれ、どこからが追加扱いになるのか、この線引きが曖昧なまま契約すると、後になって認識の食い違いが費用トラブルへ発展します。
線引きは、契約形態とも直結します。完成責任を負う「請負」は範囲が固定され、変更は追加費用の対象になりやすい一方、工数ベースの「準委任」は稼働に応じて費用が変わります。
要件が固まりきらない上流工程は準委任、仕様が固まった後の開発工程は請負、というように工程で使い分ける方法もあり、契約の組み立てにはIPAの「情報システム・モデル取引・契約書」が参考になります。
納期リスク:スケジュールの遅延
納期遅延は、たいてい楽観的すぎる計画から始まります。バッファをほとんど設けず、すべて順調に進む前提で線を引くと、たったひとつの遅れが後工程をまるごと押し出してしまいます。
引き金になりやすいのは、仕様変更と意思決定の停滞です。発注側の確認が遅れたり、関係者の合意がまとまらなかったりすれば、開発側は待つしかありません。スケジュールは開発会社だけで守れるものではありません。発注側の動きもまた、進捗を大きく左右します。
品質リスク:仕様未達と不具合の多発
できあがったシステムが期待と違う、あるいはリリース後に不具合が頻発する。この品質リスクの根は、要件定義の曖昧さとテスト不足にあります。
「だいたいこんな感じ」で進めた要件は、開発側と発注側で別々の解釈を生みます。さらにスケジュールが押すとテスト工程が削られ、本来なら開発中に見つかるはずだった不具合が、運用後になって表面化します。品質は最後の検査だけで担保できるものではなく、上流から積み上げるものだと考えておきたいところです。
この考え方は、テストや品質確認を開発の早い段階から組み込むシフトレフトと重なります。要件のあいまいさへの対策としては、初期段階でプロトタイプやモック画面を使って完成イメージを共有し、発注側と開発側の解釈のズレを早めに埋めておくと効果的です。
技術リスク:技術選定と実現性の見誤り
選んだ技術がやりたいことに合っていない、あるいはチームに扱える人がいない。技術リスクは、実装を始めてから「思ったように動かない」という形で表面化します。
新しさや流行だけで選ぶと、情報が少なく、トラブル時に頼れる人材も限られます。逆に既存資産との相性を軽視すれば、連携部分で予想外の工数がかかります。実績のある枯れた技術と、要件に本当に必要な新技術。この2つを冷静に見分ける判断が問われます。
とくに実現できるか不安の大きい要素は、本格的な開発に入る前にPoC(技術検証)やプロトタイプで先に試し、動くかどうかを確かめておくと、後工程での大きな手戻りを防げます。
組織・コミュニケーションリスク:認識のズレと体制変更
関係者の間で「言った・言わない」が積み重なると、認識のズレがじわじわ広がります。これが組織・コミュニケーションリスクです。5つのなかで最も見えにくく、しかも他のリスクの引き金にもなる、やっかいな存在です。
報告のルートが整理されていない、キーパーソンの離脱で引き継ぎが滞る。こうした状態では、決まったはずのことが現場に伝わりません。ポイントは、定期的な情報共有の場と、誰が何を決めるのかという役割の明確化です。この2つが、ズレを早めに摘み取る支えになります。役割の明確化では、作業ごとに「誰が実行し、誰が最終責任を持ち、誰に相談・報告するか」を一覧化するRACIのような手法や、意思決定者を一人に絞っておくことが有効です。また、キーパーソンの離脱に備えて、業務や設計判断を特定の人に依存させず、ドキュメント化して属人化を解消しておくことも欠かせません。
リスクはどの工程で生まれるのか
リスクを「種類」で並べると全体像はつかめます。ただ、実務で備えるには「いつ生まれるのか」という工程の視点が欠かせません。多くのトラブルは下流で発覚しますが、その芽は、たいてい上流で植えられています。IPAも、要件定義をはじめとする上流工程の強化を、手戻りや誤差を抑えるうえで重視しています。
下の表は、主な工程ごとに生まれやすいリスクと、見逃しやすい兆候を整理したものです。
工程別に生まれやすいリスクと兆候
| 工程 | 生まれやすいリスク | 見逃しやすい兆候 |
|---|---|---|
| 要件定義 | 仕様の曖昧さ・スコープのズレ | 「あとで決める」が増えていく |
| 設計 | 非機能要件の漏れ・技術選定ミス | 性能や運用の話が後回しになる |
| 実装 | 工数超過・技術的な行き詰まり | 進捗報告が「ほぼ完了」で止まる |
| テスト | 不具合の多発・テスト期間の圧縮 | テスト計画が後ろへずれ込む |
| 運用・保守 | 想定外の障害・引き継ぎ不足 | 担当者しか分からない箇所が残る |
特に設計工程で漏れやすい非機能要件(性能・可用性・運用・セキュリティなど)については、IPAの「非機能要求グレード」が、確認すべき項目を網羅したチェックツールとして役立ちます。発注者と開発者の認識のズレを防ぐことを目的に作られており、設計段階での抜け漏れ対策に有効です。
表を眺めて気づくのは、上流の小さな曖昧さほど、下流で大きな手戻りに育つという構図です。要件定義で詰めきれなかった一点が、テストや運用の段階で何倍もの修正コストになって返ってきます。工程が進むほど後戻りは難しくなります。だからこそ、早い段階での確認が、結局はいちばんの近道になります。
※参考:IPA|システム構築の上流工程強化(要件定義・システム再構築・非機能要求グレード)関連情報システム開発のリスク対策|4ステップの進め方
リスクの種類と発生工程がわかったら、いよいよ具体的な対策に落とし込みます。とはいえ、やみくもに不安を数え上げても疲れるだけです。洗い出し、評価、対応、監視。この流れに沿って進めれば、限られた時間でも効果的に手を打てます。この4ステップは、国際規格ISO 31000(JIS Q 31000)が示すリスクマネジメントプロセスにも沿った、標準的な進め方です。(※1)
進め方は次の4ステップです。
- STEP1:リスクを洗い出す
- STEP2:影響度と発生確率で評価する
- STEP3:4つの戦略で対応策を決める
- STEP4:リスク管理表で継続的に監視する
STEP1:リスクを洗い出す
最初にやるのは、起こり得ることをできるだけ多く書き出す作業です。先ほどの5つのリスクと工程別の表をたたき台にすると、抜け漏れがぐっと減ります。
このとき、思いつきだけに頼らないのがコツです。過去のプロジェクトで実際に起きたトラブルや、関係者へのヒアリングから拾い上げると、精度が上がります。担当者によって見えているリスクは違うもの。開発側と発注側、双方から声を集めることが、見落としを防ぐ第一歩になります。
STEP2:影響度と発生確率で評価する
洗い出したリスクを、すべて同じ熱量で追いかけてはいけません。本当に重要なものが埋もれてしまいます。そこで、「起きたときの影響の大きさ」と「起きる確率」の2軸で評価し、優先順位をつけます。この2軸で優先度を可視化する図は、リスクマトリクス(確率・影響マトリクス)と呼ばれます。
原則は、影響が大きく、かつ起こりやすいリスクから優先的に手を打つこと。逆に、影響も確率も小さいものは、記録だけして様子を見るという判断もあります。すべてに完璧に備えるのではなく、限られたリソースをどこへ振り向けるかを決める。そのための評価だと考えると、進めやすくなります。
STEP3:4つの戦略で対応策を決める
優先度の高いリスクには、具体的な対応策をあてがいます。対応の方向性は、大きく4つの戦略に分けて考えると整理しやすくなります。リスクごとに、どの戦略が現実的かを選んでいきましょう。
リスクへの4つの対応戦略
| 戦略 | 考え方 | 具体例 |
|---|---|---|
| 回避 | リスクの原因そのものを取り除く | 実績の乏しい新技術の採用を見送る |
| 低減 | 発生確率や影響を小さくする | 早期にプロトタイプで仕様を確認する |
| 移転 | リスクを他者と分担する | 契約や保守範囲で責任を明確化する |
| 受容 | 影響が小さい前提で受け入れる | 軽微なリスクは予備費で備える |
すべてのリスクを回避できれば理想的ですが、現実には費用や時間との兼ね合いがあります。重大なものは回避や低減でしっかり抑え、影響の小さいものは受容する。ポイントは、このメリハリです。全部に身構えるのではなく、力の入れどころを見極めることが、現実的なリスク対策につながります。
STEP4:リスク管理表で継続的に監視する
対応策を決めて満足してしまうと、状況の変化に取り残されます。プロジェクトが進むなかで新しいリスクは生まれ、評価していたリスクの確率も変わっていくからです。そこで、リスク管理表(リスク台帳)にまとめ、定期的に見直す仕組みをつくります。
管理表には、リスクの内容、影響度、発生確率、対応策、担当者、現在の状況を記録します。定例会議のたびに更新すれば、誰が何に責任を持つのかが明確になり、対応の抜けも防げます。リスク管理は一度きりのイベントではありません。プロジェクトと並走し続ける活動だと捉えておきましょう。
※1 出典:日本規格協会│「リスクマネジメント-指針 JIS Q 31000」発注側が事前に押さえたいリスク対策のポイント
ここまでの手順は、進行中のリスクを扱うものでした。一方で、発注の段階で手を打っておけば、そもそもの発生確率を下げられます。発注側が動かせるのは、技術そのものよりも「決め方」と「選び方」です。ここに発注側ならではの勝ち筋があります。
発注の前後で意識したいのは、次の3点です。
- 要件定義の曖昧さを残さない
- 契約形態とスコープを明確にする
- 信頼できる開発会社を見極める
要件定義の曖昧さを残さない
多くのトラブルは、たどっていくと要件定義の詰めの甘さに行き着きます。発注側が「何のために、何を実現したいのか」を言語化できていなければ、開発側はそれぞれの解釈で進めるしかありません。
大切なのは、業務上の課題と、それをシステムでどう解決したいのかを、できるだけ具体的に示すことです。すべてを文書で固めきれない場合でも、プロトタイプや画面イメージで早めにすり合わせれば、認識のズレを実物で確認できます。曖昧なまま進めず、不明点をその場でつぶす。この積み重ねが手戻りを減らします。
なお、性能・可用性・運用・セキュリティといった非機能要件は、発注側からは言語化されにくく、漏れやすい領域です。機能面だけでなく、こうした非機能要件も早い段階で詰めておくと安心で、確認すべき項目を網羅したIPAの「非機能要求グレード」が役立ちます。
契約形態とスコープを明確にする
契約の中身を曖昧にしたまま発注すると、追加費用や責任の押し付け合いの火種になります。請負か準委任かといった契約形態によって、成果物に対する責任の重さは変わるからです。
具体的には、請負は完成責任を負い、成果物に不備があれば契約不適合責任(かつての瑕疵担保責任)の対象になります。一方、準委任は完成責任を負わない代わりに、専門家としての善管注意義務を負います。要件が固まりきらない上流工程は準委任、固まった後の開発工程は請負、というように工程で使い分ける方法もあり、IPAの「情報システム・モデル取引・契約書」が参考になります。(※2)
あわせて確認したいのが、対応範囲(スコープ)の線引きです。どこまでが今回の費用に含まれ、どこからが追加になるのか。仕様変更が起きたときはどう扱うのか。こうした条件を発注前に書面で詰めておけば、後からの「言った・言わない」を避けられます。
信頼できる開発会社を見極める
発注先選びは、プロジェクト全体のリスクを大きく左右します。価格だけで決めないこと。実績、体制、進め方という3つの観点で見極めるのが、トラブル回避の近道です。
確認したいのは、自社の業界や開発したいシステムに近い実績があるか、プロジェクト管理の体制が整っているか、そして進捗の共有方法が明確かどうか。質問に対して誠実に、わかりやすく答えてくれるかどうかも、コミュニケーションリスクを見抜く手がかりになります。相性も含めて複数社を比べたうえで判断すれば、納得感のある選定ができます。
※2 参考:IPA│「情報システム・モデル取引・契約書」まとめ
システム開発のリスクは、金銭、納期、品質、技術、組織という5つの型に整理でき、その多くは要件定義をはじめとする上流工程に芽があります。種類を知るだけでなく、どの工程で生まれるかを意識し、洗い出し、評価、対応、監視という流れで具体策に落とし込む。ここまでやって、ようやく損失を防ぐ手が打てます。
結局のところ、リスク対策は開発会社任せにできるものではありません。発注側が自分の責任範囲を理解し、要件と契約を曖昧にせず、信頼できるパートナーを選ぶ。この準備があるかどうかで、プロジェクトの安定度は大きく変わります。
まずは、自社のプロジェクトで起こり得るリスクを書き出し、影響度と発生確率で並べてみるところから始めてみてください。見えていなかった不確実性が言葉になった瞬間に、打てる手は確実に増えていきます。
