スクラッチ開発とは?メリット・デメリットとパッケージ開発との違いを解説

スクラッチ開発とは?メリット・デメリットとパッケージ開発との違いを解説

スクラッチ開発とは、システムをゼロから開発すること。プログラムされたものを一部カスタマイズするパッケージ開発に比べると、開発期間やコストの面では劣りますが、独自性の高いシステムを作れるというメリットがあります。本記事ではスクラッチ開発の解説から類似の開発手法との違いについて解説します。

➡︎【資料ダウンロード】アプリ開発の企画~発注の教科書

スクラッチ開発とは

スクラッチ開発とは、システム開発のテンプレートであるパッケージなどを利用せず、最初からオリジナルのシステムを開発することです。
スクラッチ開発の「スクラッチ(scratch)」は英語の慣用句「from scratch」からきている言葉で、「ゼロから」「最初から」といった意味になります。
文字通り、最初からシステムをつくるスクラッチ開発ですが、既存システムにはない、独自性の高い機能を実装する際に力を発揮する開発手法といえます。

具体例としては、マイナンバーカードの基幹システムが挙げられます。

フルスクラッチ開発とは

スクラッチ開発を語る上で、フルスクラッチ開発という用語もあります。
スクラッチ開発とフルスクラッチ開発はほぼ同義と認識して問題ないものの、強いて区別すると、フルスクラッチ開発とは、ひな形となるテンプレートやフレームワークを一切使わず、開発を行うことです。スクラッチ開発でも一部のテンプレートを流用する場合もあるのでそういった際に区別して表現します。

パッケージ開発とは

パッケージ開発とは、すでに出来上がっているシステムやアプリケーションを自社の要件に合わせてカスタマイズする開発手法です。
技術担当者がいなくても、導入するだけで簡単に使い始めることができるパッケージもあります。 ただし、あくまで希望のシステムをある程度叶えられるパッケージを導入するので、業務フローをシステムに合わせるといったことも起こり得ます。また、世の中の大半のシステムはパッケージ開発ではなくスクラッチ開発で構築されているものがほとんどです。

➡︎【資料ダウンロード】アプリ開発の企画~発注の教科書

スクラッチ開発のメリット

システム開発によって何を解決したいのか、成し遂げたいのかによって選ぶ開発手法は
変わってくると思います。ここでは、スクラッチ開発のメリットについて3点をご紹介します。

独自性の高い、他社との差別化が叶うシステム

パッケージ開発でも一部カスタマイズは可能な一方で、土台となるテンプレートやフレームワークが同じため、どうしても似通ったシステムになってしまう懸念があります。また限られた範囲でのカスタマイズとなるため、一部機能の妥協や、全体の網羅を怠ると結果的にチグハグで保守性の低いシステムに繋がる恐れもあります。

スクラッチ開発は、最初からシステム開発を行うので、自社の業務フローに合わせたシステムで業務効率をアップすることが可能です。また、顧客にこれまでにないCXを提供するために独自性の高いアプリケーションを開発することも可能です。こういった自社独自の機能を搭載し、他社と差別化をすることで市場競争力を高めることも期待できます。

要件が最適化され費用対効果が高い

最初からシステムを構築するので、基本的には他の開発手法よりコストがかかってしまいます。しかし、考え方によっては、自社に必要な機能だけを盛り込んだシステムを作ることができるので、無駄がなく、要件に対する費用対効果が高いシステムの実現が可能です。また、スモールスタートで開発し、ユーザーの拡大などに合わせ機能拡張をするといった柔軟な対応も可能です。したがって、従来のウォータフォール型開発に比べ、アジャイル開発と好相性の開発手法と言えます。

長期にわたり利用できる

