システム開発とは?工程や手法、費用から依頼先の選び方まで徹底解説

システム開発の工程(流れ)や手法、費用を知りたい担当者もいるのではないでしょうか。今回は、業務を効率化を実現する「システム開発」のプロセスや開発事例、外注する場合に知っておきたいメリット・デメリットや選び方をご紹介します。

目次

システム開発とは「IT技術を使った仕組みづくり」のこと

システム開発とは、業務の効率化や最適化を目的として行う「仕組みづくり」のこと。具体的には、ソフトウェアプログラムを使って業務システムを構築していく工程を指し、「設計やプログラミング、テストといった一連の作業」を総称したものと言えます。

自社でシステム開発が必要となったとき「具体的に何をする必要があるのか?」と悩む担当者もいるのはないでしょうか。ここからは、システム開発の全体像や流れを分かりやすくお伝えします。

システム開発4つの手法

システム開発には、プロジェクトに合わせてさまざまな手法が用いられます。企業によっては独自の開発方法が用いられることもありますが、ここでは代表的な4つのシステム開発手法をご紹介します。

ウォーターフォールモデル工程を一つずつ完了させて、システム全体を完成させる手法
アジャイル開発サブシステムを都度リリースしながら機能を追加していく手法
スパイラルモデルサブシステム毎に試作品を作成、完成後一挙にリリースする手法
プロトタイプモデル開発初期につくる試作品をもとに、完成形を目指す手法

開発モデル①ウォーターフォールモデル

ウォーターフォールモデルは、あらかじめ全機能に関する要件定義や設計を綿密に行った後に開発をスタートし、工程を1つずつ順番に終わらせていく開発手法です。

事前の打ち合わせが重視されるため、多くのケースでは、他のモデルに比べて開発着手までに時間がかかります。前の工程に戻って修正できない点にも、注意が必要でしょう。

しかしながら、確実に前へ進める手法のため「進捗状況の把握」や「品質の担保」が容易だというメリットがあります。従来から使われている手法であり、大規模なシステム開発プロジェクトなどで採用されることの多いモデルです。

開発モデル②アジャイル開発

アジャイル型開発は、システム完成までのスピードを重視した開発手法です。より小さな単位に分割したシステム(サブシステム)の開発を、優先度の高い順に行っていきます。

サブシステムごとに「要件定義→設計→実装→テスト→リリース」というサイクルを繰り返し、リリースを重ねながら、最終的にシステム全体を完成させるイメージです。

ウォーターフォールモデルとの違いは、はじめに厳密な仕様設計を行わない点です。開発期間中はシステム構築を行いながら随時、変更や修正を行います。アプリケーション開発などの分野で主流のモデルです。

開発モデル③スパイラルモデル

スパイラルモデルもアジャイル開発と同様に、サブシステムを重要なものから順に開発していく手法です。

アジャイル開発と異なる点として、スパイラルモデルは、サブシステムの開発工程が完了したらその都度、試作品を作り、フィードバックを受けながら完成度を高めていきます

また、1つの機能が完成し品質が保証された時点で、その都度リリースしていく「アジャイル開発」に対し、スパイラルモデルの場合は、すべての機能が完成した段階で一挙にリリースする流れになります。

開発モデル④プロトタイプモデル

プロトタイプモデルは、開発初期の段階で、機能制限や簡易化をした「試作品(プロトタイプ)」を作り、それをもとに検証と修正を繰り返しながら完成を目指す開発手法です。

試作品を用いてユーザーに評価してもらう工程を設けることで、技術的な問題や課題点が早期に発見でき、トータルの開発工数を減らすことができます。

試作品をつくるために時間やコストがかかることから、小規模なシステム開発に向いているモデルです。

HRog編集長菊池

今までにないビジネスモデルを構築する場合、プロトタイプモデルから始めるのがオススメです。早期に実物をユーザーに触ってもらうことで、想定していなかった問題や理想の顧客体験を考えるヒントを多く得られます。全て作り切ってからやり直すよりも手戻りが少なく、結果的に期間やコストを抑えることができます。

一方で既存のビジネスモデルで勝負する場合、開発する規模・期間・人員に応じて開発モデルを選択するとよいでしょう。開発エンジニアなど登場人物が複数社に渡る場合など情報共有のコミュニケーションコストも見えないコストとして考えておいたほうがよいです。

システム開発の工程と関係者

システム開発は、効率的に質の良いシステムをつくるため、いくつかの工程に分けて作業を行うのが一般的です。複雑化しやすい開発工程をフェーズごとに細分化することで、最終的な完成後の不具合を回避することができるのです。

ここでは、開発手法の中でもっともよく知られている「ウォーターフォールモデル」の流れをご紹介します。

