一言にシステム開発といっても、スマホアプリやWebアプリ、基幹系システムから業務システムにいたるまで、その種類も範囲も多岐にわたります。とりわけライバル他社との競争に打ち勝つためには、機能性や操作性に優れたシステムの開発が不可欠といっても過言ではないでしょう。
しかし、開発の種類や手法には様々なものがあり、開発にかかる費用も期間もまちまちです。よって、いざ開発するとなっても、どこから手をつけて良いのか分からない経営者や開発担当者の方も少なくないのではないでしょうか。
そこで今回は、
・システム開発とは
・開発の種類と開発依頼の流れ
・開発の手法
・開発の依頼費用
・開発依頼時の注意点
・外注先の選び方
について詳しく解説します。
I. システム開発とは
システム開発とは、業務効率化やサービス向上のために自社や顧客が利用するツールや仕組みを構築することを意味します。その多くは、IT技術を駆使して行われます。
システム開発は、大きく以下の3つに分類されます。
Web系 | Webアプリ・モバイルアプリ・SNS・ECサイトなど |
オープン系 | 販売管理システム・顧客管理システム・勤怠管理システム・会計管理ステムなど |
汎用系 | 金融機関や大企業の基幹システム全般 |
社内に一定以上のスキルや経験をもつIT人材を確保している場合は、自前でシステム開発を行うケースもあります。また最近では、専門性の高いITエンジニアがいなくともノーコードやローコードのサービスを利用して簡易的な自社アプリを開発するケースも増えてきています。
しかし多くの場合、専門業者にアウトソーシングするのが一般的です。というのも、IT技術は日進月歩で変化のスピードが極めて速く、業界を問わず、アプリやソフトは目まぐるしく進化しているからです。そのため、専門知識やスキル、豊富な開発経験をもつシステムエンジニア(SE)やプログラマー(PG)に依頼しなければ、理想通りの社内システムや競争優位に立てるアプリの開発は、到底不可能といえるでしょう。
実際の開発現場では、国内のIT企業に開発を依頼するケースが多くを占めます。しかし国内のIT人材不足が年々顕著になっていることから、開発費用が高騰している面が否めません。そこで最近では、東南アジアの優秀で安価なIT企業にアウトソーシングする「オフショア開発」も急速に広がっています。
II. システム開発の種類とそれぞれの開発依頼の流れ
システム開発の種類として、主となるのが「ウォーターフォール型」と「アジャイル型」の2つです。それぞれ開発の目的や期間、費用、プロセス、また向いている開発やメンテナンスサービスなども異なります。
よって、開発を依頼する際は、どちらの形式で開発を進めるべきかを見定める必要があります。それぞれの特徴や向いている開発、開発依頼の流れについて具体的に解説しましょう。
1.ウォーターフォール型とは
開発内容が具体的かつ詳細に決まっており、成果物という形で納品するのが「ウォーターフォール型」です。上流から下流に水が流れるようにして規定の開発作業が行われるというニュアンスからその名がつきました。
開発業者は、明確な成果物を納期までに収めることをコミットするため、未完成や納期の遅れは許されません。その意味で、「請負型契約」が基本となり、依頼者は開発がスタートすると、その多くを委託先に任せるのが一般的です。
ウォータフォール型に向いているのは、以下のようなシステム開発です。
- 大規模な開発プロジェクト・・・予算が大きく、関わる人員も多いため途中で仕様変更ができないパターン
- 仕様が変更する可能性が極めて低いプロジェクト・・・金融機関や政府・自治体、流通業などの基幹システム
- 極めて高い完成度が要求されるプロジェクト・・・政府や自治体をはじめインフラ業者などリリース後のトラブルや不具合が許されないパターン
逆に仕様変更が多いことが予想されたり、ゴールが明確になっていなかったりする開発には不向きです。開発のプロセスが型にはまっている分、万が一途中で仕様変更や修正を行うとなると、手戻り工数が多くなるのはもちろん、追加費用も少なからずかかります。そのため、ユーザーの細かな要望やトレンドに合わせて細やかに機能を追加したり変更したりするケースの場合、ウォーターフォール型は避ける方がよいでしょう。
ウォーターフォール型の開発依頼の流れ
ウォーターフォール型開発の流れは、以下の通りです。
要件定義
↓
基本設計(外部設計)
↓
詳細設計(内部設計)
↓
開発・実装(プログラミング)
↓
テスト(単体および結合)
↓
テスト(システムおよび運用)
↓
リリース
↓
運用・メンテナンス
ウォーターフォール型は、基本的に手戻りが許されず、完成後の修正も回避しなければなりません。しかし、開発がスタートすると、その多くは開発業者に一任するのが一般的なため、依頼者側はほぼ完成に近い段階でしか実際の成果物を確認することができないのが難点となります。
リリースする段になって、「想定と違う!」という行き違いや、「言った、言わない」といった責任のなすりつけ合いが起きないためにも、第一段階の「要件定義」にかなりの時間と労力を費やす必要があります。システム開発とは、往々にして複雑で抽象的な面がありますが、ウォーターフォール型を選択する場合、曖昧な点が多ければ多いほど後々トラブルにつながる可能性が高いです。よって、どのような仕様と機能をどのようなデザインでリリースするのか、細かくいうとボタンの位置にいたるまで明確にし、依頼者と開発業者の見解を限りなく一致させる入念な作業が不可欠といえるでしょう。
2.アジャイル型とは
成果物の納品が目的ではなく、開発単位を機能ごとに分け、不具合があれば試行錯誤しながら何度も手戻りして開発を進めるのが、「アジャイル型」です。複数の機能を同時に開発するのではなく、重要度の高いものから優先的に手掛けていきます。多くは10人以下の少数チームで行い、ステークホルダーやユーザーのニーズに合わせて柔軟に仕様変更をしながら手戻りをいとわないところに最大の特徴があります。このスピーディーで小回りの効く点が、「俊敏な」とか「機敏な」を意味するアジャイルと命名された理由です。
アジャイル型は、ウォーターフォール型と異なり成果物の完成に対する責任は求められません。特定の業務に対しての契約となるため、「準委任契約」を締結するのが一般的です。
昨今は、立案からリリースまでのリードタイムをわずかでも短縮することがスタンダードとなりつつあり、要件定義からリリースまで腰を据えて取り組むウォーターフォール型よりアジャイル型の方が圧倒的に増える傾向にあります。完成度やクオリティも大切だが、競合に遅れを取らないためにも、とりあえずいち早く開発に乗り出さなければならないという場合にうってつけでしょう。
冒頭にご紹介したオフショア開発でも、案件ごとに依頼元企業の専属チームを結成して開発を進める「ラボ型」といわれるアジャイル開発が主流になっています。
アジャイル開発に向いているのは、以下のようなシステム開発です。
- 小規模の開発プロジェクト・・・汎用系ではなく、Web系やオープン系の開発で、少人数、小コストで行うパターン
- 迅速で柔軟な対応が求められるプロジェクト・・・モバイルアプリやWebアプリなどで、ユーザーのフィードバックを受けながら修正をしたり、明確なゴールを決めずに開発を進めなければならなかったりするパターン
- 全体の要件が不確定で、明らかに途中で仕様変更が起きると予想されるプロジェクト
アジャイル型の開発依頼の流れ
アジャイル開発の流れは、以下の通りです。
リリース計画の作成
↓
開発の優先度を決定
↓
イテレーションの実行と繰り返し
アジャイル型の場合は、ウォーターフォール型のように最初から要件定義に時間をかけることはありません。おおまかな仕様と方向性をリリース計画で決定し共有したら、どの機能から開発に取り掛かるかを明確にし、各開発について「要件定義」→「設計」→「開発」→「テスト」→「リリース」といったイノテーションのサイクルを必要に応じて繰り返します。全ての機能が出揃わなくても、可能な限りは完成次第順次リリースしていきます。不具合が発覚すればすぐさま修正を行います。
イノテーションを反復するためには、依頼元と開発業者どうしの距離が密でいつでも最新の情報を共有し、柔軟に方向性を微調整しながら開発を前に進めることのできる環境作りが大切です。これがうまくいけば、ウォーターフォール型のように完成間近になって「こんなはずではなかった」という想定外の自体に慌てることはなくなります。
>>> システム開発とアプリ開発の違い は?それぞれの特徴や費用・開発会社の選び方も!
III. システム開発の手法
システム開発の手法として、主に「スクラッチ開発」と「パッケージ開発」の2種類があります。
スクラッチ開発とは、まるっきり一(いち)からシステム開発を行うことを意味します。
一方のパッケージ開発は、すでに開発されたシステムを使って自社の用途にあった形で利用する方法です。
「スクラッチ開発」と「パッケージ開発」どちらを選ぶべきか?
「スクラッチ開発」と「パッケージ開発」のどちらを選択するべきかは、ケースバイケースです。以下にそれぞれのメリットとデメリットを紹介しましょう。
メリット | デメリット | |
スクラッチ開発 | ・自社にあった独自性の高いシステムが作れる ・予算に合わせてある程度機能等を調整できる ・長期にわたり使い続けることができる | ・開発費用が高額 ・導入に時間がかかる ・精度を細かく追求する必要があるため、担当者への負担が大きい |
パッケージ開発 | ・開発費用が安価 ・導入までの時間が短縮できる ・代替製品が多いので支障があれば変更しやすい | ・独自性の追求には限界がある ・システムに合わせて業務手順を変更しなければならない |
スクラッチ開発が向いているのは、以下のような場合です。
- 他の前例のない新規事業やシステムを開発したい
- パッケージ製品にはない特殊な機能を実装したい
- セキュリティやコンプライアンスで独自要件を満たす必要がある
パッケージ開発が向いているのは、以下のような場合です。
- 課題解決が可能なパッケージソフトが存在する
- 開発コストを低く抑えたい
- リードタイムを短縮したい
- 独自性を追求するのではなく、業務の標準化を目指したい
IV. システム開発の依頼費用
システム開発のコストは、一般的に必要となるエンジニアやプロダクトマネージャーなどの人数と期間によって報酬を算出する人月単価が用いられるのが一般的です。
人月単価は、具体的に「人数×月数」で求められます。これに各エンジニアの月額単価を掛け合わせたものが、最低限の依頼費用になります。
例えば、月単価50万円のシステムエンジニアとプログラマーを1人ずつ計2人使って3ヶ月で開発をする場合、人月単価は以下のようになります。
2人×3ヶ月×50万円=300万円
開発業者によってはこれ以外にも交通費などの諸経費が加算されることもあります。
ちなみにシステムエンジニアとプログラマーの各単価の相場は以下の通りです。
システムエンジニア(SE) | 初級 | 中級 | 上級 |
60〜100万円 | 80〜120万円 | 100〜160万円 |
プログラマー(PG) | フリーランスや初級 | 上級 |
40〜60万円 | 50〜100万円 |
プログラマーに関しては、どのプログラム言語を使うかによっても相場は違ってきます。例えば、JavaやC#といったエンジニア人口が比較的多いものは40〜60万円くらいが相場ですが、PythonやSwiftなど歴史が浅く、需要が高いものは60〜100万円超くらいにアップします。
プロダクトマネージャーの単価相場は、60〜100万円あたりです。
また、近年はスマホアプリの開発需要が高く、Web開発と比べると高額になるケースが多いでしょう。
システム開発を行うなら、オフショアがおすすめです。常に最先端技術にキャッチアップしているレリパは、低コストで高品質な開発により創業以来、多くの日本企業の皆様にお喜びいただいております。
Web系やオープン系、AIやブロックチェーン開発など、幅広い開発案件に対応いたします。ご用命の際は、ぜひ弊社までお気軽にお問い合わせください。
V. システム開発依頼時の注意点
続いてシステム開発を依頼する際に注意すべき点について解説しましょう。システム開発は、開発業者さえ見つければその先は勝手に進むという単純なものではありません。準備不足だと開発経験が少ないのをいいことに、高い開発費を請求されたり、質の低いいい加減な仕事でごまかされたりといった損をしかねません。そのような事態を回避するためにも、ぜひ注意点をよく理解して、しっかりとした準備を行ってください。
RFP(提案依頼書)を作成する
まずRFP(Request for Proposal/提案依頼書)を作成します。
RFPには、
・開発の目的・背景・現在の課題
・新システム導入後の具体的なイメージ・盛り込みたい機能
・開発予算
・システム利用者数・社内組織図
・パソコン・サーバー・現行システム・ソフトウェアなどの詳細情報
・新システム導入にあたっての社員教育
・その他の要望や気になる事項
以上のような内容を分かりやすく明確に書面化します。当然ですが、開発業者は自社の従来のシステムやメインの解決課題、その他の社内に根付く改善すべき問題(人材の質や不足など)については、いっさい事前情報がないのが前提です。したがって、抽象的な言葉や対面の会話だけでは十分に意図が伝わらず、重要な問題意識や目標を共有するのが困難になるでしょう。そこで上記のような情報を書面にすることで、議論が深まり、より近い立ち位置と認識で開発を進めることができるようになるのです。
開発業者としては、依頼者側の言い分をそのまま鵜呑みにするわけにいきません。そもそも開発目的が的を外していたり、提示予算では足りなかったり、開発してもシステムを使いこなせるだけの人材が不足しているといったことがあれば、開発の切り口やゴールを設定し直す必要があるでしょう。表面的な説明と依頼だけでは、こうした水面下に隠れている問題が浮き彫りになりにくいため、後になって取り返しのつかない問題になりかねないのです。
そのような事態を回避するためにも、できるだけ詳細な情報が正確に伝わる質の良いRFPを作成することが重要です。その内容によって、開発業者から信頼されたり、粗末に扱われずに済んだりもするでしょう。
予算を確保する
システム開発は、ものによって莫大な予算が必要になることがあります。ただ「こんなシステムにしたい」「この機能を実装したい」と理想ばかりが先行し、現実をみなければ開発は絵に描いた餅で終わってしまうでしょう。よって開発内容を吟味しながらも、しっかりと地に足をつけ現実を見て必要な予算を調達しておくように努めましょう。
丸投げは危険
とくにシステム開発が初めてとか、開発経験が乏しい場合によくあるのが、開発を業者に丸投げしてしまうパターンです。要件定義やリリース計画の段階では問題なく同じ考え方を共有できていると思っても、先に進むにつれてあらぬ方向にそれてしまうことが珍しくありません。
というのも、依頼者と直接打ち合わせをしたりヒヤリングしたりする人物と、実際に設計や開発(プログラム)を担当する人が違うケースがよくあるからです。するとエンジニアたちは自分の経験や考えで開発を進めて、依頼者の要望や都合を無視してしまうという結果に陥りかねません。そのため、担当者とは頻繁に連絡を取り合い、進捗状況をまめに確認するとか、わずかでも疑問点があればその場で尋ねて解決する、テストには必ず立ち会うといった配慮を忘れないように注意しましょう。
複数の見積もりをとる
見積もりの段階から一社に絞るのはおすすめできません。よほど信頼のおける知人や企業からの紹介であれば別です。そうでない限りは、少なくとも3社以上からの見積もりを取るようにしましょう。決して安ければ良いというわけではありません。しかし、本命と交渉する際に他社の見積金額を引き合いにして値下げを要求することが可能になるため、有利になるのは確かです。とくにシステム開発が初めての場合は、よく業界事情を理解する意味でも傾向の違う企業の見積もりを複数見ておくのは、今後の参考にもなるでしょう。
>>> 【最新版】WEB開発トレンド(開発言語、フレームワーク、デザイン等)を詳しく!
VI. システム開発の外注先の選び方
最後にシステム開発のアウトソーシング先を選ぶ際のポイントを3つ紹介します。
実績を調べる
外注先を検討する際には、必ず開発実績を具体的に調べることが大切です。「これができます」「あれも開発したことがあります」など、口だけならいくらでも聞こえの良いことが言えるでしょう。しかし実際にどの企業のどのシステムを開発して、その結果はどうなのか。アプリやWebシステムであれば実際にUIを体験するのもおすすめです。
加えて、これから自分たちが開発したいと考えているものと似たプロダクトであったり、業界のジャンルが同じだったりするとなお良いでしょう。話が早いですし、以前の開発経験を活かすだけでなく、より進化させた開発を期待することもできるからです。
担当者の熱意と相性重視する
開発を行うのは機械ではなく、生身の人間です。よって、担当者との相性は非常に重要です。話が通じやすければ行き違いがなくなり、気分よく仕事ができるため、開発が順調に進みやすくなります。さらに、絶対に開発を成功させるという熱意があるか、自分たちの都合ではなくクライアントファーストの姿勢が感じられるかといった点もしっかりと確認しましょう。専門用語ばかりを多用せず、こちら目線で分かりやすく説明してくれるか、といった点はとくに注目しておくことをおすすめします。
納品後のメンテナンスやアフターケアを確認する
開発が終わっても、そこで全てが終了するのではなく、本当の始まりはリリースした後に訪れます。テストでは把握できなかったバグや不具合は必ずといって良いほど発生するものです。最初から完璧を期待するのは危険です。よって、イレギュラーな事態が起きた場合にどこまでの対処をしてくれるのか、保証についてはどうかなど、メンテナンスやアフターケアの体制を費用とともにしっかりと詰めておくようにしましょう。
まとめ
システム開発に成功すると、長年の課題が解決して業務効率化が促進できたり、クライアントからの評価が上がったり、売上増につながったりと、非常に大きな満足感と達成感が得られるでしょう。
そのためには、記事内でご紹介した開発にあたっての注意点や業者選びのポイントをよく踏まえた上で開発を進める必要があります。
レリパは、創業以来7年間、日本企業に特化したシステム開発やWebアプリの開発でさまざまな実績を積み、お陰様で多くのクライアント様から確かな信頼を得るまでに成長いたしました。設計から実装まで、高い品質と迅速な開発でお客様の課題解決に全力を尽くしてまいります。システム開発をご希望の際は、ぜひお気軽にご相談ください。心よりお待ち申し上げております。