ITシステム開発における自社開発と委託開発の違いと開発の流れについて一挙公開!
- 委託開発
- 自社開発
- 開発工数
昨今ではDX(デジタルトランスフォーメーション)の流れで、手動で行っていた業務のIT化が進める生産性の向上などが、様々な会社で行われています。
そのような風潮の中で、既存の業務をITシステムに変更したいとき、どのような手順を踏み、どのようなコストがかかるのか、どれくらいの期間がかかるのか、不安になってしまうことがあると思います。
本記事では、ITシステムを開発する際、自社開発と委託開発の違い、流れ、コストについてご紹介していきます。
目次
システム開発に必要な要素とは?
そもそもシステム開発に必要な要素は何なのでしょうか?
大きく分けて以下の3つが必要な要素になります。
- エンジニア
- 要件
- 責任者、マネージャー
以下で詳しくご紹介していきます。
エンジニア
システム開発で最も必要な要素は、実際に開発を進めていくエンジニアです。
業務をどのようにITシステムに落とし込んでいくかを考えるエンジニア、システムの基本的な設計を考えるエンジニア、実際にプログラミングやテストを行うエンジニアなど、様々なエンジニアが必要です。
要件
要件とは、いわばシステム開発のゴールです。利用者がシステムに求めるものを明確にし、システム化を行う範囲やシステムに期待される役割や効果を事前に明らかにしておく必要があります。
この要件はエンジニアだけでは決めることができません。実際ITシステム化される業務を行っている人や、業務の責任者が中心となって決めていく必要があります。
責任者、マネージャー
最後に必要な要素としては、ITシステム化を担当・推進するマネージャーです。この役割はプロジェクトリーダー、プロジェクトマネージャーとも呼ばれます。システム開発では納期が決まっており、なおかつお金やメンバーなどのリソースが有限です。
また、ITシステム化を進める上で、プログラムのバグやメンバーの途中離脱といった、予測できない様々な問題なども発生していきます。お金やメンバーのやりくり、問題の解決をおこなう能力があるマネージャーはシステム開発に必要不可欠です。
自社開発と委託開発とは?
システム開発には、大きく分けて以下の2種類の開発体制があります。
- 自社開発
お金からメンバーまですべて自社の要因で行う開発体制。 -
委託開発
お金だけ用意して、プロジェクトマネージャからエンジニア、開発の管理は外部のSIerなどに委託を行う開発体制。
この開発体制には、どのような共通点や違いがあるのでしょうか?また、それぞれメリットとデメリットがあるのでしょうか?
具体的に以下でご紹介していきます。
自社開発と委託開発の共通点とは?
自社開発と委託開発の共通点は、
- 要件の明確化
- 要員(メンバー)の計画
- 開発の手法
- マネジメント
- コスト
の5つになります。以下が具体的な解説をします。
要件の明確化
自社開発でも、委託開発でも、要件は事前に明確化しておく必要があります。
システム化の効果、範囲、メリット、役割を明確にしておかないと、自社、他社問わず、エンジニアはIT開発ができませんし、委託開発の場合は開発中や納品時にトラブルになる恐れがあります。
委託開発であれば、要件を明確化するときにコンサルティングを行ってくれる場合もありますし、自社開発でも要件が不明な場合は、要件定義だけ外注することも可能です。必ず要件は明確にして、開発を進めていく必要があります。
要員(メンバー)の計画
次に、要員(メンバー)の計画についてです。
自社開発する場合も、委託開発する場合も、設計やテストになど、各工程において必要なエンジニアのメンバーは異なります。例えば、大規模なITシステムを開発する場合、要件定義や設計の工程に比べ、テスト工程は倍以上の人員を必要とします。
突然人数を増やすことは、メンバーの仕事の兼ね合い依存する部分があり、非常に難しいです。そのためどの工程でどの程度メンバーを集めておくか、事前に大まかに決めておく必要があります。
開発の手法
自社開発でも、委託開発でも、開発の手法は変わりません。現在、開発の手法は大きく分けて2種類あります。
- ウォーターフォール型開発
ウォーターフォール型開発は、システムの開発工程を「要件定義」「基本設計」「詳細設計」「実装」「単体テスト」「受入テスト」のように、分割して実施していきます。ウォーターフォール型開発の特徴は、事前にすべての機能を決めてしまうことです。このメリットとしては予算や要員の見積もりが容易になることです。デメリットとしては、機能を追加する際には再度基本設計等を見直す必要があり、手戻りが大きくなってしまい、コストが大幅に増えてしまうことです。 -
アジャイル開発
アジャイル開発は、コミュニケーションとチームワークを重視し、一定の期間を設定して小さい規模の開発を反復、改善していく開発手法です。「スクラム」「ペアプログラミング」といった手法を駆使して、小さな規模の開発を駆使してくことで高速にシステムの開発を行っていきます。この開発手法のメリットとしては、機能追加が容易になるということです。ユーザーの要望等を即座に反映しながら開発できるため、機能追加の際には追加のコスト等はあまりかかりません。デメリットとしては、最初の方針を定期的に確認しないと構築しているシステムの要件からずれたシステムが出来上がってしまうということです。
システムを自社開発する場合も、他社開発する場合も、ウォーターフォール型開発か、アジャイル開発のどちらかを採用し、システム構築を進めていくことになります。委託開発であれば、開発を依頼するSIerなどに、アジャイル開発やウォーターフォール開発の経験について事前にヒアリングをするといいでしょう。
マネジメント
自社開発でも、委託開発でも、システム開発プロジェクトのマネジメントの考え方は変わりません。チェックポイントごとに、進捗や予算の管理を適切に行わないと、遅れや予算超過を招いてしまいます。また、開発者との定期的なコミュニケーションも必要です。
例えば、開発途中の成果物を確認し、要件にあっているかどうか、都度確認を行って、ずれがある場合は修正を行う必要があります。このように、自社開発でも、委託開発でも、マネジメント面で求められるスキルは基本的に変わりません。
コスト
システム開発にかかるコストで一番大きなものは、人件費です。システム開発では、事前に、開発にどのくらいの人件費をかける必要があるか、「工数」という単位で算出します。例えば、1人が1か月で開発できるシステムであれば「1人月」という工数で人件費を試算します。
なお、委託開発の方は、外注先に提示されたコストで支払いを行うため、自社開発よりも1人あたりの人件費がかかる場合があります。
自社開発と委託開発の相違点と、委託開発の工数
自社開発と委託開発について、様々な共通点があることがわかりました。では、両者の違いとはどのようなものがあるのでしょうか?
大きく分けて以下の4つが挙げらます。
- 外注先の選定
- 外注先へのオリエンテーション
- 外注先とのコミュニケーション
- 受入
以下で詳しく解説します。
外注先の選定
自社開発と違い、委託開発では、外注先の選定を行う必要があります。具体的に、外注先を選定するにはどのような順序を踏む必要があるのでしょうか?
- 候補の選定
複数の外注先に、システム開発が可能かどうか、コンタクトを取って確認します。外注先の会社のHPから問い合わせたり、イベント等で交換した名刺をもとに連絡を取ったり、といった形でコンタクトをとるといいでしょう。また、クラウドソーシングサービス等でフリーランスのエンジニアにお願いする、という手段もあります。そのような場合は仲介業者に登録し、どのような仕事かを明記した後、募集をかけましょう。 -
提案書の受領
提案依頼書(RFPとも呼ばれます)を自社側で作成し、外注先に渡します。外注先は、この提案依頼書をもとにコストや概要設計といった内容を記載した提案書を作成します。自社側では、受領した提案書をもとに外注先を選定します。ここで、単に値段が低いから、といった理由で外注先を選定するのではなく、開発するシステムの理解度や外注先が抱えるエンジニアのクオリティを見極めて、外注先を選定する必要があります。場合によっては打合せを設定して雰囲気などを確認するのもいいでしょう。
外注先へのオリエンテーション
外注先を決定したら、外注先と納期や課題について、最初の話し合いを行い、システム開発プロジェクトがスタートします。秘密保持の契約や、システム開発の体制、責任者、会議体(定期的なコミュニケーションの機会をどうするか)、システム開発の期間、目的、どの開発手法で進めていくか、などを共有し合います。
このオリエンテーション後に、具体的なシステム開発が進んでいくことになります。なお、オリエンテーションのことをキックオフミーティング、などと呼ぶ場合もあります。
外注先とのコミュニケーション
自社開発とくらべて他社開発では、外注先とのコミュニケーションが大事になってきます。定例会などでの進捗管理や、イレギュラーな事態の発生時に報告を受ける場面など、外注先とのコミュニケーション機会は非常に多くなるでしょう。外注先とのコミュニケーションで注意しておくべきことは以下の通りです。
- 自社側での窓口を少なくする
自社側で、外注先とのコミュニケーションを行う窓口はできる限り少なくしておきましょう。自社内での情報共有の手間が省けるだけでなく、重要な事項を言った、言わないでトラブルに発展するケースを少なくすることができます。 -
外注先との契約内容を意識する
契約内容によっては、自社側から外注先に指示を出す場合、偽装請負等の法律違反になるケースがあります。例えば、準委任契約であれば、外注先のリーダーに対してのみ、指示を出すことが可能です。いくら親しくなったからと言って、法律違反をしてしまうと、プロジェクトを進めていくうえで大きな問題に発展しかねません。契約内容については意識して、自社側のメンバーにも定期的に注意喚起を行いましょう。
受入
委託開発では、外注先から納品したドキュメントやプログラムをテストや検証、審査などを行う、受入のフェーズが必要です。ドキュメントの内容に過不足がないか、構築され、納品されたシステムは正常に稼働するか、要件を満たしているか、といった観点で受入を行いましょう。
受入が完了すると、委託開発はクローズになることが多いです。
委託開発のメリットとデメリットとは?
自社開発と委託開発の共通点と、相違点についてそれぞれみていきました。では自社開発と委託開発のメリットとデメリットについて、様々な観点で見ていきます。
自社の負担
委託開発と比べ、自社開発では、自社の負担が非常に大きくなります。例えば、自社開発でたくさんのエンジニアを集めるには、採用活動や人事異動を行う必要があります。
一方で、委託開発では他社に必要な人数を提示するだけで、他社がエンジニアを集めます。また、自社に開発のスキルがない場合は研修や人材育成もコストとしてかさみますが、委託開発ではスキルを持った要員をアサインするだけで解決します。
コスト
コストに関しては委託開発のほうが基本的に大きくなります。1人あたりの1か月のコストは、委託開発のほうが、人件費に加え利益を上乗せするため、2倍近くに上ることも多いです。
納期
自社開発と委託開発では、委託開発のほうが納期を短縮することができます。例えば、システム開発に遅れが出た場合、自社開発では巻き返すための人員調達が難しいですが、委託開発の場合は容易に人員調達が可能です。
また、契約時に納期を決めるため、外注先としては納期を伸ばすと契約違反になり、なんとか納期に間に合わせようとします。
コミュニケーション
コミュニケーションは自社開発のほうが圧倒的に容易になります。委託開発では開発拠点が離れることもあり、日常的なコミュニケーションはとりにくくなります。また、先述した通り、法律により外注先のメンバーとの直接的なコミュニケーションが禁じられる場合もあります。
まとめ
システム開発において、開発に必要な要素、具体的なコストの項目、委託開発と自社開発の違いについて記載しました。システム開発においては前提を明確にしておかないと、コスト増などの思わぬトラブルや開発が失敗する、といった事態を招いてしまいます。
開発に必要な要素や、委託開発、自社開発のメリットを明確に理解して、システム開発を進めていきましょう。また、委託する会社の選定もしっかりと行うことが大事です。依頼を検討されている会社さんの開発事例はしっかりと確認しておくことがおすすめです。
また、弊社トップゲートでも開発を承っておりますので、ぜひ候補の一つとしてご検討いただければ幸いです。お見積もりだけでも対応可能です。
弊社トップゲートでは、Google Cloud (GCP) 利用料3%OFFや支払代行手数料無料、請求書払い可能などGoogle Cloud (GCP)をお得に便利に利用できます。さらに専門的な知見を活かし、
- Google Cloud (GCP)支払い代行
- システム構築からアプリケーション開発
- Google Cloud (GCP)運用サポート
- Google Cloud (GCP)に関する技術サポート、コンサルティング
など幅広くあなたのビジネスを加速させるためにサポートをワンストップで対応することが可能です。
Google Workspace(旧G Suite)に関しても、実績に裏付けられた技術力やさまざまな導入支援実績があります。あなたの状況に最適な利用方法の提案から運用のサポートまでのあなたに寄り添ったサポートを実現します!
Google Cloud (GCP)、またはGoogle Workspace(旧G Suite)の導入をご検討をされている方はお気軽にお問い合わせください。
過去の開発事例紹介資料も、公開中!
ご興味ある方は、ぜひDLしてみませんか?
開発事例紹介資料をダウンロードする
メール登録者数3万件!TOPGATE MAGAZINE大好評配信中!
Google Cloud(GCP)、Google Workspace(旧G Suite) 、TOPGATEの最新情報が満載!