スクラッチ開発とは、既存のパッケージを使用せず、ゼロからシステム開発を進める手法のことです。今回は、スクラッチ開発の費用や期間の目安、パッケージ開発との違い、開発の流れなどを解説します。適切な開発手法の選定に悩んでいる方は、ぜひご覧ください。
目次[非表示]
スクラッチ開発とは、ソフトウェアやコンピュータシステムをゼロから作り出す開発手法のことです。英語の「スクラッチ」には「最初から」という意味があり、その名のとおり既存のプログラムやシステム開発のひな形であるパッケージなどを利用せず、ゼロからオリジナルのシステムを開発します。
これは既存システムにはない新しい機能を実装する際や、ほかのシステムとのスムーズな連携を求める際に役立つ手法です。しかしながらゼロから開発するものであるため、工期やコストがかかる点には注意が必要です。
スクラッチ開発は、「独自開発」や「手組み」と呼ばれることもあります。また、「フルスクラッチ」という言葉もあり、スクラッチ開発とは区別して用いられます。
スクラッチ開発ではゼロから作るというものの、実際にはフレームワークやテンプレートを流用して開発を進めることが多いものです。こうした流用を行わず、真の意味でゼロから開発することを「フルスクラッチ」と呼びます。とはいえスクラッチもフルスクラッチも、どちらも既存のプログラムやパッケージを利用せずに開発する手法であるため大きな違いはありません。
スクラッチ開発にかかる費用は、開発するシステムによって異なりますが、目安としては以下のとおりです。
スクラッチ開発では、500万円以上の費用がかかることもあります。求める機能が多く、複雑になればなるほど開発費用は上がり、場合によっては数千万円以上かかることも予想されるでしょう。
システム開発にかかる費用は、主に人件費と諸経費で構成されています。人件費は人月(開発に必要な1ヶ月あたりの人員の数)×人月単価 ×開発期間で決まり、ゼロから開発するスクラッチ開発では人月や開発期間がより多く発生するため、開発費用が高くなる傾向です。
システム開発では、仕様を決めるまでの時間やシステムの内容、開発手法によって、完成までにかかる期間が大きく異なります。
スクラッチ開発においては、その開発期間として2〜3年ほどを要することが多いです。アプリの場合は半年〜1年、業務システムならば少なくとも1年が目安とされ、フルスクラッチの場合はさらに長期間を要することになるでしょう。
パッケージ開発は、既存のシステムやひな形(パッケージ)をそのまま活用したり、カスタマイズしたりして開発する手法のことです。スクラッチ開発ではクライアントの要件に合わせてオリジナルで開発を行う一方、パッケージ開発では既存のシステムを活用できるため、短期間かつ低コストで開発を行えます。しかし、パッケージ開発ではパッケージがもつ機能の制約を受けるため、開発の自由度が高くありません。
構築するシステムやプロジェクトなどによって、スクラッチ開発とパッケージ開発のどちらが適しているかは異なります。それぞれのメリットとデメリットを理解したうえで、採用する開発手法を検討しましょう。
スクラッチ開発のメリットは、以下のとおりです。
スクラッチ開発は、ゼロからオリジナルでシステムを構築でき、開発の自由度が高い手法です。自社の課題解決や業務フローなどに適したシステムを開発できるため、操作性やデザイン、パフォーマンスなど、さまざまな点で理想的な仕様にできます。
また、将来的な拡張性を見据えて開発できる点もメリットです。機能拡張やサブシステムの統合などに柔軟に対応できるシステムを開発できます。
さらに、はじめから業務に合わせたシステムを構築できるため、業務を最適化しやすいです。業務を最適化するために再構築することをBPR(Business Process Re-engineering)と呼びますが、スクラッチ開発ではこのBPRが不要で、その分のコストや期間がかかりません。
一方、スクラッチ開発にはコストや開発期間がかかるというデメリットがあります。前述のとおり、スクラッチ開発はほかの開発手法に比べて開発費用が高くなるため、予算をあまりかけられない場合には採用するのが難しいでしょう。
また少なくとも1年、一般的には2〜3年ほどの開発期間を要するため、WebサイトやECサイトのようにトレンドの移り変わりが早いものの開発には向いていません。
パッケージ開発では既存のシステムやひな形を活用するため、コストや開発期間を抑えられます。特に初めてのシステム構築で予算をあまり確保できない場合や、スピーディーに開発を進めたい場合におすすめです。
余った費用をほかの部分に有効活用できるのもメリットといえるでしょう。サイトやシステムを広く知ってもらうためのPR、運用後に明らかになった改善点に対する改修費などに充てられます。
一方、パッケージ開発には以下のようなデメリットがあります。
パッケージ開発の大きなデメリットは、完全にオリジナルで開発できるわけではないため、自由度が低い点です。特殊なシステムを開発したい場合や、パッケージで求める要件を満たせない場合には、スクラッチ開発を選択するべきでしょう。
また、パッケージがもつ機能の制約を受けるため、拡張性が低いのもデメリットです。拡張やカスタマイズを行うと別途カスタマイズ費用が発生し、最終的にスクラッチ開発よりも費用がかかってしまう可能性もあります。
さらに、業務フローに完全に適したシステムを構築することは難しく、業務をパッケージに合わせることが必要です。低コストを重視したばかりに使いにくいものを導入してしまうと業務がやりにくくなり、結局BPRのためにコストや期間がかかってしまいます。
スクラッチ開発とパッケージ開発双方のメリットを活かすため、パッケージ製品を活用しながらも一部にスクラッチ開発を採用し、自社に適合させることも可能です。詳細は以下の記事をご覧ください。
ITプロジェクト採算管理システムの刷新(スクラッチ開発/ASP.NET MVC)
スクラッチ開発とパッケージ開発のどちらを採用すべきかは、以下のポイントをもとに決定しましょう。
スクラッチ開発には多くのコストと期間が必要であり、期待どおりのシステムに仕上がらないリスクがあります。スクラッチ開発を採用すべき決定的な理由がない場合には、メリットが少ないため、安易に選択するのはおすすめできません。以下では、スクラッチ開発とパッケージ開発のどちらを選ぶべきかを検討する際のポイントについて解説します。
まずは、独自のシステムを本当に構築する必要があるのかどうかを考えましょう。独自性があると思っていても、必要なシステムが組み込まれた既製品が販売されている可能性もあります。パッケージについてリサーチしたうえで検討することが大切です。
求めるシステムが既製品として販売されていない場合や、似たようなパッケージはあるものの求める機能が備わっておらず、カスタムや拡張のために多額のコストが発生する場合などは、スクラッチ開発が適しています。
スクラッチ開発に適したプロジェクトであるか否かも重要なポイントです。自社のコア業務に直結する重要なプロジェクトである場合、オリジナリティを出して他社と差別化するためには、スクラッチ開発が適しています。
一方、プロジェクトが以下に該当する場合は、パッケージ開発がおすすめです。
スクラッチ開発の大まかな進め方は以下のとおりです。
開発には、要件定義から運用までを順番に進めていくウォーターフォール型と、設計からリリースまでの小さな流れを繰り返し、改善していくアジャイル型があります。
以下では、スクラッチ開発の進め方について、それぞれのプロセスを解説します。
要件定義・デザイン定義とは、現状の業務フローや課題を洗い出し、どのようなシステムを開発するかを決定することです。具体的には、システムに必要な機能や保守、運用、必要な技術、人員、開発期間などを決定します。
要件定義をベースに開発を進めていくため、ゼロから開発を行うスクラッチ開発においては特に重要です。要件やデザインの定義を怠ると開発に時間がかかるばかりか、開発途中で重大な欠陥が見つかることにもなりえます。プロジェクトの成功を決める重要な工程であるため、慎重に行いましょう。
要件定義に基づいてシステム設計を行いましょう。設計は、外部設計と内部設計に分かれます。外部設計とは画面や操作方法など、ユーザーが直接触れる部分の設計のことです。これがシステムの使いやすさを左右します。内部設計とはシステム内部の機能のように、ユーザーから見えない部分を設計することです。外部設計と内部設計が連動するように設計する必要があります。
基本設計は発注者が直接開発に関わる最後の工程であるため、完成イメージを詳細に伝え、認識の齟齬をなくすように努めなければなりません。
基本設計で決めた内容をもとに、プログラミングと実装を行います。開発会社に依頼する場合、要件定義と基本設計は共同で行い、システム開発以降を開発会社がメインで担当することが多いです。
システム開発ではモジュール単位で開発を進め、結合して機能にし、さらに機能を結合してシステムに仕上げます。開発にはJavaやPythonなど、プロジェクトに応じて適切な開発言語を用いることが必要です。
システム開発が終わったならば、要件定義を満たしているかどうか、また想定どおりの仕上がりになっているかどうか、などをリリース前にテストします。
以下のように、段階的にテストを行うことが一般的です。
いずれかの工程で欠陥が見つかったならば、前の工程に戻って修正しなければなりません。場合によっては、設計のはじめの段階まで戻らなければならないことも想定されます。
テストで問題がなければ、いよいよリリースして運用を行います。運用は、システムを安定的に稼働させるために必要な業務です。
全機能をまとめてリリースすることもあれば、戦略上段階的にリリースするケースもあります。特にリリース直後には問い合わせや不具合報告などが多いため、しっかりと対応しましょう。落ち着いたタイミングで追加の機能を開発し、搭載することもあります。
安定的な運用のため、またリリース後に何らかのトラブルが発生した場合に備えて、必要に応じてメンテナンスを行います。メンテナンスは、開発に携わった会社に依頼することが一般的です。
競合との差別化のため、要望が多い機能を拡張機能として採用することもあります。ただし、機能拡張のためにはシステム内部の処理の効率化や、システムの新規開発が必要になる場合もあるため、開発段階ではシンプルな内部処理にすることが大切です。
スクラッチ開発をスムーズに進めるためのコツや、理解すべきポイントは以下のとおりです。
多くのパッケージが登場している現在、スクラッチ開発を時代遅れと考えている方もいますが、そうではありません。既存システムを活用できると思っていた場合でも、要件定義をすり合わせる中で、カスタマイズの必要性が発覚することがあります。
カスタマイズの量や難易度によっては、最終的にスクラッチ開発よりもコストや開発期間がかかってしまうことも予測範囲内です。また自社のコアであり、独自性の高さが求められる場合には、スクラッチ開発のほうが適しています。開発手法を選ぶ際には、双方のメリットとデメリットを踏まえて総合的に判断しましょう。
前述のとおり、ゼロから開発するスクラッチ開発では要件定義と設計が非常に重要です。発注者は、要件定義で理想のイメージを詳細に定義し、基本設計書に的確なフィードバックを与えることで認識の齟齬をなくさなければなりません。
さらに、今後の拡張性や業務への適合性を考え、はじめはカスタマイズを最小限にとどめてシンプルなシステムを作ることが重要です。
この記事ではスクラッチ開発とは何か、メリットや選び方、開発の進め方などを解説しました。ゼロからオリジナルのシステムを開発するスクラッチ開発では、特に要件定義が重要です。開発を他社に依頼する場合は、要件定義で齟齬が生まれないように完成イメージを詳細に伝えることに加え、信頼できる会社に依頼しましょう。
ソフトウェアやシステム開発ニーズがあり、人材不足に悩んでいる方は、ぜひとも当社にお気軽にお問い合わせください。