パッケージ開発の場合、そのパッケージを提供している企業が倒産したり、サポートが打ち切りになる可能性もゼロではありません。また、日々新たに発覚する脆弱性に対する対応やサポート打ち切りによるパッケージの切り替えが発生する可能性もあります。その場合、最初からシステムを作り直す必要があり、かえってコストがかかってしまうことになります。
しかし、スクラッチ開発の場合は、システムが終了する心配がなく長期にわたり使用が可能です。
また、自社にシステム開発部門を設けている場合や、システム開発会社の協力体制があれば、必要に応じてシステム改修を行うことが可能です。したがって、メンテナンス性も高く、システムが陳腐化することなく長期間使い続けることができます。

➡︎【資料ダウンロード】アプリ開発の企画~発注の教科書

スクラッチ開発のデメリット

では反対にスクラッチ開発のデメリットはどういったものが挙げられるでしょうか。3点紹介いたします。

開発期間が長い

スクラッチ開発は、オーダーメイドでゼロの状態から設計や開発を行うため時間がかかります。通常、半年から数年の開発期間を要するため、開発期間には余裕を持つ必要があります。
また、開発期間が長いとその間にビジネス環境が変化し、業務プロセスも変わってしまう可能性があります。そうなると、当初の要件定義と業務の実態との間に乖離が生じるリスクが懸念されます。

コストが高額になりがち

やはり、システムを最初から構築するので、開発期間が長くなり、それに応じてコストも上がります。
また、スクラッチ開発のノウハウがあるシニアレベルのエンジニアのアサインが必要になるので、単価が上がりがちです。さらに、新規事業や経営改善などと関わるシステム開発の場合、ビジネスコンサルティングからできる人材が配置されるため、単価が高くなる傾向にあります。しかし、適切に人員をアサインできれば、費用対効果以上の成果物を開発することも可能です。

開発ベンダー選びが難しい

スクラッチ開発は、独自性の高いシステムを開発できる手法ですが、自社の開発担当者や開発ベンダーの手腕で決まるといっても過言ではありません。

要件定義は自社が主体で行うとはいえ、要件をシステムとして具体化するのは開発ベンダーです。システム構築のためには、希望の要件を正確に汲み取り、システムにうまく落とし込むスキルとノウハウが求められます。
具体的には、スクラッチ開発のノウハウがあり、フレームワークやツール選定の知見のあるエンジニアであることが必要です。また、基幹業務のシステム開発の場合、システム周りの汎用的な技術力だけではなく、相当のドメイン知識も有するエンジニアである必要があります。
ベンダー選定の段階で、こういった技術力やノウハウを持っているかどうかを見抜くことはなかなか容易ではありません。
委託したベンダーの良し悪しによっては、開発期間が必要以上に長引いたり、最終的に要件どおりの開発が叶わなかったりといったトラブルも起こり得ます。
また、実際にプロジェクトの計画段階や、委託を開始してからも、要件定義や保守業務等でベンダー側とのコミュニケーション工数がかかります。

したがって、豊富な開発実績の有無や問い合わせ・見積り等でのやり取りの誠実さなど、顧客に寄り添った対応をしてくれる伴走型のベンダーを選ぶことが重要です。

➡︎【資料ダウンロード】アプリ開発の企画~発注の教科書

スクラッチ開発の流れ

ここでスクラッチ開発の大まかな流れを確認しましょう。

★システム開発工程について詳しくはこちら

要件定義

スクラッチ開発を行う際は、要件定義が最も重要になります。
要件定義とは、開発するシステムを作るための要件や機能を可視化することです。要件定義はプロジェクトの成否に関わる工程です。自社の課題解決や、何を実現したいかといった開発の意図を明確にし、どのような要件が必要になるか検討し決定していきます。

設計

設計とは、要件定義で策定した要件定義書を基に、システム設計を行うことです。
設計にはユーザーが直接触れる画面デザインや操作方法を設計する外部設計、ユーザーからは見えないシステム内部の機能を設計する内部設計があります。

開発

設計が完了したら、プログラミングを行い、必要な機能を実装していきます。プログラミングは、さまざまな言語に基づいてコードを書きます(コーディング)。