IT業界においては、工程を川になぞらえて、プロセスの前半部分を「上流工程」、後半部分を「下流工程」と呼びますが、ウォーターフォールモデルでは、上流工程から下流工程へと順番に作業を進めていくのが特徴です。

システム開発の工程(流れ)

①要件定義

システム開発で最初に行うのが「要件定義」です。要件定義とは「依頼する人とつくる人との間で合意した納品条件」、つまり「どういうシステムをどうやってつくるのか」を明確に定めたものです。

ウォーターフォールモデルでは、要件定義に基づいて開発が進められるため、この時点で開発者と認識の相違がないようにすることが重要です。同時に、予算や開発後の運用方法、開発期間なども話し合い、計画していきます。

②外部設計(基本設計)

外部設計は、要件定義をもとにユーザーインターフェース(UI)を設計し、基本設計書等を作成する工程です。インターフェースとは、ユーザーから見える部分のことで、「画面」など外面的な見た目のことを指します。

ハードウェア設計やレイアウト、セキュリティ機能など、ユーザー側の視点に立ち、具体的に搭載すべき機能や特徴を検討します。

③内部設計(詳細設計)

内部設計の工程では、外部設計で作成した「基本設計書」の内容をもとに「詳細設計書」を作成します。

詳細設計書の中身は、具体的な実装を想定した「機能仕様書」などで、開発者側の視点に立って作成します。個々で作成した設計をもとに、次のプログラミング工程へ移ります。

④プログラミング

プログラミングの工程は、内部設計において作成した詳細設計書をもとに、システムエンジニア(SE)やプログラマーが実際にプログラミングを行って行く工程です。

⑤テスト

プログラミングが完了したら、それぞれのシステムが正確に機能するかどうかを確認するために、各種テストを実施します。

●単体テスト
実際に作成した個々のプログラムが、要件定義で決めた通りの動きをするか確認をします。単体テストでは、プログラムのモジュール(=部品のこと)単位でテストを行います。

結合テスト
複数のプログラムを組み合わせた状態で、決めた通りに機能するかを検証する工程です。単体テストを行ったモジュールを結合して、テストを行います。

●システム(総合)テスト
単体テストと結合テストが完了したら、システム(総合)テストを実施します。全てのプログラムが、最初に決定した要件定義の通りに作動するかを確認する工程です。アクセスが多い時の耐久性や処理速度の速さなど、さまざまな角度からテストを行います。

●運用テスト
運用テストは、システムをリリースする前の最終テストです。実際にシステムを運用したときに、不具合が出ないかどうかを検証します。実用性に重点を置いたもので、あらゆる状況や出来事を想定してテストが行われます。

⑥システム移行(引き渡し)

テストが完了したら、システム移行を行います。実際に運用できるよう、旧システムから切り替える工程です。移行方法は、一気にまとめて切り替える「一斉移行」や、少しずつ切り替える「順次移行」などから選択します。

⑦運用・保守

運用・保守は、リリースしたシステムが正常に稼働し続けるために必要不可欠なものと言えるでしょう。運用と保守の役割は次の通りです。

運用と保守の役割

  • 運用とは、改修やアップデートなど、システムが止まらないように支える業務のこと
  • 保守とは、システムに問題が発生した場合に対応する業務のこと

適切な運用・保守を行うためには、開発したシステムの特徴を理解し、どのようなシステム運用を行うとよいのか、十分検討することが大切です。

システム開発に携わる関係者

システム開発では、さまざまな人が関わって、1つのシステムを構築していきます。ここでは、主な関係者を紹介します。

システムエンジニア(SE)

システムエンジニアは、システムの要件定義が主な担当業務です。後述するプログラマーと同じく、設計やプログラミングなども行うこともあります。システム納品後は製品のサポート・運用を担当するケースが多いでしょう。

プログラマー(PG)

プログラマーの仕事は、システムエンジニアが設計した仕様書に基づいて、プログラミングを行うことです。設計どおりに動作するかを確認するテストや、バグを見つけて修正する作業も担当します。

プロジェクトマネージャー(PM)

プロジェクト全体のマネジメントを担うのが、プロジェクトマネージャーです。主に、プロジェクトの進行管理やトラブル対応を行います。

人材業界におけるシステム開発事例

システム開発を行うことで、どのようなことが実現するのでしょうか。ここでは、人材業界におけるシステム開発事例を3つご紹介します。

事例①求人サイトをつくる

オンライン上で求人情報の提供する「求人サイト」。リクナビやマイナビなどが有名です。

