Introduction
企業活動の効率化や生産性の向上、顧客満足度の向上などのために、適切な業務システムやツールを開発することは非常に重要です。しかし、システムやツールの開発方法にはさまざまなものがあるため、目的や規模、機能などに応じて最適な方法を選ぶことが重要です。
自由度の高い開発をしたいなら、ゼロの状態から開発を行うスクラッチ開発が適しています。
この記事では、スクラッチ開発とは何か、パッケージ開発との違い、スクラッチ開発によるメリットやデメリットなどについて解説します。
目次
スクラッチ開発とは

スクラッチ開発とはどのような開発手法なのか、フルスクラッチ開発やパッケージ開発との違いについて解説します。
既存製品のソフトウェア製品を利用せず、新規に開発すること
スクラッチ開発の「スクラッチ」には「ひっかく」という意味があり、そこから転じて「スタートラインを引く」→「最初から」という意味合いになりました。そのため、ゼロの状態からシステムやソフトウェアなどを開発することを指します。既存のプログラムやパッケージソフトを使うことなく、完全にオーダーメイドで一からつくりあげる開発です。
デジタル庁の『デジタル・ガバメント推進標準ガイドライン-サービス・業務改革並びに政府情報システムの整備及び管理について-』によると、以下のように定義されています。
スクラッチ開発
スクラッチ開発とは、既存のソフトウェア製品を改修する等の方法で開発するのではなく、新規に開発することをいう。
開発時には、要件定義から設計を入念に行い、顧客の要望にあった開発を進めます。既存のフレームワークやライブラリなどは活用しますが、一からプログラミングを行って、システムやソフトウェアを開発します。
そのため、コストはかかりますが、顧客の要望にマッチしたオーダーメイドのシステムや、ソフトウェアを開発することが可能です。
フルスクラッチ開発との違い
フルスクラッチ開発とは、スクラッチ開発のなかでもとくに、純粋にゼロから開発する開発のことです。スクラッチ開発では、部分的に既存の業務ライブラリやパッケージなどを使うこともありますが、フルスクラッチ開発ではそのような既存機能の利用を一切行いません。純粋にゼロから開発することを強調する意味で、フルスクラッチ開発と呼ぶことがあります。
パッケージ開発との違い
パッケージ開発とは、一そろいのソフトウェアがパッケージとして提供されているものを、設定変更や画面デザインの変更、または、少量の追加コーディングなどによってカスタマイズすることです。既存のシステムやソフトウェアに、必要に応じてカスタマイズや設定変更を行って提供します。そのため、ゼロから開発するスクラッチ開発とは真逆の手法ともいえるでしょう。
パッケージ開発には、開発時間とコストを削減できるというメリットがありますが、そのかわりカスタマイズ範囲が狭いのがデメリットです。
スクラッチ開発のメリット
スクラッチ開発を行うことで得られるメリットについて、解説します。
自由度の高いシステムを構築できる
ゼロの状態から開発し、オーダーメイドで顧客の要望をとり入れて開発するため、自由度の高いシステムを構築できます。
パッケージ開発の場合、ある程度仕様や機能が決まっており、画面デザインを変える、設定値を変えるなどの範囲でしか要望を出せません。しかしスクラッチ開発なら、自社のビジネスや業務の流れにぴったりとあったシステムやソフトウェアを開発できます。使い勝手を考慮し、求める機能を搭載することで、自社にとって理想の開発を進められるでしょう。
リリース後も必要に応じてカスタマイズが可能
リリース後にカスタマイズ対応が可能な契約にしている場合は、実際に使ってみて生じた問題や必要な機能などについて、カスタマイズを行えます。
システムやソフトウェアを開発する場合、実際に運用してみないと、問題点や使い勝手などがわからないこともあるでしょう。とくに、複雑な仕様のシステムや特殊な業界のソフトウェアなどは、運用後に機能変更やカスタマイズが必要なことも多いです。
そのような場合には、スクラッチ開発を採用して機能追加が可能な状態にしておくことで、要件にマッチしたシステムやソフトウェアを開発できるでしょう。
拡張性・柔軟性に優れる
システムやソフトウェアを開発する際は、拡張性や柔軟性も重要です。
たとえば、いまはシステムのユーザー数が少なくても、今後増える可能性がある、必要な機能が増えそうなどの場合は、拡張性や柔軟性を考慮しておかなければなりません。その点、スクラッチ開発では、あとからでも機能追加や機能変更ができ、開発範囲を狭めることなく柔軟に対応が可能です。
ただし、何でも自由に機能追加や変更ができるわけではなく、その分コストや開発期間が必要なことに注意が必要です。また、開発途中に何度も仕様変更を入れると、品質の低下につながる恐れもあります。
長期的に使えるシステムを構築できる
パッケージ開発の場合、開発企業が倒産したり、サービスを終了したりすると、サポートが打ち切られてシステムを使えなくなることもあります。開発企業の資金繰りが悪化したため、予告なしに突然サービスが終了するというケースもあります。
しかし、スクラッチ開発によって開発されたシステムなら、開発企業が倒産したとしても使いつづけることが可能です。そのため、長期的にシステムを使いつづけられるでしょう。
ただし、スクラッチ開発でも開発企業が倒産してしまうと、そのあとのサポートを受けられなくなるため、信頼できる安定して業務をつづけている企業を選ぶ必要があります。
スクラッチ開発のデメリット
スクラッチ開発のデメリットについて説明します。メリットだけでなく、デメリットも考慮したうえで、スクラッチ開発を選ぶかどうかを検討するとよいでしょう。
費用が高い
すでにご説明したとおり、スクラッチ開発では、ゼロの状態から顧客の要望にあわせてオーダーメイドで開発を進めます。そのため、システムの枠組みが決まっているパッケージ開発と比べると、費用が高くなるという特徴があります。
スクラッチ開発では、顧客の要望を聞いて要件を洗い出して固め、設計や製造を一から行い、すべてのテストを行います。そのため開発コストは高くなりがちです。
一方のパッケージ開発では、決まったテンプレートをカスタマイズするため、設計や製造、テスト作業などが前述のスクラッチ開発に比べ少なく、コストを抑えることが可能です。
開発期間が長くなりやすい
スクラッチ開発では、顧客の要望を聞いて要件定義を行い、ゼロから設計や製造、テストを行います。そのため、開発期間も当然長くなります。一方でパッケージ開発は、すでにできあがっているものをカスタマイズするだけなので、開発期間は短いことが多いです。
スクラッチ開発を依頼する場合は、十分に開発期間をとっておく必要があるでしょう。
開発・運用に高い技術力が求められる
スクラッチ開発では、開発・運用時に高度な技術力が求められるため、開発会社を選ぶ際には、開発担当者のスキルや経験について十分に調べる必要があります。
パッケージ開発の場合は、すでに何度も同じ形の開発やカスタマイズ、運用が行われているため、新たな問題点なども生じにくく、実績のある作業を行うことがほとんどです。しかしスクラッチ開発では、顧客の要望にあわせて新しいシステムやソフトウェアを開発するため、一から開発する設計力やプログラミング能力などの開発力が求められます。
開発ベンダー選びがむずかしい
上記でご説明したとおり、スクラッチ開発の場合には、開発担当者に高い技術力が求められます。また、担当者レベルの話だけではなく、企業として企画力、開発力などがないと、難易度の高い開発案件を最後まで進められないでしょう。
さらに、開発するシステムやソフトウェアの種類、使う業界などによって、求められる開発力はまったく異なります。
このように、スクラッチ開発を依頼する場合、能力が高い技術者が集まっている、企業として企画力や開発力がある、開発を依頼するシステムやソフトウェアの開発経験があるなど、多くの条件を満たしていなければなりません。そのため、開発ベンダー選びが非常にむずかしいといえます。
スクラッチ開発に向いているケースとは?