テスト公開

プログラミングが終わり、開発したシステムが出来上がったら、実際に動作するかテストを行います。テストは以下の4段階に分けて実施します。

①単体テスト:機能(モジュール)ごとにテスト
②結合テスト:他の機能と連結させ、機能が正しく結合されているかをテスト
③システムテスト/シナリオテスト:完成したシステムが要件を満たしているかテスト
④運用テスト:ユーザーが受け入れ確認をするためのテスト

不具合を検出した場合には、不具合の原因となる工程まで戻り、以降の工程を再実施します。

リリース

テストで動作を確認して品質に問題がなければ公開となります。
また、導入時にベンダー側が初期設定を行う場合が多く、その際には操作マニュアルの作成や、操作方法のオリエンテーションを実施します。

保守・メンテナンス

システム開発は公開したら終わりではなく、公開後も継続的に安定した状態で稼働できるように、保守・メンテナンスが重要です。また、スクラッチ開発の場合は、公開後の状況をみて、ユーザーニーズや業務プロセスの変革から機能拡張するなど、柔軟な対応も可能です。

システム開発工程とは?発注者が知っておくべき流れやポイント

➡︎【資料ダウンロード】アプリ開発の企画~発注の教科書

スクラッチ開発に向いている開発・向いていない開発

システム開発において「ビジネスゴール」や「ユーザーゴール」など、システムを導入して何をしたいかをはじめに明確にした上で、スクラッチ開発に向いている開発と向いていない開発との見極めは重要です。

スクラッチ開発に向いている開発

スクラッチ開発には工数やコストがかかりますが、独自性の高い要件や複数の要件を満たすことができます。例えば以下のような開発が向いているといえます。

・パッケージでは実現できない特殊な手順のシステム
・システムに合わせて業務フローを変更できない業務に関わる開発
・セキュリティなどの特殊な要件を満たすシステム
・新規サービスで開発するシステム
・機能拡張や改修が発生しそうなシステムの開発

スクラッチ開発に向いていない開発

反対に、スクラッチ開発のデメリットである、開発期間の長さや金額的コストの面から以下のような開発は向いていないでしょう。

・システムを低予算で導入しなければならない時
・システムを短い期間で導入しなければならない時
・ノンコア業務に使用するシステムを求めている場合
・システム導入と同時に業務フローの変更や業務の標準化を行いたい場合

いずれにしても、本当に低予算で短期導入することで実現可能か、ノンコア業務であっても
コア業務と連動した業務ではないか等、慎重に俯瞰する必要があります。

➡︎【資料ダウンロード】アプリ開発の企画~発注の教科書

おすすめの開発手法はアジャイル開発

スクラッチ開発でシステムを構築する際、開発手法として、「ウォーターフォール開発」と「アジャイル開発」が候補になると思います。
ウォーターフォール開発は、要件定義→設計→実装→テスト→運用までの各工程を段階的に完了させていくシステムやソフトウェアの古典的な開発手法です。
アジャイル開発は、計画→設計→実装→テストといった開発工程を機能単位の小さいサイクルで繰り返すのが最大の特徴です。
アジャイル開発の場合は優先度の高い重要な機能から着手できるため、素早くリリースしてからブラッシュアップしていくことが可能です。つまり、サービスインまでの期間を短縮することができ、ビジネスのスタートを早めることができます。
したがって、スクラッチ開発のデメリットである開発期間の長さをカバーし、メリットである機能拡張の柔軟な対応などが実現可能です。

★アジャイル開発について詳しくはこちら

➡︎【資料ダウンロード】アプリ開発の企画~発注の教科書

スクラッチ開発によるビジネス成功事例

スクラッチ開発でシステムを構築し、成功したビジネス事例について紹介いたします。

クボタ

株式会社クボタは、建機・農機などの製品を軸に世界各国にトータルソリューションを提供する企業です。同社は建機のダウンタイム削減につながる、迅速かつ効率的で各サービスエンジニアの能力に左右されない故障診断サービスの開発を課題としていました。

