システム開発とはどのような業務か。システム開発の概要や流れについて解説
記事の監修
代表取締役村越 聖人
2006年からエンジニアよりデジタル業界でのキャリアをスタート。
大小様々なWebシステム開発およびシステム運用保守を経験。
フルスタックエンジニアとして上流から下流工程まで一連の業務を担当するとともに、サーバー設計、構築、運用設計などのサーバー管理者業務も兼任。
近年は、顧客折衝を含む提案型営業からDMP絡みのデータ分析業務をはじめ、プロジェクトの全体統括・SEなど業務要件に合わせたポジショニングで顧客ニーズの最大化を図るサービス提案を実施。
新規事業で立ち上げた自社サービスにて、発明者として特許取得。
2019年5月 株式会社glorious future 設立。
2006年からエンジニアよりデジタル業界でのキャリアをスタート。
大小様々なWebシステム開発およびシステム運用保守を経験。
フルスタックエンジニアとして上流から下流工程まで一連の業務を担当するとともに、サーバー設計、構築、運用設計などのサーバー管理者業務も兼任。
近年は、顧客折衝を含む提案型営業からDMP絡みのデータ分析業務をはじめ、プロジェクトの全体統括・SEなど業務要件に合わせたポジショニングで顧客ニーズの最大化を図るサービス提案を実施。
新規事業で立ち上げた自社サービスにて、発明者として特許取得。
2019年5月 株式会社glorious future 設立。
システム開発とは、どのような業務なのでしょうか。この記事では、システム開発の概要や流れ、スムーズな進め方について解説します。
- システム開発について知りたい人
- システム開発の種類を知りたい人
- システム開発の流れを知りたい人
システム開発とは
システム開発とは、どのような業務なのでしょうか。まずは、システム開発の概要について解説します。
課題解決や生産性向上のための仕組みを作ること
システム開発を広義に定義すると「課題解決や生産性向上のための仕組みを作ること」です。イメージとしては「ITを活用して課題解決や生産性向上に取り組むこと」が思い浮かぶ方も多いでしょうが、場合によってはITを使わないケースもあるかもしれません。
抱えている課題を解決したり生産性を向上させるには、必ずしもITが必要とは限らないからです。それらを「システム開発」と定義するべきかどうかは難しいところですが「問題解決のためには必ずITが必要である」という視点になると本質的な部分を見落としてしまう可能性もあります。
特定の目的を達成するためのソフトやハードを開発すること
とはいえ、ITが課題解決や生産性向上に大きく寄与するのは事実です。そのため、一般的に「システム開発」という言葉が使われる場合は「特定の目的を達成するためのソフトウェアやハードウェアを開発すること」という意味になるでしょう。
さらに絞り込むと、ソフトウェア開発という意味合いで使われることが多いです。従業員の勤怠を管理するための勤怠管理ソフトウェアや、社内コミュニケーションのためのグループウェア等が挙げられます。
システム開発を行ったからといって必ずしも課題解決や生産性向上に繋がるとは限りませんが、上手く活用すれば効果は大きいでしょう。
内製と外製
システム開発には大きく分けて、内製と外製が存在します。ざっくり説明すると自社内で必要なシステムを開発するのが内製、開発を外部に委託するのが外製です。
どちらを選ぶかは、自社が置かれている状況によるでしょう。既に社内に開発部が存在する場合やこれから作る予定がある場合は内製を選んだ方が合理的かもしれませんし、そうでない場合は外製を選ぶのが効率的かもしれません。
双方共にメリット・デメリットが存在するため、特性をしっかり理解して選ぶことが大事です。
システム開発とは、課題解決や生産性向上の仕組みを構築すること
- IT(ハードおよびソフト)が活用される
- 目的に沿ったシステムを構築する
- おおまかに内製と外製に分けられる
システム開発手法にはどんなものがある?
では次に、システム開発の手法にはどのようなものがあるのかを解説します。
ウォーターフォール型
ウォーターフォール(Waterfall)とは、日本語で「滝」を意味する言葉です。その名の通り、流工程から下流工程まで順々にプロセスを進めていくのがウォーターフォール型の特徴です。
多少の行き来は生じるかもしれませんが、ウォーターフォール型では基本的に前の工程が完了しないと次に進めません。それ故に進捗の分かりやすさや予算・納期の決めやすさといったメリットがあります。
対して、一度計画したプランの変更が難しかったり、顧客の意見を開発に反映させづらいといったデメリットがあります。作りたいシステムがある程度固まっており、工程をしっかりと管理した上で確実かつ計画的な開発を行いたい場合に有用でしょう。
アジャイル型
アジャイル(agile)は「素早い」「機敏な」という意味を持つ言葉です。その名の通りシステムを素早く、かつ状況の変化に機敏に対応しつつ開発するのが特徴です。
アジャイル型では細かな仕様を決めず、小規模なサイクル(設計・実装・テスト)を繰り返してシステムを完成に近づけます。細かな仕様を決めないので状況の変化に対応しやすく、顧客の意見を開発に取り入れやすいのがメリットです。
対して、予算やスケジュールが組みづらかったり、プロジェクトマネジメントの困難さがデメリットとして挙げられます。顧客の要望や環境変化が何よりも優先される場合に有効な開発手法でしょう。
その他
その他の開発手法としては、スパイラルモデルやプロトタイピングが挙げられます。
スパイラルモデル型ではサブシステムごとに工程を回して開発し、その都度試作品を顧客にチェックしてもらいます。仕様変更に柔軟に対応できたり品質の担保に繋がりますが、コストが肥大化しやすいリスクがあります。
プロトタイピング型ではまずシステムの試作品を作り、顧客にチェックしてもらいます。そこからブラッシュアップを繰り返し、システムを完成に近づける手法です。
最初にプロトタイプの提供がなされるため、完成品のイメージを掴みやすいのがメリットです。
システム開発にはさまざまな手法がある
- ウォーターフォール型はプロセスを順々に進めるやり方
- アジャイル型は細かなサイクルを繰り返して完成させるやり方
- 他にもスパイラルモデルやプロトタイピング等が存在する
システム開発の主な流れ
続いて、ウォーターフォール型におけるシステム開発の主な流れをご紹介します。他の開発手法においてもこれらを切り分けて活用することが多いため、知っておいて損はありません。
企画
まずは、どのようなシステムを開発したいかを企画します。システム開発の目的は「自社が抱えている課題の解決」であることが多いため、場合によっては課題を明確にするところから始めるのがベターです。
たとえば、下記のようなものが挙げられます。
- 既定処理を自動化するためのシステム
- 管理(勤怠、進捗等)を効率化するためのシステム
- 出先でも細かな業務を行えるようにするシステム
自社が抱えている課題を明確化することで、自ずとどのようなシステムを作るべきかが見えてくるでしょう。
要件定義
作りたいシステムがある程度決まったら、続いて要件定義に入ります。システム開発を外注する場合は開発業者を探し、依頼した後の工程になります。
要件定義では、システムに必要な要件を洗い出して定義します。一般的には開発側が手動して顧客の要望を細かくヒアリングし、システムに必要な要素をまとめる形です。
システム開発を依頼する顧客側としては、要件定義で伝えるべきことを確実に伝えるのが大事です。特にウォーターフォール型の開発形態では完了した工程に戻るのが難しいため、後から仕様を大きく変更するのは不可と考えた方が良いでしょう。
伝えるべきことをしっかりと伝えるためにも、企画段階でどのようなシステムを作るべきかを明確化する必要があるわけです。
システム設計
要件定義が完了したら、次はシステム設計に移ります。システム設計は大きく「外部設計」と「内部設計」に分かれており、外部設計を行った後に内部設計を行うのが一般的です。
外部設計では、主にユーザーが触れる範囲を設計します。具体的には画面のレイアウトや操作方法、出力データ等が挙げられるでしょう。
対して、内部設計では主にユーザーから見えない部分の設計を行います。具体的にはプログラムによる内部処理やデータ管理等が挙げられます。
その特性上、外部設計はクライアントのチェックを要しますが、内部設計はその限りではありません。システム開発を依頼する顧客側としては、提出されたものをしっかりとチェックして(あくまで外部設計で対応できる範囲内で)要望を伝えるのが重要です。
開発
システム設計が完了したら、続いて開発に入ります。開発フェーズでは仕様書に基づいてプログラミングを行い、システムを形にします。
開発段階において顧客側からすべきことはほぼありませんが、場合によっては逐一コミュニケーションを取るのが良いかもしれません。何かしらのトラブルが起きて納期通りに納品されないケースが生じた場合、なるべく早く知っておいた方が対処しやすいからです。
もちろん、開発を阻害しない程度のコミュニケーションに留めるのが大事です。リスクに備えすぎて開発効率が低下してしまうのは本末転倒でしょう。
テスト
無事開発が完了したら、仕様通りに動くかどうかテストを行います。具体的にはシステムにさまざまな動作をさせ、バグが生じたら逐一修正するといった作業です。
こちらも開発と同じく、顧客側が関与する余地はあまりないでしょう。
運用
テストが完了してシステムが完成したら、納品された後に本番運用に入ります。テストの段階で主だったバグは修正されていますが、もしかしたら運用上何かしらの不備が生じるかもしれません。
その場合はアップデート等での対応になりますが、納品運用後のアフターフォローをどの程度行ってもらえるかをしっかりチェックしておきましょう。システムの運用においては定期的な保守やメンテナンスが必要になるため、どのように行うかを決めるのも重要です。
ウォーターフォール型におけるシステム開発の流れ
- 作りたいシステムを企画し、要件定義を行う
- 要件定義に基づきシステムを設計し、仕様通りにプログラミングする
- テストでバグを修正し、納品後本番運用に入る
システム開発を効率的に進めるポイント
続いて、システム開発を効率的に進めるポイントをいくつかご紹介します。どのような点に気をつければ、システム開発がスムーズに進むのでしょうか。
内製か外製か
まず考えたいのが、システム開発を内製するか外製するかです。内製は自社内のリソースでシステム開発を行うもので、外製は外部の業者に開発を委託するやり方です。
どちらにもメリットとデメリットがあるため、自社が置かれている状況やニーズに応じて決めましょう。例えば、既に社内に開発チームを抱えている場合は内製した方が効率的かもしれません。
そうでない場合は余程の事情がない限り、外注した方が合理的でしょう。ITは専門的な知見が求められる分野なため、ゼロから開発を試みるのは費用対効果的に望ましくないからです。
費用相場を知る
システム開発には少なくない額のコストがかかります。費用相場を知ることで、コストパフォーマンス向上に繋がるかもしれません。
どのくらいの費用がかかるかはケースバイケースですが、システム開発におけるコストの大半は人件費です。多くの場合、システム開発に携わるエンジニアの作業単価と作業時間に設備費等の固定費用を加え予算が決まります。
すなわち作業単価の低い開発業者に依頼する、もしくは作業時間を短縮すればコスト削減に繋がるでしょう。ただし、費用を削りすぎることによって求めていたシステムが得られない可能性もあります。
バランスを鑑み、適正な予算を組むことが大事です。
信頼できる業者を見つける
システム開発をスムーズに進めるには、信頼できる業者を見つける必要があります。信頼できる開発業者に依頼すれば自社のニーズにしっかりと耳を傾けてくれ、抱えている課題の解決に繋がるシステムを提供してくれることでしょう。
システム開発に限った話ではありませんが、事業上の取引を行う際には相手を信頼できるかどうかが重要なファクターになります。100%確実に見極めるのは難しいところですが、要点となるポイントをいくつか設けるのは手かもしれません。
例えば、下記のようなものが挙げられます。
- レスポンスの素早さ
- 応対の丁寧さ
- 開発実績の豊富さ
信頼できる開発業者を見つけられれば、システム開発に生じる所々の問題もクリアできるでしょう。
システム開発を効率的に進めるには、下記のような点に気を配ろう
- 内製と外製の違いを知る
- 費用相場を知り、正しい予算を組む
- 信頼できる開発業者を見つける
まとめ
システム開発とは、自社が抱える課題解決や生産性向上のための仕組みを構築することです。システム開発についてしっかりと理解し、開発を成功に導きましょう。
システム開発とは、課題解決や生産性向上のための仕組みを作ること
- 主にITシステムの開発を指す
- システム開発にはさまざまな手法がある
- 信頼できる業者を見つけるのが大事