著者:野原琉海(業務効率化に特化したエンジニア)
「完成したけど、誰も使っていない」「予算が途中で2倍以上になった」「納期を過ぎても何も出てこない」
システム開発を外注したことのある中小企業の経営者から、こういう話を聞くことは珍しくない。
失敗の原因を「悪い開発会社を選んだ」で片付けている会社が多いが、実際に現場を見ると、発注の仕方に問題があることの方が圧倒的に多い。開発会社を責めても、次の外注で同じことを繰り返す。
僕はエンジニアとして受託開発を受ける仕事もしてきたし、中小企業の業務改善を支援する立場でもある。両方の側から見てきた経験をもとに、中小企業がシステム開発外注でよく踏む失敗パターンを5つ整理する。そして「そもそも外注開発が必要なのか」という最初の判断基準も書いておく。
そもそも「外注開発」が本当に必要か?最初に問うべき判断基準
失敗の多くは「外注するかどうか」の判断よりも前の段階で起きている。「この業務を改善したい」という問題が出た時に、最初の選択肢を外注開発にしてしまうことが根本的なミスだ。
僕自身、月3.5万円のツール代で経理・請求書処理・コンテンツ制作・顧客管理を全て回している。SaaSやノーコードツールで代替できるなら、わざわざ開発費数百万円をかける必要はない。
中小企業が検討すべき選択肢は3つある。
| 比較項目 | 外注開発 | SaaS(クラウドサービス) | ノーコードツール |
|---|---|---|---|
| 初期費用 | 数十万〜数千万円 | 月1〜10万円(初期費用無料〜数万円) | 月1〜5万円(初期費用無料〜数万円) |
| 構築期間 | 3ヶ月〜1年以上 | 即日〜1週間 | 1〜4週間 |
| 自社業務への適合度 | 高い(カスタム開発) | 中(設定でカスタマイズ可能) | 中〜高(柔軟に組み合わせ可) |
| 保守コスト | 毎月数万〜数十万円(保守契約) | サービス料金に含まれる | サービス料金に含まれる |
| 向いているケース | 他社にない独自業務フロー / 大量データ処理 | 一般的な業務(経理・勤怠・CRM等) | 中規模のデータ連携・自動化 |
| 向いていないケース | 既存SaaSで代替できる業務 | 完全カスタムが必要な業務 | 大量データ・複雑なロジック |
「受注管理を自動化したい」「経費精算を楽にしたい」といった業務は、SaaSや既製品で解決できることが多い。外注開発が本当に必要になるのは、「自社独自の業務フローがあって、既製品では絶対に代替できない」ケースだけだ。
まず既製ツールで試してみる。それでも解決しない場合に、初めて外注開発を検討する。この順番が大事だ。ノーコードツールで中小企業の業務を改善する方法|エンジニア不要の自動化も参考にしてほしい。
パターン1:「何を作りたいか」は決まっているが「なぜ作るか」が決まっていない
「受注管理システムを作ってほしい」「在庫管理を自動化したい」という形で発注する会社は多い。
問題は、「何を作るか」は決まっているが、「それを作ることで何の問題を解決したいのか」が発注側で言語化できていないことだ。
開発会社は依頼された仕様を作ることを仕事にしている。「受注管理システムを作ってほしい」と言われれば、それらしいものを作ろうとする。しかし完成後に「こんなはずじゃなかった」となる。なぜかというと、本当に解決したかったのは「受注情報が担当者の頭の中にあって、その人が急に休むと業務が止まる」という問題だったりするからだ。
システムを作ること自体が目的になっていると、完成物が使われなくなる。
受託側の本音
僕が受託開発をしていた時期に、「何を作れば成功なのか分からない」という案件を何度か経験した。発注者が「こういうシステムがほしい」と言うので作ると、完成後に「なんか違う」と言われる。何が違うのかを聞いても「なんか使いにくい」と言われるだけで、具体的な指摘が出てこない。
原因は「解決したかった問題」が最初から言語化されていないことだ。開発会社としては依頼通りのものを作っているのに「違う」と言われるのは、発注側と受注側の間にある認識のズレが、要件定義の段階で埋まっていないからだ。
防ぎ方
発注前に「今、現場で何が起きていて、それがどんな困りごとを生んでいるか」を書き出す。「受注管理システムを作る」ではなく「担当者不在でも受注情報を誰でも確認できる状態にする」という形で目的を定義する。
目的を定義すれば、「SaaSで代替できるか」「ノーコードで作れるか」「本当に開発が必要か」の判断もできる。開発会社に行く前の段階で、この言語化を必ずやっておくこと。
パターン2:見積書の「一式」を見抜けない
最初の見積もりが350万円だったのに、完成時には800万円を超えた。
これは珍しい話ではない。
見積書に「システム開発一式 350万円」と書いてある場合、その「一式」の中に含まれている機能・対応範囲が明示されていないことがある。途中で「この機能も必要」「仕様を変えたい」という話が出るたびに「それは別途費用になります」という話になる。
最初の見積金額は「この機能を最低限作る費用」であって、「この業務課題をすべて解決する費用」ではないことが多い。発注側がその違いを認識せずに契約すると、追加費用が積み上がる一方になる。
「一式」が危険な理由
「一式」という書き方は、範囲が曖昧なまま合意してしまうことを意味する。例えば「ログイン機能一式」とあっても、2段階認証が必要かどうか、パスワードリセット機能が含まれるかどうかは、書いていなければ含まれないと解釈される場合がある。
追加要望が出るたびに交渉が発生し、プロジェクトが混乱しやすい。明確な仕様書がない状態で進めると、発注側も受注側も苦労する構造になる。
| 見積書のパターン | リスクレベル | 対処法 |
|---|---|---|
| 「システム開発一式 ○○万円」 | 高 | 「一式の内訳を機能別に分けてください」と要求する |
| 「要件定義・設計・開発・テスト 各○○万円」 | 中 | 各フェーズに何が含まれるかを確認する |
| 「機能一覧付きの詳細見積書」 | 低 | 機能別の金額が明示されているので比較しやすい |
| 「月額固定の開発契約」(ラボ型) | 中 | 月当たりの成果物と対応範囲を事前に確認する |
防ぎ方
見積書を受け取ったら「この金額でできること・できないことを箇条書きにしてください」と依頼する。また「この仕様以外に追加費用が発生するケースはどんな時ですか」を確認する。面倒がって省略するとあとで大きな問題になる。
パターン3:要件定義を開発会社に丸投げする
「専門的なことは分からないので、プロにお任せします」
この姿勢が一番失敗につながりやすい。
要件定義とは「何を作るか」を言語化する作業だ。自社の業務を詳しく知っているのは自社の人間だから、要件定義の核心部分は発注側が担うべき仕事でもある。それを開発会社に丸投げすると、開発会社が「こういうことがやりたいんですよね」と解釈してまとめたものが要件定義書になる。
完成後に「使いにくい」「想定と違う」が起きる原因の大半はここにある。開発会社を責めることはできない。依頼された内容を作っただけなので。
要件定義で「発注側がやる仕事」と「開発会社がやる仕事」を分ける
| 作業 | 担当 | 理由 |
|---|---|---|
| 現場の業務フローを整理する | 発注側 | 自社の業務を一番知っているのは自社 |
| 「どんな状態になれば成功か」を定義する | 発注側 | ゴールを決めるのは依頼者 |
| 課題を技術的な仕様に落とし込む | 開発会社 | 技術的な知見が必要 |
| ワイヤーフレーム・画面設計 | 開発会社(発注側が確認) | 開発会社が作り、発注側がフィードバック |
| テスト・品質確認 | 開発会社(発注側が確認) | 最終的な合否判断は発注側 |
「自社の業務課題を伝える」のが発注側の仕事で、「それをシステムに落とし込む」のが開発会社の仕事だ。
業務フローを整理するだけなら、特別な技術知識は不要だ。「現在、この業務を誰がどのようにやっているか」を箇条書きにして、「どこで困っているか」を言語化する。それを開発会社に渡すだけで、要件定義の質が大きく変わる。
社内にエンジニアがいない場合は、フリーランスエンジニアの探し方|中小企業が開発を依頼するための基礎知識を参考に、外部の人間に発注側の立場で要件整理を手伝ってもらう選択肢もある。
防ぎ方
要件定義の文書化は開発会社に任せてよい。ただし「うちの業務では○○という問題が起きていて、それを解消するために△△ができればいい」という部分は発注側が言語化する。文書にする前の「言葉で説明できるか」の確認を、必ず自社でやっておくこと。
パターン4:完成後の運用を考えていない
「完成したら自分たちで運用します」
これが後から問題になる。
社内にエンジニアがいない中小企業がシステムを自分たちで運用するとはどういうことか。バグが出た時に誰が直すか。新しい機能が必要になった時に誰が対応するか。使い方を知っていた担当者が退職した時にシステムが誰にも触れない状態になるリスクはないか。
開発会社は「作る仕事」の専門家だ。作って納品した後の保守・運用サポートを契約に含めるかどうかは、最初から確認しておく必要がある。確認していないと、納品後に問い合わせたら「保守契約を別途締結してください」「そういった対応はしていません」となることがある。
保守契約の種類と費用目安
| 保守形態 | 費用目安(月額) | 対応内容 |
|---|---|---|
| 保守なし | 0円 | 不具合が出ても対応してもらえない |
| スポット保守 | 1件あたり数万円〜 | 問題が出たときに個別対応。費用は都度発生 |
| 月額保守契約 | 開発費の5〜15%程度 | 定期メンテナンス・軽微な修正・緊急対応 |
| 常駐型エンジニア | 月30〜100万円 | フルタイムで対応(大企業向け) |
中小企業で多いのは「保守なし」で契約して、後から「修正が必要なのに誰も対応できない」という状態だ。
実際に見てきたケース
開発費500万円をかけて受注管理システムを作った会社が、1年後に「もう使っていない」状態になっていた。理由は、担当者が退職してシステムの使い方を知っている人間がいなくなり、バグが出ても誰も修正できず、最終的に元のExcelに戻ったからだ。
開発費500万円は消えたまま、業務は以前と変わらない。保守体制を考えていなかったことが、全ての投資を無駄にした。
防ぎ方
契約時に「納品後の保守・運用サポートはどのような内容で、費用はいくらか」を確認する。保守費用も含めたトータルコストで判断する。また、社員がシステムを引き継げるよう、マニュアルの提供を契約に含めることも重要だ。
パターン5:「安い」だけで外注先を選ぶ
クラウドソーシングで格安のエンジニアに発注して、途中で連絡が取れなくなった。品質が低すぎて使えないものが納品された。こういう話も現場では聞く。
格安の外注先を使うこと自体は間違いではない。ただ、「安さ」を唯一の判断基準にすると上記のリスクが上がる。開発の品質と単価はある程度連動している。
問題は、「なんとか安く済ませたい」という判断の結果、「使えないものが届いた」「作り直し費用が発生した」という最悪のパターンが実際に起きていることだ。
外注先のタイプ別比較
| 外注先タイプ | 費用目安 | 強み | 弱み | 向いているケース |
|---|---|---|---|---|
| 大手SIer | 1,000万円〜 | 実績豊富・体制が整っている | 中小案件を優先しない。担当が変わりやすい | 基幹システム刷新 |
| 中堅〜小規模開発会社 | 100〜500万円 | コミュニケーションが取りやすい | 技術力にばらつきがある | 業務システム・社内ツール開発 |
| フリーランスエンジニア | 50〜200万円 | 直接コミュニケーション可能 | 個人なので急な対応が難しいことも | 小規模な機能開発・プロトタイプ |
| 海外オフショア | 30〜100万円 | 費用は安い | コミュニケーションコスト高・品質ばらつき | 仕様が固まっている単純作業 |
| クラウドソーシング個人 | 〜50万円 | 最も費用が安い | 信頼性が低い・連絡が取れなくなるリスク | 軽微な修正・LP制作等 |
防ぎ方
初めての外注先を使う場合は、小さい範囲の案件(10〜30万円程度)で試す。コミュニケーションの丁寧さ・対応スピード・成果物の品質を確認した上で、大きな案件に進む。「安い一点張り」ではなく「信頼できる範囲の価格」で判断する。
副業エンジニアに仕事を頼む方法|探し方から契約までも参考にしてほしい。副業エンジニアは費用を抑えながら直接コミュニケーションが取れるため、小規模案件に向いている。
5パターンに共通している根本原因
5つのパターンに共通しているのは、発注側に「開発プロジェクトを管理できる人間」がいないことで起きている問題だという点だ。
大手企業には情報システム部門やプロジェクトマネージャーがいる。外注先をコントロールし、要件定義に責任を持ち、進捗を管理する人間が社内にいる。
中小企業にはそういった人材がいないことが多い。「開発会社に任せれば全部やってくれる」と思って動くと、上記のパターンを踏む。
失敗パターン早見表
| 失敗パターン | 真の原因 | 発生するコスト |
|---|---|---|
| 目的が曖昧なまま発注 | 業務課題を言語化する人間がいない | 使われないシステム・作り直し費用 |
| 追加費用が雪だるま式 | 見積書の妥当性を判断できる人間がいない | 当初費用の1.5〜3倍に膨らむ |
| 要件定義を丸投げ | 業務フローを整理できる人間がいない | 使いにくいシステム・工数追加 |
| 運用体制を考えていない | システム管理の概念を知らない | 数年後に廃止・投資が無駄になる |
| 安さだけで選ぶ | 技術力の見極め方を知らない | 低品質・作り直しコスト発生 |
外注先を変えるより、自社の発注の仕方を変える方が効果的だ。デジタルツール導入で失敗する4つのパターンと対策でも書いているが、ツール導入も外注開発も、失敗の構造は共通している。「導入が目的化する」「完成後を考えていない」という問題が繰り返される。
IT担当者がいない中小企業の3つの現実的な対処法
社内にエンジニアがいなければ何もできないか、というとそんなことはない。具体的な対処法は3つある。
対処法1:発注の基礎知識を経営者または担当者が持つ
経営者または担当者が開発プロジェクトの基本的な流れを理解しておく。「要件定義とは何か」「なぜ追加費用が発生するか」「一式見積もりの危険性」を知っているだけで、発注の仕方が変わる。
難しい技術知識は不要だ。「プロジェクトがどのように進むか」のプロセスを理解するだけでいい。本記事に書いてある内容を頭に入れておけば、それだけで大半の失敗は防げる。
対処法2:開発会社とは別の第三者に入ってもらう
独立したIT顧問や業務効率化エンジニアに、発注側の立場でプロジェクト管理を担ってもらう。月3〜10万円程度の費用で入ってもらうことで、大きな失敗を防げることがある。
開発会社に全てを任せていると、「中立な視点」からの指摘がない。発注側に立った第三者がいることで、追加費用の妥当性判断や要件整理のサポートを受けられる。AI顧問とIT顧問の違い|月3万〜30万円の費用比較と失敗しない選び方では、こういった第三者支援の費用感と選び方を詳しく解説している。
IT顧問やAI顧問が月額で関わることで、開発プロジェクトの判断役として機能してもらうことができる。「このシステム、本当に開発が必要ですか?」という最初の問い直しから手伝ってもらえると、無駄な投資を防げる。
対処法3:スモールスタートにする
いきなり大きなシステムを作らず、最小限の機能から始める。失敗しても被害が小さいうちに軌道修正できる。
10〜30万円で動くプロトタイプを作り、実際に使ってから「本番の開発に進むかどうか」を判断する。この進め方をとることで、「数百万かけて作ったのに使えない」という最悪のケースを防げる。僕が顧問先に勧めているのも、まずこのスモールスタートからだ。
発注前に確認すべき10項目のチェックリスト
システム開発を外注する前に、以下の10項目を確認してほしい。全てにチェックが入らない状態で発注を進めると、どこかでつまずく可能性が高い。
- 「この開発で何の問題を解決するか」を1〜2文で言語化できているか
- SaaSやノーコードツールで代替できないかを確認したか
- 見積書の「一式」の中身を機能別に確認したか
- 追加費用が発生するケースを事前に確認したか
- 要件定義書に「できること・できないこと」が明記されているか
- 納品後の保守費用を確認したか
- 社内に誰もシステムを触れない状態になるリスクを考えたか
- 小さな案件で外注先の品質を先に確認したか
- 開発プロジェクト中に発注側の担当者が週何時間関わるかを決めているか
- 「使われていない」判断をどの時点でするかを決めているか
これを全て確認した上で発注に進んでほしい。
まとめ:外注開発で失敗しないために
システム開発の外注で失敗する会社に共通しているのは、「悪い業者を選んだ」ではなく「発注のやり方に問題があった」ことが多い。
| 失敗パターン | 防ぎ方の要点 |
|---|---|
| 目的が曖昧 | 「何の問題を解消するか」から出発する |
| 見積もりの「一式」 | 含まれること・含まれないことを事前に確認する |
| 要件定義の丸投げ | 業務課題は自社が言語化してから伝える |
| 完成後の運用 | 保守・運用体制を契約前に確認する |
| 安さだけで選ぶ | 小案件で実績を確認してから大きな案件へ |
IT担当者がいない中小企業でも、この5点を押さえるだけで失敗のリスクは大幅に下がる。「外注が必要かどうか」の判断から始めて、スモールスタートで進めるのが一番確実だ。