そこで、3DモデルとARを組み合わせ、スマートフォンをかざすことで建機内部の故障箇所や対象部品の特定をビジュアルで認識できる故障診断アプリ『Kubota Diagnostics』を開発。
拡張性を鑑みて、マルチデバイスへの対応が可能なFlutterを採用。独自のCMSを構築し、ログとユーザーからのフィードバックを蓄積させることで、今後の診断フローの整備や故障余地につながるさまざまな情報を収集できるようにしました。

建機の内部を実際に確認する手間を省き、担当者の経験・スキルを問わない効率的な故障診断サポートを実現しました。
本アプリは特に故障診断のニーズが高かった米国市場にスコープを定めて開発されましたが、今後日本を含む世界各地の市場に順次展開していくことが予定されています。

★事例について詳しくはこちら

角上魚類ホールディングス

角上魚類ホールディングスは、鮮魚専門店「角上魚類」を展開する企業です。同社の鮮魚市場における発注・買い付け業務は手作業で行われており、ミスや誤配送の多発、紙を使用することによる事務作業の負荷などが課題となっていました。

そこで、受注明細やセリ原票のフォーマットを踏襲した「システムに人が合わせるのではなく、人にシステムを合わせた」アプリの制作をスクラッチ開発で実施。

全体業務フローと課題の可視化、改善ポイントの洗い出しを行い、実際の現場で動作確認を中心に入念なテストを繰り返し、不具合やユーザビリティを損なう箇所を割り出しては改善を繰り返しました。

その結果、受注明細やセリ原票のフォーマットを踏襲したUIデザインにより、手書き作業と遜色ない使い勝手の良さを実現するとともに、効率化にも成功。また、紙をデジタル化したことによるペーパーレス化にも貢献しています。

★事例について詳しくはこちら

まとめ:スクラッチ開発を活用し、目的に即した開発を

たしかにスクラッチ開発は、コストの面や開発期間の長さから敬遠されがちな側面もあります。しかし、昨今の市場競争の増大から、事業の複雑化・高度化が進行し、パッケージ開発では、自社が思う要件が実現できない場合もよくあります。

良きパートナーとなるベンダーの選定は悩ましいものの、ぜひビジネスプランニングからコミットできるコンサルティングスキルを持ったベンダーを検討してみてください。豊富な経験を基に、プロジェクトの計画段階から適切なアドバイスを行ってくれるでしょう。

➡︎【資料ダウンロード】アプリ開発の企画~発注の教科書

サービス・プロダクト開発を検討している企業ご担当者様へ

モンスターラボは、約20年にわたるサービス・プロダクト開発実績から得られたデジタル領域の知見や技術力を活かし、デジタルプロダクト開発事業を展開しています。

先端テクノロジーに対応した高度なIT人材があらゆるプラットフォーム上での開発を支援します。アジャイル開発とDevOpsによる柔軟な開発進行や、国内外のリソースを活用したスケーラブルな開発体制の構築も可能です。 また、リリース後の保守運用や品質向上支援まで伴走可能です。

モンスターラボが提供するサポートの詳しい概要は以下リンクをご確認ください。

➡︎モンスターラボのサービス概要はこちら

案件の相談はこちら

直近のイベント

記事の作成者・監修者

平田 大祐(株式会社モンスターラボ 常務執行役員)

平田 大祐(株式会社モンスターラボ 常務執行役員)

2004年IBMグループに入社し、IBM ITスペシャリストとしてシステム開発に従事。 2009年からベンチャー企業にて受託開発、コンテナ型無人データセンターの管理システム、ドローン開発などソフトウェアからハードウェア開発まで幅広く関わる。チーフテクノロジストとして2015年にモンスターラボへ入社し、2018年4月より最高技術責任者であるCTOに就任。 プロフィールはこちら