システム開発の見積もりチェックポイント - 内訳の詳細と妥当性の見極め方
システム開発を外注する際、適切な見積もりを得ることは非常に重要です。見積もりの内容によって、プロジェクトの成否が大きく左右されるからです。しかし、システム開発の見積書は複雑で、専門的な知識がないとチェックが難しいものです。そこで本記事では、システム開発の発注担当者の方に向けて、見積書の内訳や妥当性の見極め方を解説します。
システム開発の見積もりが重要な理由
見積もりがプロジェクト成功の鍵を握る
システム開発プロジェクトを成功させるためには、適切な見積もりが不可欠です。見積もりの目的は、プロジェクトに必要な作業量やコストを事前に把握し、適切な予算や体制を確保することです。
見積もりの精度が低いとトラブルの原因に
見積もりの精度が低いと、以下のようなトラブルを招く恐れがあります。
・予算不足による開発の中断や品質低下
・納期遅延によるビジネスチャンスの損失
・要件漏れによる仕様変更の発生
・過剰品質による無駄なコストの発生
したがって、見積もりの段階でしっかりとチェックを行い、適正な金額であることを確認することが重要なのです。
見積書の内訳と各項目の意味
まずは、見積書の内訳を理解することから始めましょう。
要件定義・設計・開発・テストなどの内訳
一般的なシステム開発の見積書には、以下のような項目が含まれています。
各工程の作業内容と必要な工数を明確にすることが重要です。
・要件定義:システムの要件を明確化するための作業
・設計:システムの基本設計や詳細設計を行う作業
・開発:設計に基づいてシステムを実装する作業
・テスト:システムの動作を検証する作業
・導入・移行:システムを本番環境に導入する作業
・プロジェクト管理:進捗管理や課題管理などを行う作業
これらの項目は、さらに詳細な作業に分解されます。たとえば、設計フェーズであれば、以下のような内訳になります。
・概要設計
・基本設計
・詳細設計
・データベース設計
・UI/UXデザイン
また、各作業には人件費やツール代などのコストが積算されます。開発費用の多くを占めるのは、エンジニアや担当者の人件費です。開発で使用するツールやサービスの費用も見落とさないようにしましょう。たとえば、以下のような内訳が見積書に記載されるでしょう。
・プロジェクトマネージャー:○○人日
・システムエンジニア:○○人日
・プログラマー:○○人日
・デザイナー:○○人日
・ドキュメント作成:○○人日
・ミーティング:○○人日
・ツール導入費用:○○円
・クラウド利用料:○○円
これらの数字の妥当性を見極めるには、過去の類似プロジェクトの実績値と比較したり、複数の会社から見積もりを取得して相場を確認したりすることが有効です。
加えて、見積書には前提条件や作業範囲が明記されているはずです。同じシステム開発でも、開発会社によって見積もりに含まれる作業範囲が異なることがある。事前に前提条件を確認し、認識の齟齬がないようにする。
たとえば、次のような条件が記載されているかもしれません。
・要件定義は貴社にて実施するものとする
・外部システムとの連携は○○社の支援を前提とする
・データ移行は○○件を想定する
・運用保守は見積もりに含まない
これらの条件は、見積もり金額に大きく影響します。自社の想定と齟齬がないか、しっかりとチェックしておく必要があります。
システム開発会社による見積もり金額の違い
次に、見積もりを複数の会社から取得した際に、金額に大きな開きがあった場合の原因を考えてみましょう。
よくある理由の1つは、機能やクオリティの範囲の違いです。安い見積もりは、最低限の機能のみを実装する前提だったり、テストの工数を削っていたりする可能性があります。反対に、高い見積もりは、充実した機能を実装し、十分なテストを行う前提だったりします。
もう1つの理由は、リスクに対する考え方の違いです。たとえば、新しい技術を採用するプロジェクトの場合、トラブル発生のリスクが高くなります。リスクを見越して工数に余裕を持たせる会社もあれば、リスクを考慮せずに最低限の工数で見積もる会社もあるでしょう。
見積もりの算出方法
また、見積もりの算出方法にも違いがあります。たとえば、以下のような方法があります。
・トップダウン法:過去の類似案件の実績から全体の工数を概算する
・ボトムアップ法:タスクを細分化し、各タスクの工数を積み上げる
・パラメトリック法:規模や複雑度からパラメータを定義し、工数を算出する
・プライスツーウィン法:顧客の予算から逆算して工数を決める
一般的には、ボトムアップ法が最も精度が高く、プライスツーウィン法は顧客の予算を優先するため精度は低くなります。
以上のように、見積もり金額の違いには、それぞれ理由があります。安易に安い見積もりを選ぶのではなく、見積もりの前提条件を確認し、自社の要件とマッチしているかを見極める必要があります。
開発手法(ウォーターフォール型 vs アジャイル型)の違いが与える影響
システム開発の見積もりを行う上で、採用する開発手法の違いが大きな影響を与えます。代表的な開発手法であるウォーターフォール型とアジャイル型では、見積もりの考え方やアプローチが大きく異なります。
ウォーターフォール型の開発では、要件定義、設計、実装、テスト、リリースという一連の工程を順番に進めていきます。各工程が完了するまで次の工程に進まないため、見積もりの段階で全体の作業量を正確に見込む必要があります。そのため、綿密な計画と詳細な設計書が不可欠となり、見積もりには多くの時間と労力がかかります。
一方、アジャイル型の開発では、短いイテレーション(反復)を繰り返しながら、少しずつ機能を追加・改善していくのが特徴です。詳細な要件が固まっていなくても開発を始められるため、見積もりは大まかな規模感を示すレベルにとどまることが多いです。ただし、イテレーションを重ねるごとに見積もり精度を高めていくことが求められます。
ウォーターフォール型の見積もりは、プロジェクト全体の予算や納期を確定させるのに向いている反面、柔軟性に欠けるというデメリットがあります。仕様変更が発生した場合、見積もりの大幅な修正が必要になります。
これに対してアジャイル型の見積もりは、詳細な計画は立てずに大まかな方向性を示すだけなので、仕様変更にも柔軟に対応できます。ただし、総コストや完了時期があいまいになりがちなので、発注者側の理解と合意が不可欠です。
設計書や仕様書のレベル感の差が生み出す見積もりのバラつき
見積もりの精度は、設計書や仕様書の完成度に大きく左右されます。発注者から提示された資料のレベル感によって、見積もり金額が大きく変動する可能性があるのです。
例えば、発注者側で用意した設計書が抽象的で大まかなレベルにとどまっている場合、開発者は細部の仕様を想定して見積もりを行う必要があります。しかし、その想定が実際の要件とずれていると、見積もり金額が過大または過小になってしまいます。
一方、発注者側が詳細な設計書や仕様書を用意している場合は、開発者はそれをもとに正確な見積もりを行うことができます。ただし、その分発注者側の負担は大きくなります。
このように、設計書や仕様書の粒度が細かいほど正確な見積もりが可能になる反面、作成に手間がかかるというトレードオフがあります。
発注者と開発者の間で、設計書や仕様書のレベル感を事前にすり合わせておくことが重要です。両者の認識に齟齬があると、見積もりの段階で大きなトラブルの原因になりかねません。
見積もりの妥当性チェックのポイント
では、具体的に見積もりの妥当性をチェックするには、どのような点に注目すればよいでしょうか。
まず確認したいのは、作業範囲が明確になっているかどうかです。先述の通り、見積書には前提条件や作業範囲が記載されているはずです。自社の要件定義書と照らし合わせて、過不足がないかを確認しましょう。
次に、工数の積算根拠を確認します。見積書には、各作業に割り当てられた工数が記載されています。この数字が妥当かどうかを判断するのは難しいかもしれません。しかし、「要件定義:10人日、基本設計:5人日、開発:30人日」といった具合に、大まかな比率は見えてきます。要件定義や設計の工数が極端に少ない場合は、手抜きをするつもりなのか、関連するドキュメントが既に存在していることを前提としているのか、確認が必要です。
また、リスクへの考慮も重要なポイントです。新しい技術を採用する場合や、複雑なシステム連携が必要な場合は、想定外の手戻りが発生するリスクがあります。こうしたリスクに対して、どの程度の工数が見込まれているかをチェックしましょう。
さらに、提示された金額の根拠を確認することも大切です。たとえば、ツールのライセンス費用や、クラウドサーバーの利用料など、見積書に記載されている金額が適正かどうかを、市場価格と比較して判断します。
最後に、開発以外の条件も明確になっている必要があります。たとえば、次のような点です。
・検収条件:どのような基準でシステムの完成を判断するのか
・瑕疵担保責任:システムの不具合に対する責任の所在と範囲
・知的財産権:開発したシステムの著作権や特許権の帰属
・機密保持:開発過程で知り得た情報の取り扱い
これらの条件は、契約書に明記されるべき事項ですが、見積もりの段階で認識の齟齬があると、後々トラブルの原因になります。見積書や提案書の中で言及されていることを確認しておきましょう。
正確な見積もりを得るための発注者の心構え
システム開発の見積もりを依頼する際、発注者側の準備や姿勢が見積もりの精度に大きく影響します。ここでは、正確な見積もりを得るための発注者の心構えについて詳しく解説します。
RFPやシステム化要件の明確化が見積り精度を上げる
RFP(Request for Proposal)は、発注者が開発者に向けて発行する提案依頼書のことです。RFPには、システム開発の目的や背景、求める機能や性能、納期、予算など、プロジェクトの全体像を明記します。
RFPを作成することで、発注者自身が要件を整理し、明確化することができます。漠然とした idea を具体的な形にすることで、開発者とのコミュニケーションがスムーズになり、見積もりの精度が上がります。
また、システム化する業務の範囲や、実現したい機能を明らかにすることも重要です。現状の業務フローを可視化し、どの部分をシステム化するのかを特定しましょう。その上で、必要な機能をまとめた要件定義書を作成します。
要件定義書は、システムに求める機能や性能を詳細に記載したドキュメントです。画面遷移や入出力データ、外部システムとの連携など、できるだけ具体的に記述することが肝要です。
RFPと要件定義書は、見積もりの重要なインプットになります。これらの資料が不十分だと、開発者は想定で見積もりを行うことになるため、精度が落ちてしまいます。発注者は、自社のニーズを正確に伝えるための材料を用意する必要があるのです。
曖昧な表現を避け、具体的な数値指標を示すことの重要性
要件定義の際によく見られるのが、曖昧な表現の使用です。例えば、「高速に処理できること」「使いやすい画面であること」など、抽象的な表現では、開発者は要件を正確に理解できません。
「高速」とは具体的にどの程度の速度を求めているのか、「使いやすい」とはどういう状態を指すのか、数値や事例を用いて説明する必要があります。定量的な指標を示すことで、開発者は適切な見積もりを行うことができます。
例えば、「データ登録の処理時間を3秒以内にすること」「タブレット端末での利用を想定し、画面サイズは10インチとすること」など、具体的な数字を示すことが重要です。
また、システムの利用者数や、想定されるデータ量なども開示しましょう。「同時アクセス数100名程度」「1日あたりのデータ登録件数1000件」など、システムの規模感を伝えることで、より正確な見積もりが可能になります。
納得するまで開発会社と認識のすり合わせを行う
見積もりの依頼に際しては、開発会社とのコミュニケーションが欠かせません。RFPや要件定義書を送付して終わりではなく、開発会社からの質問に丁寧に回答し、双方の認識を擦り合わせることが重要です。
開発会社から見積もり結果が提示されたら、内容を精査しましょう。見積もりの根拠や前提条件を確認し、自社の要件と齟齬がないかをチェックします。疑問点があれば、納得するまで説明を求める粘り強さが必要です。
開発会社との認識の相違を放置したまま見積もりを受け入れると、後々大きなトラブルに発展する恐れがあります。実際の開発フェーズで、想定外の手戻りが発生したり、スケジュールや予算が大幅にオーバーしたりするリスクがあるのです。
見積もりの段階で、しっかりと意思疎通を図ることが肝要です。顔を合わせての打ち合わせを重ね、要件の解釈や実現方法について認識を共有しましょう。その際、専門用語を多用せず、なるべく平易な言葉で説明するよう心がけることが大切です。
発注者側に IT の知見が乏しい場合は、社内の情報システム部門や、外部のコンサルタントに協力を仰ぐのも一つの手です。第三者の視点を入れることで、開発会社との認識の違いに早期に気づくことができるでしょう。
以上のように、RFPやシステム化要件を明確にし、具体的な数値指標を示し、開発会社とねばり強くコミュニケーションを取ることが、正確な見積もりを得るための発注者の心構えといえます。見積もりは、プロジェクト成功の第一歩です。発注者が主体的に関わり、良質なインプットを提供することが何より重要なのです。
トラブルを避けるための見積書チェックリスト
せっかく依頼した見積もりが、実際の開発フェーズでトラブルの原因になっては本末転倒です。見積書のチェックポイントを一覧化し、確認漏れを防ぎましょう。
- 要件定義の内容と見積もり内容に齟齬がないか
- 見積もり金額の計算根拠は明確か
- 追加費用が発生する可能性はあるか
- 作業範囲外の項目はないか
- 作業工程ごとのスケジュールは妥当か
- 前提条件に認識の食い違いはないか
など、チェック項目を洗い出して、しっかりと確認作業を行いましょう。
見積もりの依頼から契約までの標準的な流れ
一般的なシステム開発の見積もり依頼から契約までの流れは、次のようになります。
- RFPの作成と開発会社への提示
- 開発会社からの質問に回答、打ち合わせを実施
- 開発会社から見積書や提案書が提出される
- 見積書の内容を精査し、疑問点は説明を求める
- 複数社の見積もりを比較し、最適な会社を選定する
- 契約条件を協議し、正式な契約を締結する
標準的な期間としては、RFP作成から契約締結まで、2〜3ヶ月ほどかかるケースが多いようです。ただし、提案依頼の内容や、開発規模の大きさなどによっても異なるので、あくまで目安と考えておきましょう。
システム開発の失敗事例に学ぶ見積もりの重要性
適切な見積もりを行うことは、システム開発プロジェクトを成功に導く上で非常に重要な要素です。見積もりを誤ると、納期遅延やコストオーバー、品質の低下など、様々な問題を引き起こすリスクがあります。ここでは、実際にあったシステム開発の失敗事例を紹介し、その教訓について考えます。
見積りの甘さが招いた大惨事
ある大手小売企業が、在庫管理システムの刷新プロジェクトを立ち上げました。発注者側のプロジェクトマネージャーは、システム開発の経験が浅く、安易に期間と予算を決めてしまいました。開発会社から見積もりを取る際も、詳細な要件定義をせずに、大まかな機能リストを提示しただけでした。
開発会社は、提示された情報をもとに見積もりを行いましたが、要件があいまいだったため、必要な工数を大幅に引き下げた見積もりを提出しました。発注者側は、安い見積もりを提示した開発会社を選定し、プロジェクトを開始しました。
しかし、開発が進むにつれ、当初の要件定義では不十分だったことが明らかになりました。発注者から次々と仕様変更の要求が出され、それに伴い工数が増大していきました。開発会社は、当初の見積もりでは収まらないことを訴えましたが、発注者側は予算を増やすことを拒みました。
結果、開発会社は赤字を覚悟で開発を続けることになり、納期は大幅に遅れ、システムの品質も低下してしまいました。最終的に、在庫管理システムは完成したものの、バグが多く、使い物にならない状態でした。発注者は、追加の予算を投じて別の開発会社に修正を依頼することになり、膨大な時間と費用を浪費してしまったのです。
この事例から学ぶべきことは、見積もりを行う際に、曖昧な要件定義をしてはいけないということです。安易に低い見積もりを出させるのではなく、しっかりとした要件定義を行い、必要十分な工数を見積もることが重要です。また、安価な見積もりを提示した会社を安易に選んではいけません。見積もり内容の妥当性を検討し、開発会社の技術力や実績を見極める必要があります。
変更管理が機能せず、当初見積りから大幅に超過
ある自治体が、住民情報システムの再構築プロジェクトを実施しました。プロジェクト開始時に、発注者側は詳細な要件定義を行い、開発会社から見積もりを取得しました。開発会社は、要件定義をもとに必要な工数を見積もり、プロジェクトは順調にスタートしました。
しかし、開発が進むにつれて、発注者側から仕様変更の要求が相次ぎました。当初の要件定義では想定していなかった機能追加や、画面デザインの変更などです。開発会社は、変更管理のプロセスを定めていたものの、発注者側がそれを無視して次々と変更を求めてきたため、プロセスが形骸化してしまいました。
その結果、開発工数が当初の見積もりを大幅に超過し、納期が延期されることになりました。発注者側は、予算不足に陥り、追加の予算を確保するのに苦労しました。開発会社も、急な仕様変更への対応に追われ、品質管理が疎かになってしまいました。
最終的に、システムは完成したものの、当初の予定から大幅に遅れ、予算も2倍近くに膨らんでしまいました。また、十分なテストが行えなかったため、リリース後に多くの不具合が発生し、住民サービスに支障をきたす事態となりました。
この事例から学ぶべきことは、変更管理のプロセスを確立し、それを確実に実行することの重要性です。要件定義の段階で、ある程度の変更は想定されますが、無秩序に変更を受け入れてはいけません。変更の影響度を見積もり、コストや納期への影響を検討した上で、必要な変更のみを受け入れるべきです。また、発注者側にも、変更管理の重要性を理解してもらい、合意されたプロセスを遵守してもらう必要があります。
金額だけで発注先を選定したことで泥沼化
ある中堅企業が、社内の業務効率化を目的として、ワークフローシステムの導入を決めました。複数の開発会社から見積もりを取得したところ、ある会社が他社の半分以下の金額で受注を希望してきました。発注者側は、予算が限られていたこともあり、安い見積もりを提示したこの会社を選定しました。
しかし、プロジェクトが始まると、この開発会社の技術力の低さが明らかになりました。設計書や仕様書のクオリティが低く、発注者側との認識齟齬が多発しました。開発の進捗も遅く、納期が近づいても完成の目途が立ちませんでした。
さらに問題だったのは、開発会社のプロジェクトマネジメントの能力不足でした。リスク管理が不十分で、問題が発生しても適切な対応ができませんでした。コミュニケーションも不足しがちで、発注者側への報告が滞ることが多々ありました。
結局、このプロジェクトは大幅な納期遅延と予算オーバーを引き起こし、システムの品質も満足のいくものではありませんでした。発注者側は、別の開発会社に改修を依頼することになり、多大な時間と費用を無駄にしてしまいました。
この事例から学ぶべきことは、開発会社の選定を安易に行ってはいけないということです。見積もり金額が安いからといって、その会社を選ぶのは危険です。開発会社の技術力や実績、プロジェクトマネジメントの能力などを総合的に評価し、適切なパートナーを選ぶ必要があります。
また、あまりにも安価な見積もりは、何らかのリスクを含んでいる可能性が高いことにも注意が必要です。必要な工数を削って無理に安い見積もりを出している可能性や、低品質な開発を行うつもりである可能性などです。見積もりの内容を精査し、リスクを見極める目を持つことが重要です。
以上、システム開発の失敗事例から学ぶべきことをまとめると、次のようになります。
- 曖昧な要件定義をせず、適切な見積もりを取得すること
- 安易に安価な見積もりを選ばず、開発会社の能力を見極めること
- 変更管理のプロセスを確立し、確実に実行すること
- 開発会社とのコミュニケーションを密にし、問題の早期発見・対応に努めること
これらの教訓を活かし、適切な見積もりと開発会社の選定、プロジェクトマネジメントを行うことが、システム開発の成功につながるのです。
システム開発の外注先選定のコツ
最後に、適切な外注先を選定するためのコツをお伝えします。
まず、1社だけでなく、複数社から見積もりを取得することをおすすめします。相見積もりを取ることで、金額の相場感をつかむことができます。また、提案内容を比較検討することで、各社の強みや特徴を理解することができます。
ただし、単に金額が安いからといって、安易に選定するのは避けましょう。見積書の内容をしっかりとチェックし、自社の要件に合っているかどうかを見極めることが重要です。加えて、実際に会ってコミュニケーションを取ってみて、質問に対する回答が的確かどうか、問題解決の提案力があるかどうかも評価ポイントになります。
また、RFP(提案依頼書)を作成することも有効です。RFPには、自社のシステム開発の目的や要件、スケジュール、予算などを明記します。RFPを提示することで、要件の認識齟齬を防ぎ、より具体的で精度の高い見積もりを得ることができます。
選定後は、契約書の内容をしっかりと詰めることが重要です。見積書の内容が適切に契約書に反映されているか、曖昧な表現がないかを確認しましょう。
まとめ
システム開発の見積もりは、プロジェクト成功のカギを握る重要なものです。見積書の内訳を理解し、妥当性を適切にチェックすることが、発注担当者に求められます。
見積書には、要件定義、設計、開発、テストなどの作業項目が記載され、各作業の工数が積算されています。これらの数字の妥当性を見極めるには、過去の実績や複数の会社の見積もりを比較するのが有効です。
また、見積書に記載されている前提条件や作業範囲が、自社の要件と合致しているかを確認することも重要なポイントです。
外注先の選定に当たっては、見積金額の安さだけで判断するのではなく、提案内容の妥当性や、対応力なども総合的に評価しましょう。RFPを準備して複数社から見積もりを取得することで、適切な会社を選びやすくなります。
見積もりは、信頼できるパートナー選びの第一歩です。ぜひ、本記事を参考にして、適切な見積もりチェックと会社選定を行ってください。