スクラッチ開発やパッケージ開発が向いているケースは、どのようなケースなのかをご説明します。
【スクラッチ開発に向いているケース】
|
スクラッチ開発が向いているケース |
パッケージ開発が向いているケース |
予算と納期 |
予算と納期に比較的余裕がある |
予算と納期にあまり余裕がない |
機能追加 |
定期的に発生しそう |
あまり発生しない |
対象業務 |
コア業務に使用する 独自の業務が多い 業務フローの変更がむずかしい |
コア業務以外に使用する 一般的な業務が多い 業務フローの変更が比較的容易 |
カスタマイズ |
独自のカスタマイズが必要 |
カスタマイズがそこまで必要ではない |
スクラッチ開発の流れ
一般的なスクラッチ開発の進め方の流れは、以下のとおりです。
1.要件定義
顧客からの要望や現状の課題などを洗い出し、要件を固めます。
2.設計
要件定義書にある機能や性能、制約条件などをもとに、基本設計を行います。そのあと、システムの内部設計や物理データなどについて、詳細設計を行います。
3.プログラミング
設計書をもとにプログラミングを行い、ソースコードを作成します。
4.テスト
テストを行います。通常、単体テスト、結合テスト、システムテスト、運用テストなどと観点が異なるテストを、工程をわけて実施していきます。
5.リリース・運用/保守
顧客環境にリリースし、運用/保守のフェーズに入ります。
まとめ
スクラッチ開発とは、既存のプログラムやパッケージソフトを使うことなく、完全にオーダーメイドで一からつくりあげる開発です。自社独自の機能をオーダーメイドで開発したい、細かい点をカスタマイズしたいなどの場合に適した開発方法です。
また、スクラッチ開発か、パッケージ開発かなどの観点以外にも、開発工程にはさまざまな種類があります。たとえば、従来のウォーターフォール開発とは異なり、柔軟に仕様変更などができる、新しい開発手法のアジャイル開発もあります。
アジャイル開発を導入して、顧客のニーズや仕様変更に柔軟に対応できる開発を行いたい場合は、SHIFTのアジャイル開発支援(SHIFT 1LINE)をご活用ください。お客様のアジャイル内製開発体制の構築とプロジェクト推進において、開発・ITガバナンス・プロダクトデザインなど、すべての局面で強力にサポートいたします。
継続的なプロダクト開発に伴走する、SHIFTのアジャイル開発支援
「品質の高いシステム開発ができる外注先を探している」「新しい開発手法を導入して生産性の向上や顧客満足度の向上につなげたい」「アジャイル開発を導入したいが、社内にノウハウがない」などの悩みを抱えている企業様は多いかもしれません。
アジャイル開発は、比較的新しい開発手法です。短いスパンの開発を繰り返すため、機能変更や機能追加に柔軟に対応できるというメリットがあります。しかし、アジャイル開発をスムーズに進めるためには、豊富な専門知識や経験、ノウハウが必要です。アジャイル開発に関する知識やノウハウがない状態で、アジャイル開発にシフトするのはむずかしいでしょう。
そこで、SHIFTのアジャイル開発支援(SHIFT 1LINE)をご活用いただければ、お客様のアジャイル内製開発体制の構築とプロジェクト推進において、開発・ITガバナンス・プロダクトデザインなど、すべての局面で強力にサポートいたします。
短期的な人材確保や長期的な人材育成など、お客様のニーズにあわせて対応し、お客様のシステム開発に柔軟性とスピードをもたらします。

監修
永井 敏隆
大手IT会社にて、17年間ソフトウェア製品の開発に従事し、ソフトウェアエンジニアリングを深耕。SE支援部門に移り、システム開発の標準化を担当し、IPAのITスペシャリスト委員として活動。また100を超えるお客様の現場の支援を通して、品質向上活動の様々な側面を経験。その後、人材育成に従事し、4年に渡り開発者を技術とマインドの両面から指導。2019年、ヒンシツ大学の講師としてSHIFTに参画。
担当講座
・コンポーネントテスト講座
・テスト自動化実践講座
・DevOpsテスト入門講座
・テスト戦略講座
・設計品質ワークショップ
など多数
――――――――――
ヒンシツ大学とは、ソフトウェアの品質保証サービスを主力事業とする株式会社SHIFTが展開する教育専門機関です。
SHIFTが事業運営において培ったノウハウを言語化・体系化し、講座として提供しており、品質に対する意識の向上、さらには実践的な方法論の習得など、講座を通して、お客様の品質課題の解決を支援しています。
https://service.shiftinc.jp/softwaretest/hinshitsu-univ/
https://www.hinshitsu-univ.jp/
――――――――――