VNEXTの会社紹介資料
2023/09/08
ゼロからソフトウェアやシステムを開発する「スクラッチ開発」。
プログラムされたものを一部カスタマイズするパッケージ開発に比べると、開発期間やコストの面では劣りますが、オーダーメイドでシステムを
作れるというメリットがあります。
本記事では、スクラッチ開発の概要からメリット・デメリット、パッケージ開発との違いなどを解説していきます。
目次
|スクラッチ開発とは?
システムの構築方法には「スクラッチ開発」と「パッケージ開発」の2つに分かれます。
スクラッチ開発とは、既存のパッケージソフトを使わず、ゼロからオリジナルのシステムを開発する方法です。
スクラッチ開発の「スクラッチ(scratch)」は、英語の慣用句「from scratch」からきている言葉で「ゼロから」「最初から」といった意味になります。
語源の通り、ゼロからシステムを開発するスクラッチ開発は、既存システムにはない、独自性の高い機能を実装する際に力を発揮する開発手法です。
代表的な事例としては、JRの座席件予約システム「MARS」やマイナンバーカードの基幹システムが挙げられます。
|フルスクラッチ開発との違い
スクラッチ開発を語る上で、「フルスクラッチ開発」という言葉もあります。
フルスクラッチ開発とは、テンプレートやフレームワークといった、ひな型となるプログラムを一切使用せずに開発を行うことです。
スクラッチ開発とほぼ同じ意味ですが、スクラッチ開発でも一部のテンプレートを流用する場合もあるので、そういった際に区別して表現します。
|パッケージ開発との違い
スクラッチ開発の対義語で使われているのが「パッケージ開発」です。
パッケージ開発とは、既存のシステム(パッケージソフト)を利用した開発手法です。
既に出来上がっているシステムやアプリケーションを、自社の要件に合わせてカスタマイズしていくことでシステムを構築していきます。
パッケージ開発は、開発期間の短縮とコスト削減がメリットですが、あくまで希望のシステムをある程度実現できるパッケージを導入するので、
業務フローをシステムに合わせなければならないといったケースも起こり得ます。
また、使用期間が長くなると、途中で公式サポートが切れてしまう可能性もあります。
|スクラッチ開発の進め方
スクラッチ開発の流れは、基本的に下記のようになります。
打ち合わせ
↓
要件定義
↓
画面デザイン(UI)
↓
システム開発
↓
チェック・デバッグ
↓
テスト運用
↓
本番公開
↓
運用
↓
メンテナンス・拡張
このなかで、特に重要なのが「要件定義」のステップです。
要件定義とは、どんなシステムを作りたいかを開発会社に伝える工程で、ここでの依頼をもとにシステムが作られていきます。
この際に曖昧な表現で希望の条件を伝えてしまうと、後々作り直しとなり、費用がかさんでしまいます。
これを避けるために、口頭だけで伝えるのではなく、紙媒体を用いるなどして正確に情報を伝えるよう心掛けましょう。
|スクラッチ開発のメリット
システム開発によって何を解決したいのか、成し遂げたいのかによって選ぶ開発手法は変わってきます。
以下では、スクラッチ開発のメリットを3つご紹介します。
|開発の自由度が高い
スクラッチ開発の最大のメリットは、開発の自由度が高いことでしょう。
ゼロからシステム開発を行うので、自社の業務フローに合わせたシステムで業務効率をアップすることが可能です。
また、B2Cの場合、顧客のUX(ユーザー体験)を向上させるために、独自性の高いアプリケーションを開発することもできます。
自社独自の機能を搭載し、他社と差別化をすることで、市場競争力を高めることも期待できます。
|費用対効果が高いシステムを実現できる
最初からシステムを構築するので、他の開発手法よりコストは高くなってしまいます。
しかし、自社に必要な機能だけを盛り込んだシステムを作ることができるので、無駄がなく、要件に対する費用対効果が高いシステムの実現が可能です。
また、スモールスタートで開発し、ユーザーの拡大などに合わせ機能拡張をするといった柔軟な対応も可能です。
一方、パッケージ開発のシステムでは、汎用性を確保するため、一般的に需要の高い機能が優先的に搭載されています。
そのため、自社に不要な機能も含まれています。
このように長期的に見た時、スクラッチ開発の方が、費用対効果が高いシステムを実現できます。
|長期にわたって使い続けられる
パッケージ開発の場合、そのパッケージを提供している企業がサポートを終了してしまう可能性もゼロではありません。
また、日々新たに発覚する脆弱性に対する対応やサポート打ち切りによるパッケージの切り替えが発生する可能性もあります。
その場合、最初からシステムを作り直す必要があり、かえってコストがかかってしまいます。
しかし、スクラッチ開発の場合は、システムが終了する心配がなく長期にわたり使用が可能です。
自社にシステム開発部門を設けている場合や、システム開発会社の協力体制があれば、必要に応じてシステム改修を行うことが可能なため、
メンテナンス性も高く、システムが古くならずに使い続けることができます。
|スクラッチ開発のデメリット
では、スクラッチ開発のデメリットはどのようなものがあるのでしょうか?
以下では、デメリットを3つご紹介します。
|開発期間が長い
スクラッチ開発の最大のデメリットは、開発期間が長くなることです。
オーダーメイドでゼロの状態から設計や開発を行うため、通常半年から数年の開発期間を要します。
また、開発期間が長いとその間にビジネス環境が変化し、業務プロセスも変わってしまう可能性があります。
そうなると、当初の要件定義と業務の実態との間にギャップが生じるリスクが懸念されます。
スクラッチ開発でシステムを構築する場合は、これらの点を考慮しスケジュールを設定する必要があります。
|コストが高くなる
システム開発のコストは、開発に関わるリソースの人件費に拠るところがあります。
開発期間が長くなればなるほど、それに応じてコストも必然と高くなります。
また、スクラッチ開発のノウハウがあるシニアレベルのエンジニアのアサインが必要になるので、エンジニアの単価も上がりがちです。
そのため、システムが納品された際の初期費用は、パッケージ開発に比べるとかなり高額になります。
相場としては、システムの規模にもよりますが、数百万円から数千万単位にのぼることもあります。
もし、スクラッチ開発を行いたい一方で予算に悩む場合は、オフショア開発を導入し、コストを抑えることもひとつの手段です。
|開発会社を選ぶのが難しい
スクラッチ開発は、自由度の高いシステムを開発できますが、自社の開発担当者や外注先の開発会社の手腕で決まるといっても過言ではありません。
要件定義は自社が主体で行なった場合でも、要件をシステムとして具体化するのは開発会社です。
システム構築のためには、希望の要件を正確に汲み取り、システムにうまく落とし込むスキルとノウハウが求められます。
具体的には、スクラッチ開発のノウハウがあり、フレームワークやツール選定の知見のあるエンジニアであることが必要です。
また、基幹システム開発の場合、システム周りの汎用的な技術力だけではなく、相当のドメイン知識も有するエンジニアである必要があります。
開発会社選定の段階で、こういった技術力やノウハウを持っているかどうかを見抜くことはなかなか容易ではありません。
選定の際は、豊富な開発実績の有無や問い合わせ・見積りでのやり取りの誠実さなど、顧客に寄り添った対応をしてくれる伴走型の開発会社を
選ぶことが重要です。
【あわせて読みたい】システム開発を委託する開発会社の選び方は?委託のポイントも徹底解説!
|スクラッチ開発の向き・不向き
ここまで、スクラッチ開発の概要やメリット・デメリットを解説してきました。
システム開発を行う上で、「ビジネスゴール」や「ユーザーゴール」といったシステム導入の目的をはじめに明確にすることが必須です。
目的を明確化し、スクラッチ開発に向いている開発と向いていない開発との見極めは重要です。
|スクラッチ開発に向いているプロジェクト
スクラッチ開発には工数やコストがかかりますが、独自性の高い要件や複数の要件を満たすことができます。
たとえば、以下のような開発が向いています。
・納期と予算に余裕のあるシステムやソフトウェアの開発
・パッケージでは実現できない特殊な手順のシステム
・コア業務に使用するシステムの開発
・システムに合わせて業務フローを変更することができない場合
・セキュリティなどの特殊な要件を満たすシステム
・新規サービスで開発するシステム
・機能拡張や改修が発生しそうなシステムの開発
|スクラッチ開発に不向きなプロジェクト
反対に、スクラッチ開発のデメリットである「開発期間の長さ」や「コストの面」から以下のような開発は向いていません。
・システムを低予算で導入しなければならない時
・システムを短い期間で導入しなければならない時
・ノンコア業務に使用するシステムを求めている場合
・システム導入と同時に、業務フローの変更や業務の標準化を行いたい場合
いずれにしても、本当に低予算で短期導入することで目的が達成できるのか、ノンコア業務であってもコア業務と連動した業務ではないかなど、
慎重に俯瞰する必要があります。
|スクラッチ開発には「アジャイル開発」がおすすめ
スクラッチ開発の流れは、一般的なシステム開発と同じです。
<スクラッチ開発の流れ>
1.要件定義:システムの目的や顧客の要求から、システムの要件を定義づける
2.外部設計(基本設計):システムの基本的な仕様を設計する
3.内部設計(詳細設計):システムの機能を実現するための内部処理を設計する
4.コーディング:プログラムを作成する
5.単体テスト:機能ごとのプログラムを単体で動作確認をする
6.結合テスト:プログラム同士を結びつけて動作確認をする
7.システムテスト(総合テスト):実際と同じ環境下で動作確認をする
8.運用テスト:顧客側で実際に運用して動作確認をする
スクラッチ開発でシステムを構築する際、開発手法として、「ウォーターフォール開発」と「アジャイル開発」が候補に挙がります。
ウォーターフォール開発とは、「要件定義→設計→実装→テスト→運用」までの各工程を段階的に完了させていく開発手法です。
一方、アジャイル開発は、「計画→設計→実装→テスト」といった開発工程を機能単位の小さいサイクルで繰り返すのが最大の特徴です。
アジャイル開発は、優先度の高い重要な機能から着手できるため、素早くリリースしてからブラッシュアップしていくことが可能です。
つまり、リリースまでの期間を短縮することができ、段階的にシステムを運用することができます。
そのため、スクラッチ開発のデメリットである開発期間の長さをカバーし、メリットである機能拡張の柔軟な対応などが実現可能です。
|まとめ:スクラッチ開発を活用し、目的を達成できる開発を行ってみよう
スクラッチ開発は、開発期間の長さやコスト面から敬遠されがちな側面もあります。
しかし、市場競争の増大から、自社の課題や顧客ニーズに合ったプロダクトを作るためには、パッケージ開発では、自社が思う要件が実現できない
場合もよくあります。
スクラッチ開発は自由度が高く、自社オリジナルのシステムを開発するのに適しています。
デメリットである「開発期間の長さ」はアジャイル開発でカバー、「コスト面」はオフショア開発を導入してコスト削減をするなど、対策をすれば
理想のシステムを実現できます。
システム開発・導入をすることで、何をしたいのか、成し遂げたいかといった目的を達成することが本来あるべき姿です。
スクラッチ開発のメリットを最大限活かし、目的を達成できるオリジナルのシステムを開発してみてはいかがでしょうか?
|VNEXTはスクラッチ開発の実績多数
弊社VNEXTでは、スクラッチ開発で新システムや業務系システムの開発を数多く支援してきました。
スクラッチ開発の経験や知見、ノウハウが豊富なエンジニアが多数在籍しているため、プロジェクトの要件定義から設計・構築~運用・保守まで、
ワンストップでサポートします。
「自社のプロジェクトに合った開発方法はなんだろう・・」
「スクラッチ開発を検討しているけど、費用感が不安・・・」
「オフショア開発ってどんな感じなの・・・?」
「スクラッチ開発の開発実績集が欲しい・・・」
といった、疑問や悩みがございましたら、まずはお気軽にVNEXTにお問い合わせください!
▶️ お問い合わせ:https://vnext.co.jp/contact.html?view=contact