今回のテーマは、システム開発の失敗です。品質の低下や納期遅延、予算オーバーなど、さまざまな問題がプロジェクトでは起こりえます。
「システム開発会社に依頼する前に、失敗を防ぐ対策が知りたい」とお考えの方もいらっしゃるでしょう。
システム開発では、失敗はつきものだと捉えたほうが現実的かもしれません。どれだけプロジェクトマネジメントを徹底しても、ミスやトラブルが発生することはあります。
しかし、失敗例や失敗につながる原因を知り、事前に対策をすれば未然に防げる可能性があります。
そこでシステム開発が失敗する原因と対策を6つにまとめました。システム開発を検討中で、成功に導きたい方はぜひご覧ください。
島添 彰
合同会社Solashi Japan 代表取締役。サントリーにて社内向けシステムの開発・運用に携わる。Yper株式会社を創業し、CTO・CPOとしてプロダクトの立ち上げ・グロースに従事。
システム開発の失敗とは
システム開発の失敗とは、どのような状態を指すのでしょうか。
明確な定義はありませんが、システム開発のプロジェクト管理の考え方に「QCD」があります。QCDとは、次の3つの頭文字を取ったものです。
- Quality(品質)
- Cost(コスト)
- Delivery(納期)
つまり、品質や予算、納期を順守できない開発案件や、それぞれの条件を満たせない開発案件が一般的に失敗だと考えられています。
では、実際のところシステム開発では、予定の品質・予算・納期をどれくらい達成できているでしょうか。
日本情報システム・ユーザー協会(JUAS)の「企業IT動向調査報告書2023」では、システム開発の工期・予算遵守や品質満足度の状況が、プロジェクト規模別に公表されています。
「満足」と回答した割合は、以下の通りです。
プロジェクト規模 | 工期遵守状況 | 予算遵守状況 | 品質満足度状況 |
100月未満 | 32.4% | 16.2% | 14.1% |
100~500人月未満 | 38% | 23.2% | 13.9% |
500人月以上規模 | 22.4% | 15.4% | 11.0% |
プロジェクト規模が大きくなるほど、工期が予定より遅延し、予算で予定より超過、品質で不満との回答が増える傾向にあります。
このように品質・予算・納期で何らかの問題が起こることで、プロジェクトの失敗を招く可能性があります。
システム開発でよくある失敗の具体例
システム開発でよくある失敗の具体例を見てみましょう。
- 品質の低いプロダクトが完成する
- 予定通り進まずスケジュールが遅延する
- 開発コストが膨れ上がる
品質の低いプロダクトが完成する
いよいよリリースになるタイミングで、品質の問題が発覚するケースです。具体的には、以下のような問題が生じます。
- 思っていたものと違う内容のプロダクトが納品された
- 見た目(例:表示の崩れ)に問題が生じた
- 必要な機能が実装されていなかった
- 海外の仕様に合わせて開発され、日本の実機では作動しなかった
また、単純に品質が低いだけでなく、期待していたデザインと違っていたり、作動してもパフォーマンスが優れなかったり、ユーザビリティ面の問題も生じる場合があります。
予定通り進まずスケジュールが遅延する
プロジェクト全体のスケジュールが遅延して納期に間に合わないケースです。
- 開発中に想定外の必須機能が判明し、開発期間が延びる
- 開発中に仕様変更が生じ、開発期間が延びる
- 発注会社と受注会社で連携が取れておらず、納期を過ぎても納品されない
- 開発メンバーの入れ替わりが生じて予定通りに進まない
- エンジニアのスキル不足により実装が終わらない
遅延理由はさまざまですが、当初の予定にはない事態が発生すると、スケジュールが予定通りに進みづらくなります。
システム開発が遅れることで、社内業務の改善活動やDX化が進まなかったり、場合によっては商機を逃すかもしれません。
開発コストが膨れ上がる
システムが完成した後、見積金額よりも高い開発コストが請求されることもあります。開発コストが膨れ上がり、予算をオーバーすることがあるかもしれません。
開発中に仕様変更や機能の追加が生じると、手戻りや修正の作業が増えます。その分、開発期間は延び、開発にかかる工数が増大します。
工数の計算式は以下の通りです。
- 工数=人数×期間
システム開発にかかる主な費用は、人件費です。
エンジニアや開発メンバーの単価と工数を掛け合わせることで、おおよその開発コストが決まります。工数が増えれば、必然的に開発コストもかさみます。
見積もりには、追加の開発コストは考慮されていません。そのため、当初予定していたよりも大幅に追加費用が膨れ上がります。
システム開発が失敗する6つの原因
システム開発が失敗する6つの原因を解説します。
- 計画時の考慮不足
- 根拠となる情報が十分ではない見積もり
- 不十分なコミュニケーション
- プロジェクト体制の未整備
- 軽視されやすいテスト工程
- 開発会社の技術不足
システム開発の失敗を防ぐために、失敗を引き起こす原因を知って対策につなげましょう。
計画時の考慮不足
「企業IT動向調査報告書2023」によると、システム開発が思うように進まなかった要因の1位は「計画時の考慮不足」です。
(参照:企業IT動向調査報告書 2023│一般社団法人 日本情報システム・ユーザー協会(JUAS))
システム開発の上流工程で計画が正確に練られていないと、以降の開発工程に大きな影響を与えます。
上流工程とは、システム開発の要件定義や仕様書作成、システムの企画やシステム化計画をおこなうプロセスです。
これらのプロセスは、開発チームが一体となり、プロジェクト全体をスムーズに進めるために欠かせません。
プロジェクトによっては、具体的な計画を立てずに進めることもあります。計画がなくても、うまくいくケースが中にはあるかもしれません。
しかし、想定以上に工数がかかったり、システムが複雑で開発に難航したりして、開発が滞るおそれもあります。加えて、開発途中の仕様変更が起こりやすく、納期遅延につながるリスクが高まります。
根拠となる情報が十分ではない見積もり
システム開発の失敗を招きやすい原因の一つが、見積もりの失敗です。
「必要な事項を正確に見積もっていない」「費用に何が含まれているのかわからない」など、見積もりの根拠となる情報が十分ではないことがあります。
プロジェクトは見積書に記載されている通り進行します。見積もりがあいまいであれば、開発コストや納期、品質などに影響を与えかねません。たとえば、今までの経験則や勘で大体の作業工数を算出し、見積もるようなケースがあります。
また、発注会社の担当者がITに詳しくない場合、開発にかかる具体的な工数がわからず、発注内容に漏れが生じる可能性もあります。
コスト管理とリソース配分を最適化するためにも、正しく見積もりをすることが重要です。
正しく見積もりをするには、2つの段階があります。1つは発注側が、要件の洗い出しを徹底しておこなうことです。この作業により委託側が精度の高い見積もりをできるようになります。2つ目は、委託側からの見積りに抜け漏れがないか、発注側で漏れなくチェックすることです。
不十分なコミュニケーション
不十分なコミュニケーションも、システム開発で失敗を招く要因となります。
発注会社と開発会社間でのコミュニケーションだけでなく、以下のようにさまざまな場面でコミュニケーション不足が生じる可能性があります。
- プロジェクトマネージャー(PM)と開発チーム
- 開発チーム内のメンバー同士
- 開発会社と外部ベンダー
最近では開発コストを抑えるためにオフショア開発を選択する会社もあります。
オフショア開発とは、人件費が安い海外のシステム開発会社にシステム開発を委託することです。
オフショア開発では、日本語や日本のビジネスのやり方に馴染みのない、海外のエンジニアとのやり取りがしばしば発生します。言語や文化の違いにより、ミスコミュニケーションにつながることがあります。
ただしコミュニケーション問題を乗り越えれば、コスト削減やリソースの確保など大きな恩恵を受けられるでしょう。
いずれにしてもコミュニケーションが十分でなければ、プロジェクトの目的や指示がうまく伝わりません。進捗状況も把握しづらくなり、期待通りの成果物が完成しない可能性があります。
プロジェクト体制の未整備
プロジェクト体制が整備されていないと、マネジメントがうまく進みません。
具体的には、次のような失敗につながることがあります。
- 同等の権限を持つ指揮者が複数名おり、現場が混乱する
- 報告経路が分散されており、情報の吸い上げが困難になる
- 各担当者の役割が不明瞭で、権限がわかりづらくなる
結果的に重大なトラブルが発生しても早く気づけなかったり、指示が正しく通らなかったりするリスクが高まります。
進捗管理が上手くできず、プロジェクトの進行が遅延する可能性もあるでしょう。
軽視されやすいテスト工程
発注会社がITやWebの知識を持っていないと、「テストは開発会社に任せておけば心配ないだろう」と考える場合があります。
しかし、テストはプロジェクトの成功を左右する重要な工程の一つです。
確認すべき事項を確認しないままテストが終了したり、必要なテスト工程を省略してしまったりすると、不具合を見逃すリスクが高まります。
システム開発のテストは、主に以下の4種類に分けられます。
- 単体テスト
- 結合テスト
- システムテスト
- 受け入れテスト
このうち、単体のプログラムの完成時におこなう「単体テスト」はバグを見つけやすいテストです。小さな範囲を対象とした複雑性の低い工程です。
しかし、開発会社に丸投げをすると軽視されやすくなります。単体テストでバグを発見できず後から発覚すると、修正する工数が増えるため注意が必要です。
「単体テストとして機能が担保されることは、テストケースレビューで担保する」「仕様が満たされているかどうかは、早い段階でテスト環境やデモ動画を確認する」など、開発会社とのコミュニケーションをよく取っていきましょう。
開発会社の技術不足
システムの開発実装難易度に対して、開発会社の技術力が足りないケースもあります。
エンジニアのスキルが追いついていないと、実装したい機能がそもそも実装できない、もしくは、実装するのに時間がかかるため開発スケジュールが遅延するなどのトラブルが生じやすくなります。
本来数時間で終わるはずの工程でも、経験不足の人材がアサインされれば数日以上かかるかもしれません。
トラブルを防ぐためにも、開発会社や開発メンバーの選定はよく精査する必要があります。
具体的には、以下の項目を確認するのがよいでしょう。
- プログラミング言語・フレームワークの利用経験
- 類似サービスの開発経験
- (先端技術等を使った開発をする場合)当該技術に関する実績の有無
このように開発会社側のエンジニアの技術不足が、失敗につながることもあります。
システム開発の失敗を防ぐ6つの対策
システム開発の失敗を防ぐ6つの対策をご紹介します。
- 要件定義の徹底
- 見積もり確認の徹底
- 積極的なコミュニケーション
- プロジェクト体制図の作成
- テストの徹底
- 実力のあるシステム会社の選定
要件定義の徹底
システム開発をスムーズに進めるために、プロジェクト全体のゴールを明確にして、まずは要件定義を徹底しましょう。
具体的には、以下の流れで要件定義をおこないます。
- ゴールの明確化
- 現状分析
- システム構想策定
- 機能要求の洗い出し
- 機能の取捨選択・優先順位づけ
- 非機能要件
- プロトタイプ検証
要件定義は専門的な知見が求められることもあり、自社でおこなうのは難しいケースがあるかもしれません。
その場合は、しっかりヒアリングをしたうえで要件定義を請け負ってくれる開発会社に依頼できる方法があります。
弊社「Solashi Co., Ltd」は、ベトナムのシステム開発会社です。弊社では、要件定義からリリース後の保守・運用まで、システム開発全般を一貫してご支援可能です。
要件定義に不安のある方や、戦略設計の段階からサポートをご希望の方は、ぜひ一度ご相談ください。
見積もり確認の徹底
開発途中で予算オーバーにならないために、徹底して見積もりを確認しましょう。
システム開発会社から提示された見積もりを受け入れる前に、詳細や金額の根拠をチェックします。
具体的には、以下のポイントに着目してみてください。
- 各数字や金額に根拠があるか
- 前提条件が認識されているか
- 作業範囲・責任範疇が明確になっているか
- 検収方法・検収条件は明確か
- 調査・分析にかかる工数が含まれているか
- 管理にかかる工数が含まれているか
- 起こり得るリスク・トラブルを考慮しているか
- 必要なハードウェア・ソフトウェアの費用が含まれているか
現実的には、起こり得るリスクやトラブルに対して追加で費用を見積もることは起こりにくいでしょう。ただし、「もし問題があった場合には追加での費用がかかる可能性がある」というような会話がおこなわれると大変健全です。
積極的なコミュニケーション
不十分なコミュニケーションを防ぐには、発注会社も積極的にコミュニケーションを取る姿勢が重要です。
初期段階から開発会社にすべてを丸投げするのはおすすめしません。開発チームとの間で目的やゴールを共有し、発注側から投げかけをおこないましょう。
開発会社が国内・海外のいずれであっても、不明点やわからないポイントがあれば逐一確認することが大切です。
テキストコミュニケーションだけでなく、定例会議を設ける方法があります。互いの距離を縮め、コミュニケーションしやすくするためには雑談も無駄にはなりません。
また、海外エンジニアとのやり取りが不安な場合は、優秀なブリッジSEや日本人PMが窓口となって取りまとめてくれるオフショア開発会社を選ぶのも方法の一つです。
プロジェクト体制図の作成
プロジェクト体制を整備するためには、プロジェクト体制図の作成がおすすめです。
プロジェクト体制図は、誰が何をするのか、プロジェクトのステークホルダー(利害関係者)の責任と役割を明確に図で表したものです。
開発やデザイン、品質・運用、テストなど各チームのメンバーやリーダー、マネージャー、責任者、そして案件責任者の名前や役割を明記します。
プロジェクト体制図を作成することで、それぞれの役割や権限を明確化できるだけでなく、メンバー間で認識を統一できるメリットがあります。
また、システム開発会社に依頼する場合は役割分担表も作るとよいでしょう。
役割分担表とは、システム開発における工程・タスクを洗い出し、それぞれ発注会社とシステム開発会社のどちらが主導するかをまとめた表です。
役割分担表を作成することで責任の所在を明確化でき、トラブルを防げます。
テストの徹底
できるだけ早い段階で不具合に気づけるよう、適切にテストをおこないましょう。
システムテストは開発会社側で実施するケースが一般的ですが、結合テストは状況に応じて協力する必要があります。
また、本番環境で問題なく機能するかをチェックする受け入れテストは発注会社がおこないます。
こういった一連のテストをスムーズに進めるためには、システム会社との協力関係の構築が欠かせません。
テストは形式的におこなうのではなく、以下のような内容を共有し、事前に準備を進めておきましょう。
- 受け入れテスト仕様書の作成
- テストデータの作成
- 合格ラインの明確化
- テストツールの活用方法
また、テスト環境をはじめテストを進めるのに必要な情報は、あらかじめ開発会社に共有してもらいましょう。万全に準備をしたうえで、確認すべき事項を漏れなくテストします。
実力のあるシステム会社の選定
開発会社の技術不足を防ぐために、実力のあるシステム会社を選びましょう。
システム会社によって得意分野や強みは異なるため、自社の目的やプロジェクトに対応できるシステム会社を選ぶことが大切です。
システム開発会社を選ぶときの具体的なポイントは、次項で詳しく解説します。
失敗しないシステム開発会社の選び方
最後に、失敗しないシステム開発会社の選び方を紹介します。システム開発会社選びで特に気をつけたいポイントは、以下の通りです。
- 提案力・ヒアリング力があるか
- 品質の管理体制が整っているか
関連記事:オフショア開発会社の選び方とは?選定の4ステップと失敗しないコツ
提案力・ヒアリング力があるか
システム開発会社選びで失敗しないためには、提案力やヒアリングスキルのある会社を選ぶ必要があるでしょう。
実装だけでなくコンサルティングや戦略策定の段階から対応しているシステム開発会社も中にはあります。
長期的な運用を任せる場合は、各工程を一貫して対応してくれる開発会社を選ぶことで、目的との乖離を防げるでしょう。
弊社「Solashi Co., Ltd」は、事業戦略を見据えた開発内容の策定から、開発を効率化するためのサービスやフレームワークまで、積極的にご提案しています。
事業立ち上げ経験のある優秀な日本人PMが、プロジェクトをサポートします。ぜひお気軽にお問い合わせください。
品質の管理体制が整っているか
バグやエラーなどの不具合を防ぐために、システム開発会社の品質管理体制も確認しましょう。
品質の管理体制が整った開発会社を選ぶことで、品質を担保できます。加えて、仮にトラブルが発生した際も深刻な損害に発展するリスクを抑えられます。
- 明確な品質目標値の設定があるか
- QAエンジニアによるテスト工程があるか
- テスト実施のルールが明確化されているか
- ミスコミュニケーションの対策を取っているか
上記のような項目をチェックして、品質管理体制に問題ないか確認しましょう。
また、トラブル発生時にどのようなリカバリ体制を取っているかや、リカバリ・対処にかかる費用が見積もりに含まれているのかも確かめておきたいポイントです。
開発中に想定されるトラブルやリスクを加味したうえで、仮にトラブルがあった際に最後まで対応してもらえるのか、追加費用はかからないのかなど、具体的な体制を確認しておきましょう。
失敗しないシステム開発は「Solashi」にご相談を
失敗事例も多いシステム開発ですが、しっかり対策することでトラブルのリスクを最小限に抑えられます。
また、発注会社がITやWebに慣れていない場合には、課題を吸い上げたうえで開発内容を提案してくれる開発会社を選ぶことが重要です。
失敗しないシステム開発なら、弊社「Solashi Co., Ltd」にお任せください。コストを抑えながら、高品質なクオリティのシステム開発が可能です。
事業立ち上げやスタートアップ案件を担った経験のある日本人PMが複数名在籍しているため、初めて海外へシステム開発を依頼する場合も安心してご依頼いただけます。
また、ブロックチェーンやAI等の先端技術に精通したエンジニアの割合も多く、BtoBからBtoCまでさまざまな分野に対応可能です。
既存のアウトソーシングが難航している場合も、まずは「Solashi Co., Ltd」までお気軽にご相談ください。
島添 彰
合同会社Solashi Japan代表。1989年4月生まれ、福岡県出身。大阪府立大学大学院情報数理科学専攻修了。2014年サントリーホールディングスのIT機能をもつ「サントリーシステムテクノロジー株式会社」に入社。自動販売機の配送管理や効率化、販売管理システムの開発から運用、導入まで広く担当する。2017年にYper株式会社を創業、同社のCTO・CPOに就任。アプリ連動型の置き配バッグ「OKIPPA(オキッパ)」の立ち上げ・プロダクトのグロースに携わる。東洋経済社の名物企画「すごいベンチャー100」、Forbes誌による「Forbes 30 Under 30 Asia 2019」に選出される。