求人サイトの構築にあたっては「求職者と企業をうまくマッチングする仕組みづくり」が可能です。具体的には、求人情報を容易に管理できる機能や、企業側が応募者の情報をリアルタイムに閲覧できる機能などの開発が行われます。

事例②ダイレクトリクルーティングサービスをつくる

企業が人材に直接アプローチする採用手法である「ダイレクトリクルーティング」。求人サイトとは違い、企業がデータベース上から求める人材を探し、アプローチする方法であることが特徴です。

ダイレクトリクルーティングサービスでは、「自社にマッチする求職者を企業が探しやすくする仕組み」を作ることが重要です。具体的には、求職者データベースの検索機能や、求職者の企業ページの足跡機能などの開発が必要です。

事例③口コミサイトをつくる

人々のクチコミを集めた「口コミサイト」。企業口コミサイトとして、「カイシャの評判」や「転職会議」などがあります。

口コミは、信用性の高い情報として扱われる一方、自由に投稿ができるからこその「リスク対策」が重要です。サイト構築にあたっては、口コミの品質を保つための各種機能に加え、求人媒体へ送客するための仕組みづくりなどが可能です。

HRog編集長菊池

いずれのサイトにおいても人材サービスにおける肝は求職者の集客と企業の集客、そしてその出会いを創出することがポイントになります。集客の観点ではSEO、つまり求職者・企業がどのようなキーワードで検索した際にサービスと出会うのか?そしてUX、つまり求職者・企業がどんなコンテンツでどんな体験をして満足してもらうのか?を中心に考える必要があります。

掲載期間の決まっている広告型の求人サイトでは最も集客効果のある求人ページは掲載期間終了とともにSEOの効果も薄れてしまいます。一方で各エリアの固定ページ(検索結果ページ)を作ることで「エリア 求人」といったキーワードでの集客効果が期待できるため、サイトの組み方1つで効果も変わってきます。

システム開発を外注するメリット・デメリット

外注とは「自社以外の企業に開発を依頼すること」、内製とは「自社でシステム開発を進めること」を言います。

システム開発を行うためは、専門的な知識やノウハウが必要となります。自社にシステム開発部門がない場合は、「外注」も選択肢の一つとなるでしょう。

ここでは、外注と内製それぞれのメリット・デメリットをご紹介します。

メリットデメリット
外注●その分野の専門家に開発を依頼できる
●スケジュール通りに開発を進めやすい
●設備投資をする必要がないケースもある
●内製に比べ、費用が高くなりやすい
●情報漏洩などセキュリティリスクが高くなる
●知見やノウハウを自社に蓄積できない
内製●見積もりや契約が必要ないため、スピーディーに開発を進められる
●システムを仕様変更する場合など、臨機応変に対応しやすい
●知見やノウハウを社内に蓄積でき、専門家を社内で育成できる
●ノウハウや設備がない場合は、コストがかかる
●計画通りに進まない場合に費用が膨らむ
●開発途中での、エンジニアの退職リスクがある

外注する場合の費用は、プロジェクトによってさまざまですが、システム開発を「単発」で行うのであれば、外注の方が手間やコストを抑えられる可能性が高いでしょう。

新たにシステム部門を設けたり、エンジニアを雇用したりするためには、多額の投資が必要となるためです。

一方で、「将来、内製化する予定がある」という場合は、外注だと知見やノウハウを蓄積できないことが大きなデメリットとなります。自社の状況や将来の方針などを考慮して、対応方法を検討してみてはいかがでしょうか。

HRog編集長菊池

人材サービスにおけるシステム開発は「一度作ったら終わり」となることはほとんどありません。様々なサービスの登場により求職者の行動は賢くなってきています。必ずといっていいほどバージョンアップや追加機能開発が発生します。そのため長期視点でみると自社で開発チームを構えることがベターですが、エンジニア・デザイナーの組織づくりに苦戦するケースも見受けられますので、自社の強み・弱みを正しく捉えた選択を行いましょう。

システム開発にかかる費用相場

システム開発を外注する場合、費用が気になる方もいますよね。ここでは、外注費用がどのように決まるのかご紹介します。

外注は人件費が8割を占める

システム開発の費用は、開発規模や内容、動員する技術者の人数によって異なるため、一概に相場をお伝えすることはできません。しかし、人件費が全体の約8割を占めると言われています。

人件費の計算方法は、プロジェクトに必要な技術者の数に、開発にかかる日数を掛けて計算されます。

人件費の計算例

1ヶ月単価が90万円のエンジニアを3人、3ヶ月間動員した場合(90×3)× 3 = 810 万円

人件費の計算時に使用する「技術者の単価」は、技術者の経験値や依頼先によって大きく異なります。例えば、システムエンジニアの1ヶ月単価は、初級の場合は「60〜100万円程度」、上級になると「100〜160万円程度」が相場となるでしょう。

