システム開発は外注か内製か?外注する前に覚えておきたいメリット・デメリット
目次[非表示]
- 1.システム開発は外注か内製か?
- 2.システム開発を外注したほうがいい企業
- 3.システム開発を外注する基本的な流れ
- 3.1.1.開発したいシステムの内容を決める
- 3.2.2.外注先を探す
- 3.3.3.RFP(Request For Proposal)を作成する
- 3.4.4.外注先と打ち合わせする
- 3.5.5.相見積もりから外注先を絞り込む
- 3.6.6.取引基本契約書を締結
- 3.7.7.要求定義
- 3.8.8.要件定義
- 3.9.9.設計
- 3.10.10.個別契約書の作成
- 3.11.11.テスト計画書の作成
- 3.12.12.コーティング開始
- 3.13.13.各種テスト
- 3.14.14.納品
- 3.15.15.本稼働
- 3.16.16.保守・メンテナンス
- 4.システム開発を外注するメリット
- 4.1.人材を育てるコストが抑えられる
- 4.2.システム開発のノウハウが必要ない
- 4.3.システム開発に必要な設備が不要
- 4.4.社内業務に負担がかからない
- 4.5.スケジュール通りの納品が見込める
- 5.システム開発を外注するデメリット
- 5.1.予定通りの結果が得られない可能性がある
- 5.2.システム開発のノウハウは得られない
- 5.3.外部に情報が漏れる恐れがある
- 6.まとめ
システム開発は外注か内製か?
システム開発を実施する際には、内製か外注かを選ぶことになります。外注とはシステム開発を自社以外のシステム開発会社に依頼して、ソフトウェアやシステムの開発を進める方法をいいます。外注には国内の地方都市や近隣の企業に依頼する「ニアショア開発」と、海外の開発会社に依頼する「オフショア開発」があります。どちらの方法も人件費の削減などにつながるため、システム開発のコストを抑える効果が見込めます。
一方、内製とは自社でシステム開発を行うことをいいます。社内でメンバーを集めるか、子会社などと協力して開発を進めることになります。
自社のみで開発することが難しいようであれば、子会社や連結グループに助力を求めたり、SES(システムエンジニアリングサービス)などから派遣されたSEと協力して進めることになります。
システム開発を内製することで、次のようなメリットが見込めます。
- 社内にノウハウを溜められる
- システムの仕様変更にも柔軟に対応しやすい
- 従業員の成長に繋がりやすい
- 必要な情報の共有がしやすい
しかし、内製には次のようなデメリットもあります。
- 開発の進行度合いによってはコストがかかる
- システム開発に必要な人材を揃えることが難しい
- システム開発の終了後は人材(エンジニア)を持て余しやすい
昨今はエンジニア不足が加速しており、新しい人材を探すことが難しくなっています。優秀なエンジニアほど企業での取り合いが起きています。その結果、人件費の高騰を招いており、システム開発のコストも増加傾向にあります。システム開発のコストを抑えることが目的であれば、外注は有効な手段といえます。
■関連記事:
システム開発を外注したほうがいい企業
次にご紹介するような特徴があるのであれば、システム開発は外注することをおすすめします。
- システム開発のノウハウが自社に蓄えられていない
- 規模の大きなシステム開発を予定している
- 規模の小さな開発はフリーランサーに依頼する
自社でシステム開発を内製するには、人材や機材を整えるだけでも多額のコストがかかります。自社にシステム開発のノウハウや人材がいないのであれば、外注するのが得策です。
また、自社の従業員は社内の業務のみに従事させたいと考えるのは当然のことです。システム開発に人材やコストを取られれば、本業が疎かになる恐れもあるためです。
その点、システム開発会社であれば、最新技術についての知識やスキル、経験を豊富に持っています。パッケージ商品やセキュリティ対策も含めた提案も、お願いできます。
また、大規模なシステム開発を計画している場合も外注したほうが無難です。システム開発では、プロジェクト全体を把握する能力が求められます。しかし、中小企業では専門の部署が存在せず、知識を持っている担当者も一人しかいない「ひとり情シス」も珍しくありません。このような状況では適切な判断をすることが難しいため、プロに任せるのが安心です。技術や知識を持つ人材がシステム開発会社であれば、安心して任せられます。
小規模なシステム開発であれば、フリーランスといった個人で仕事を請け負っているエンジニアに依頼するのもおすすめです。システム開発会社に外注するよりも安く依頼できます。
ただし、個人の実力はピンからキリまであります。高い技術力を持っている人に依頼できれば問題ありません。しかし、中には知識も技術もない人に当たる場合もあります。エンジニア選びに失敗しないためにも、事前に実績などで実力を確認しておきましょう。
システム開発を外注する基本的な流れ
システム開発の外注は、基本的に次のような流れで行われます。
- 開発したいシステムの内容を決める
- 外注先を探す
- RFP(Request For Proposal)を作成する
- 外注先と打ち合わせする
- 相見積もりから外注先を絞り込む
- 取引基本契約書を締結
- 要求定義
- 要件定義
- 設計
- 個別契約書の作成
- テスト計画書の作成
- コーティング開始
- 各種テスト
- 納品
- 本稼働
- 保守・メンテナンス
システム開発を外注する場合、外注先を見つけて開発を丸投げすれば良いというわけではありません。外注先を探す前に準備が必要ですし、見つけた後もクライアント側が開発に協力する必要があります。
以下では、最もポピュラーな開発手法の「ウォーターフォールモデル」を例に、システム開発を外注した場合の基本的な流れをご紹介します。
1.開発したいシステムの内容を決める
まずクライアント側は、どのような理由でシステムを開発したいのかを整理する必要があります。システム開発を依頼するということは、業務を進めるうえで何かしら課題や問題を抱えており、ITを活用して解決したいと望んでいるからのはずです。
例えば「業務の進捗状況を報告する際、紙媒体を使っているが記入漏れや報告忘れが多い」「在庫管理を手書きで表に書き込んでいるが、数え間違いや記入ミスが頻発している」といった問題を解決し、業務の改善や効率化するためにシステム開発を依頼するのが一般的です。
クライアント側はシステム開発を外注する前に、業務で抱えている問題や課題を洗い出し、開発したいシステムの内容を決めましょう。
2.外注先を探す
システム開発の内容を決定したら、次は外注するシステム開発会社を探します。開発会社の探し方には、次のような方法が挙げられます。
- インターネットで検索
- 知り合いに紹介してもらう
- 競合他社の情報を参考にする
気になる開発会社を見つけたら、以下のポイントをチェックしておきましょう。
- 過去の実績
- 得意・不得意の分野
- 業績が安定しているか
- 担当のコミュニケーション能力
システム開発会社の実績を確認することで、どの程度の開発能力があるのか、得意な分野や不得意な分野を判断できます。また、業績もチェックしておくことで、抱えている人材の質もある程度知ることが可能です。
3.RFP(Request For Proposal)を作成する
外注先を数社見つけたら、次にRFP(Request For Proposal)を作成します。RFPとは、希望するシステムの内容や開発目的、納期などをまとめたドキュメントのことです。RFPが詳細であれば開発側もシステムのイメージが掴みやすいため、開発がしやすくなります。
4.外注先と打ち合わせする
RFPが作成出来たら、候補に挙げた外注先と打ち合わせを行います。その際、クライアントと開発側の橋渡しになる担当者のコミュニケーション能力も確認しておきましょう。
- クライアント側の要望をしっかりと聞いてくれるか
- 開発を成功させたいという熱量を持っているか
- クライアント側の業務形態を理解しようとしているか
システム開発の成否は、開発側とどれだけ密なコミュニケーションが取れるかでほぼ決まるといっても過言ではありません。
5.相見積もりから外注先を絞り込む
システム開発会社の能力や実績も重要ですが、コストを考えることも大切です。開発会社を3社ほど選んだら、相見積もりをお願いしましょう。
実績、技術力、RFPの理解度、必要なコストなどを見比べたうえで、納得のできる外注先を絞り込んで決定するといいでしょう。
6.取引基本契約書を締結
システム開発を依頼する外注先を決定したら「取引基本契約書」を締結しましょう。「取引基本契約書」とは、開発側と取引するうえで都度契約書を作成せずにすむように、共通事項をあらかじめ決めておく契約書をいいます。細かい内容は後にして、まずは開発にかかる金額などを決めて、取引基本契約書を作成します。
7.要求定義
「要求定義」は「システム企画」とも呼ばれており、システムで何がしたいのか、そのために実装したい機能や性能について、クライアント側が開発側に伝える作業をいいます。
開発側の技術力が高くても、クライアント側がどのようなシステムを作りたいのかが分からなければ開発することはできません。そこで、クライアント側がなぜシステムを必要としているのかをヒアリングする作業が必要となります。問題の洗い出しや解決のための提案をし、それらをまとめた「要求定義書」を作成します。
8.要件定義
クライアント側の要求を聞いた開発側は、実際に機能や性能を実装することが可能かを判断します。クライアント側がシステム開発を理解していることは稀です。「こんな機能を実装したい」という要求はできても、実際に開発や実装が可能かは判断できません。
開発側がクライアント側の要求を形にできるかを判断し、それらをまとめた「要件定義書」を作成しましょう。
▼要件定義については、下記の記事もぜひ参考にしてみてください。
→https://www.co-well.jp/blog/system_dev_RequirementDefinition
9.設計
要件定義で作成した要件定義書を参考にして「基本設計」と「詳細設計」を行います。基本設計ではシステムのUIや入力画面といったユーザー側が見える部分の設計をします。一方、詳細設計ではユーザーに見えない内部の設計をします。基本設計が決まった時点でクライアント側と協議し、合意が得られた段階で詳細設計へと進みます。
システム開発では「要求定義」「要件定義」「基本設計」「詳細設計」を「上流工程」と呼びます。上流工程はそれ以降の工程に多大な影響を与えるため、慎重に行われる必要があります。上流工程で失敗しないためにも、クライアント側と開発側が密にコミュニケーションをとらなければいけません。
■関連記事:
10.個別契約書の作成
「個別契約」とは、基本契約書とは別に共通しない細かい取引を行う際に交わされる契約のことをいいます。作業内容や役割分担、請負金額などを明記して個別契約書を作成します。
ここで注意すべきは、基本契約と個別契約のどちらを優先すべきかという点です。基本契約書と個別契約書の内容に食い違いがあると、後々トラブルになる恐れがあります。
事前にどちらかの契約書内で「内容に矛盾が生じた際は、基本契約書(もしくは個別契約書)で定めた内容を優先する」と優先条項を定めておくことで、トラブルを回避することが可能です。
11.テスト計画書の作成
「テスト計画書」とは、納品時にどのようなテストを行うかをまとめたドキュメントをいいます。テスト計画書には「全体テスト計画書」と「個別テスト計画書」の2種類あります。
全体テスト計画書は、システム開発で行われるテストの工程や必要な人員・環境をまとめたものになります。対して個別テスト計画書は「単体テスト」「結合テスト」「総合テスト」「受入テスト」といった各テストごとの計画書です。
▼品質については、下記の記事もぜひ参考にしてみてください。
→ソフトウェア品質の重要性とは?評価するための方法や品質向上の解決策
12.コーティング開始
システム開発の詳細や方向性が決定したら、要件定義、基本設計、詳細設計をもとに、エンジニアが作業を開始します。
13.各種テスト
開発したシステムに不具合がないか、正常に動作するかをチェックするために各種テストが行われます。
- 単体テスト:分割して作成されたプログラムが動作するかのテスト
- 結合テスト:分割されたプログラムを結合させて動作するかのテスト
- 総合テスト:クライアント側の環境でプログラムが動作するかのテスト
- 受入テスト:テスト計画書をもとにプログラムが期待通りに動作するかのテスト
▼ソフトウェアテストについては、下記の記事もぜひ参考にしてみてください。
→ソフトウェアテストとは?第三者検証との違い、種類や目的、7原則を解説
14.納品
外注先で開発されたシステムが納品される段階です。ただし、納品されたら終了というわけではありません。正常に稼働して、業務に活用できるか確認する必要があります。
15.本稼働
納品されたシステムを、実際に現場に導入する段階です。本稼働でシステムが正常に動作しない場合、至急開発会社に報告する必要があります。基本契約書や個別契約書で、不具合が起きた際の対応方法を明記しておくことも重要となります。
16.保守・メンテナンス
開発したシステムは、依頼したシステム会社が保守・メンテナンスを担当することになります。保守・メンテナンスは基本的に有償となるため、金額等についてはあらかじめ基本契約や個別契約で決めておくといいでしょう。
システム開発を外注するメリット
システム開発を外注する流れについて説明してきましたが、ここでは外注するメリットについて解説します。システム開発を外注することで、次のようなメリットが得られます。
- 人材を育てるコストが抑えられる
- システム開発のノウハウが必要ない
- システム開発に必要な設備が不要
- 社内業務に負担がかからない
- スケジュール通りの納品が見込める
以下で詳しく解説します。
人材を育てるコストが抑えられる
システム開発を外注することで、育成にかかるコストを抑えられます。システム開発の人材を1から育てるとなると、時間や費用など多大なコストがかかります。長期的に自社でシステム開発をするのであればメリットがあるかもしれませんが、短期や小規模なシステム開発しかしないのであればデメリットが勝ってしまいます。システム開発を外注することで、人件費を安く抑えられるため、コスト削減につながります。
システム開発のノウハウが必要ない
システム開発にはノウハウが必要不可欠です。経験を積むことでエンジニアなどの成長にもつながるだけでなく、社内にノウハウが溜まっていきます。しかし、システム開発を行えるまでに技術や知識を蓄積するには長い時間が必要です。ノウハウを持ったシステム開発会社に外注することで、自社にノウハウがなくてもシステムの開発が可能です。
システム開発に必要な設備が不要
システム開発には技術や知識のある人材だけでなく、機材など設備が必要不可欠です。こちらも、すべてそろえるとなると多額のコストがかかってしまいます。システム開発を外注すれば設備を揃える必要がありません。
社内業務に負担がかからない
システム開発を外注することで、他の業務に負担をかけずに済みます。システム開発会社に大半を任せてしまえるのが外注のメリットといえます。上流工程ではクライアント側も関わることになりますが、開発が本格的にスタートすれば開発会社に任せてしまって問題ありません。システム開発に人員や時間をとられることがないため、社内業務に負担がかかりません。
スケジュール通りの納品が見込める
システム開発を外注することで、希望に沿ったスケジュールの納品が見込めます。ただし、コーディングが始まった段階で仕様の変更や追加が発生すると、納期の遅れやコストオーバーになる恐れがあります。これらのトラブルを回避するために、要求定義の段階で開発側の担当としっかりコミュニケーションをとりましょう。
■関連記事:
システム開発を外注するデメリット
システム開発を外注することで、いくつものメリットが得られます。しかし、外注にはデメリットがあることも把握しておく必要があります。システム開発を外注することで、次のようなデメリットがあります。
- 予定通りの結果が得られない可能性がある
- システム開発のノウハウは得られない
- 外部に情報が漏れる恐れがある
以下で詳しく解説します。
予定通りの結果が得られない可能性がある
システム開発を外注したとしても、クライアント側の予定通りの結果になるとは限りません。例えば、開発側がクライアントのヒアリングをおろそかにしてたり、要求を間違って解釈することもあり得ます。そのまま開発を進めた結果、予定通りのシステムが出来上がらないというケースも少なくありません。
システム開発のノウハウは得られない
自社でシステム開発をするのであれば、専門の勉強や経験を経てノウハウを溜めたり、人材を育成したりできます。しかし、外注するとノウハウを得る機会が失われてしまいます。自社でシステム開発を予定しているのであれば、外注するのはデメリットにつながります。
しかし、この問題を解決する方法として「ラボ型開発」という選択肢もあります。優秀な人材を半年~1年単位で雇用し、社外に自社チームを用意できるのがラボ型開発の特徴です。
一般的な外注(請負型)の場合、クライアントが開発に関わることはほぼありません。そのうえ、プロジェクトが終わるとチームは解散します。再度同じ会社に開発を依頼しても、チームは集め直しになるためノウハウの蓄積はできません。
一方、ラボ型開発は専属のチームに開発業務の指示を出すなど、自社も開発にかかわることになるため、業務知識や開発のノウハウを蓄積できます。ラボ型開発で得られた知識や経験は、システム開発を内製化する際も役立つでしょう。
▼ラボ型開発については、下記の記事もぜひ参考にしてみてください。
→ラボ型開発と請負型開発の違いは?特徴やメリット・デメリットを解説
外部に情報が漏れる恐れがある
何かの拍子にシステム開発会社から情報が漏れてしまう可能性も否定できません。例えば、作業をするために社外にノートパソコンを持ち出してしまい、電車内に忘れた結果、情報が漏洩することも考えられます。システム開発会社から個人情報や企業情報が漏れてしまうと、自社の信頼まで損なう恐れがあります。
外部に情報が漏れることを防ぐために、外注するシステム開発会社とは機密保持契約書(NDA)などの契約を交わしておきましょう。
外注する企業によって、仕事の仕方や考え方に違いはあります。プロジェクトの進め方も、納得できることもあればできない部分もあるはずです。それらを考慮して、信頼できる外注先を見つけることが開発の成功に繋がります。
まとめ
当記事では今回、システム開発を外注する際の流れや、外注するメリット・デメリットについて解説しました。
システム開発を外注することで、次のようなメリットが得られます。
- 人材を育てるコストが抑えられる
- システム開発のノウハウが必要ない
- システム開発に必要な設備が不要
- 社内業務に負担がかからない
- スケジュール通りの納品が見込める
国内のシステム開発会社に外注する「ニアショア開発」でもコスト削減になりますが、それ以上に人件費を抑えたいのであれば、海外に開発を外注する「オフショア開発」も効果的です。
システム開発にかかるコストの8割は人件費といわれています。国外に外注することで、日本と遜色ない技術力を持った優秀な人材を、国内の半分の人件費で雇うことも可能です。
ただし、外注することで次のようなデメリットがあることも覚えておきましょう。
- 予定通りの結果が得られない可能性がある
- システム開発のノウハウは得られない
- 外部に情報が漏れる恐れがある
システム開発で失敗しないためにも、メリット・デメリットを理解し、自社の条件を満たすシステム会社に外注しましょう。
安心・高品質・最適価格なソフトウェア開発導入のため、ソフトウェア開発で信頼できるパートナーをお探しですか?
「コウェル」はベトナムと日本に拠点を置いており、高品質なオフショア開発サービスを提供しています。
コスト・スピード・品質には自信があり、国内大手企業様からも開発依頼を多くいただいています。
開発実績としてはWebシステムの開発や業務システム・越境EC開発などが豊富です。
さまざまなニーズに応えた実績もあり、経験豊富なソフトウェア開発会社です。
「なるべくコストを抑えてソフトウェアを開発したい」
「納期が短いから国内のエンジニアだけでは難しい」
このようなお悩みがあれば、オフショア開発を検討してみてはいかがでしょうか。
コウェルのラボ型開発では、チーム編成の前にメインとなるメンバーとの面談が可能です。 ブリッジSEやプロジェクトリーダーが信頼に値する人物かどうかを、直接お客様の目でご確認いただけます。
ご相談は無料です。興味はあるけれど、これまでなかなか踏み出せなかった、他のオフショアとは合わなかったという皆様、この機会にコウェルのラボ型オフショア開発をお試しください。
なお、コウェルに関する詳細資料は以下でダウンロードすることが可能です。
このほか、弊社の具体的なサービスや導入事例については以下をご覧ください。
コウェルのサービスメニュー>>>
コウェルは、日本とベトナムから世界中のお客さまへ高品質なソフトウェアテスト・品質保証・オフショア開発サービスを提供しています。
コウェルの開発導入事例>>>
コウェルは情報通信、金融、流通・小売サービス、医療・ヘルスケアなど、さまざまな業界のお客様の導入を支援しています。