人件費以外にかかる費用

人件費以外に、次のような費用がかかるケースもあります。

  • システム開発をするための設備費
    (パソコン代、サーバー代、クラウドサービス代など)
  • 開発を行うためのスペースを用意する費用
    (オフィスの賃料、電気代、光熱費など)
  • 技術者の交通費  など

外注を検討する場合は、人件費だけでなく、全体的な費用を把握し予算を検討するようにしましょう。

システム開発会社(外注先)を選ぶときのポイント

ここでは、外注先選びに失敗しないためのポイントをご紹介します。

開発会社にその業界に詳しい人がいる

外注先は、自社が抱えている課題に詳しい開発会社を選びましょう。業界動向や業務内容をよく理解している依頼先なら、課題や要望の意思疎通がスムーズに行えるため、システム開発の成功率が高くなるでしょう。

コミュニケーション能力の高い会社を選ぶ

システム開発を依頼する場合、依頼側と受注側のコミュニケーションが非常に重要です。認識にズレが生じているまま開発が進んだ場合、システム完成後に「思っていたものと違う」と後悔する可能性があるためです。

のちにシステムの修正が必要となった場合は、追加費用が必要になることも考えられます。システム開発のコミュニケーション能力にも注目をして、外注先を選定しましょう。

開発実績やエンジニアのスキルを確認する

開発したシステムは、機能改善やアップデートを繰り返しながら5年、10年と長いスパンで運用していくのが一般的です。依頼先が発注段階において信頼できるかどうかも、選ぶときのポイント。開発実績やエンジニアのスキルも、十分チェックしておきましょう。

保守、運用にかかる費用も予算に入れて検討する

社内システムがリリースされたあとは、適切な保守・運用が必要となります。社内にシステム運用の担当者がいない場合は、運用・保守までサポートしてもらえるシステム開発会社を選ぶ必要があるでしょう。

一般的に、システムの運用費は初期費用の10~20%程度が目安となります。開発後の費用も考えて、依頼先を検討できるとよいですね。

見積もりをとって費用対効果を検証する

外注先は、費用の安い会社を選べばよいものでもありません。複数社の見積もりを取った場合、「開発スピードはどうか?」「業務への理解はあるか?」など、費用対効果を確認して外注先を選びたいですね。

HRog編集長菊池

特に人材業界でエンジニアとのコミュニケーションに慣れていない場合、「思っていたものが正しく出来上がってこなかった」なんていう体験をされた方もいらっしゃるのではないでしょうか。エンジニア目線で見ると「AともBとも取れる」内容の場合、「AともBとも取れる」内容を作るのがエンジニアです。業界・サービス・業務の理解があり、提案をしてくれるエンジニアはごく少数です。金額には表われませんが、コミュニケーションコストも注目しておかなくてはいけません。

システム開発の外注先の探し方

システム開発の外注先を探す方法を3つご紹介します。

Webで検索する

外注先を探す方法として、インターネット検索があります。システム開発サービスを提供する企業のホームページがあれば、得意分野などを調査し、自社の課題にマッチした依頼先を選びましょう。

発注者と受注者をマッチングする「ビジネスマッチングサイト」の活用も、近年増えています。開発会社選びのサポートがあるため、担当者のIT知識が乏しい場合でも、外注先選びがスムーズに行えるでしょう。

展示会へ行く

さまざまなシステム開発会社が出展している「展示会」へ行くことも、外注先探しにオススメです。近年は、新型コロナウイルス感染症の流行で「オンライン展示会」も開催されています。開発会社の製品や技術を実際に確かめられる機会として、注目してみてはいかがでしょうか。

知人から紹介してもらう

既存のつながりを頼りに探す方法も、外注先の探し方の1つです。先述した2つの方法に比べて、「自社の要件にマッチする会社か」「すぐに引き受けてもらえるか」という点を考慮しなければなりませんが、方法の一つとして検討してみるとよいでしょう。

HRog編集長菊池

人材サービスでのサービス開発をお考えの場合、HRogソリューションより編集長の私までお気軽にご相談ください。自社で組織を構えるべきか、パッケージソフトを使うべきか、外部パートナーに協力を仰ぐべきか一緒に考えさせていただきます。

システム開発の工程や手法を知り、システム開発の方法を検討!

システム開発は専門的な知識やノウハウを要するため、外注する企業も多いでしょう。外注する場合は、解決したい課題を明確し、信頼して任せられる依頼先を検討することが大切です。内製と外注の特徴や、予算、費用対効果などを検証し、自社に合ったシステム開発の方法を検討しましょう。