スクラッチ開発とは?パッケージ開発との違いや制作会社の選び方を解説|東京のWEB制作会社・ホームページ制作会社|株式会社GIG
BLOG
ブログ
スクラッチ開発とは?パッケージ開発との違いや制作会社の選び方を解説
2022-02-21 制作・開発
ゼロからシステムを開発する手法「スクラッチ開発」。
今回はスクラッチ開発について、パッケージ開発との違いやメリット・デメリット、要件定義や開発会社選びのポイントなどを、現役エンジニアの目線から解説します。
スクラッチ開発とは
スクラッチ開発とは、ひな型となるパッケージを使わずゼロからシステムを作る手法。自社の業務内容に沿った形でシステムを構築する手法を指します。
常に新しいビジネスやプロジェクトを追い求めるのが企業である以上、システムも柔軟性をもって拡張していくことを前提に構築しておかなければなりません。そういった観点から見ても、ゼロからオリジナルのシステムを作るスクラッチ開発では、自社に適したシステムを開発できます。
また、外部に開発を依頼する際には、著作権譲渡に関する旨を契約書に記載しておくことで、システムの著作権を自社でもてます。運用開始後は、他社に依存しない社内体制を整えておくことで、開発会社が倒産してシステムの利用や改修ができなくなるといった事態を防げるでしょう。
スクラッチ開発とパッケージ開発の違い
パッケージ開発とは、他のプロジェクトで製造したソフトウェアをカスタマイズしたり、他社から発売されているソフトウェアをカスタマイズしたりと、ベースとなるソフトウェアがある状態から開発を進める手法のことを指します。
ベースとなるソフトウェアを導入して自社の業務すべてをカバーできれば問題ないですが、なかなかそうはいきません。自社の業務内容に合わない部分、使い勝手の悪い部分を改善するために、システムのカスタマイズを必要とするケースがほとんどです。
パッケージを使った開発でも、いざ開発を進めてみると、ほしい機能がなく、最終的にカスタマイズばかりでパッケージソフトウェアの原型がほぼないことも。「はじめからスクラッチ開発にしておけばよかった」となってしまわないよう、「コストを安く抑えられるからパッケージ開発」と安易に決めないようにしましょう。
スクラッチ開発のメリット
スクラッチ開発することによって、具体的にどのようなメリットが得られるのでしょうか。順を追って確認していきましょう。
メリット1. 開発自由度が高い
他社が発売しているパッケージソフトウェアを使うと、ある程度パッケージでできることやできないこと、パラメータの扱いなどを考慮する必要があります。海外製のパッケージだと、仕様そのものが海外仕様なので、日本で使うには向いていないことも。
開発自由度の高いスクラッチ開発では、ゼロからシステムを構築できるため、自社の業務フローや手順に沿ったシステムを開発できます。
また、企業の経営資源や各種業務の一元管理を目指すERP(企業資源計画)の理念に沿ったシステムを開発すれば、大量のデータを蓄積し、データサイエンスを駆使しての経営判断にも役立てられます。他社との差別化をシステム面からも図れるでしょう。
メリット2. 業務に合わせた最適なシステムを構築できる
パッケージシステムを導入すると、自社の業務フローをパッケージの形に合わせる作業が必要になる場合があります。しかし、スクラッチ開発の場合、パッケージの仕様に合わせて業務を変更するのではなく、業務に合わせてシステムを構築できるのがメリットです。
スクラッチ開発を行う場合、パッケージの都合に左右されず、業務に必要な機能や処理だけを自由に実装することができます。これにより、業務に最適なシステムを構築できるほか、システムの拡張性や柔軟性が向上します。
メリット3. 運用中のトラブルを解決しやすい
システムにトラブルや障害はつきもの。不測の事態が起きた時に求められるのは、解決までのスピードです。スクラッチ開発の場合、開発会社がそのまま運用・保守を担当するケースが多く、問題が発生した場合には迅速に解決に向けて対応してくれるはずです。
パッケージ開発の場合、パッケージソフトウェア自体に何か問題が発生した可能性も考えられるので、そちらの中身も調べる必要があります。しかし、パッケージの中身がブラックボックスになっている場合もあり、解決に時間がかかってしまう可能性もあります。
システムのブラックボックス化を極力避けることができるのも、スクラッチ開発の強みだといえます。
スクラッチ開発のデメリット
スクラッチ開発はメリットも多いですが、デメリットも多い開発方法です。ここではデメリットを解説します。
デメリット1.費用が高くなる
スクラッチ開発の一番のネックは、費用が高くなることです。ゼロからシステムを構築するため、はじめの要件定義や仕様を決める段階から工数を要します。
ただし、機能が多くなれば開発に必要な人員も増やす必要があるため、開発費(人件費)がふくらむのはやむを得ない側面もあります。
デメリット2.開発期間が長くなる
ゼロからシステムを開発するため、開発期間は最低でも1年程度、通常は2~3年という長いスパンを設けて開発を行います。
この設定された期間の間に要件定義、設計、開発、テストといった各種工程を行いますが、なかなか当初のスケジュール通りに進まないのがスクラッチ開発です。リスケは何度も行われると思っておいた方が良いでしょう。
要件定義や設計といった上流工程で予定より多くの工数を使ってしまい、一番工数が必要な開発・テストで工数を縮小せざるを得ないことも。そうなればほぼ間違いなくリリース延期につながります。
デメリット3. ECサイトには向かない
開発期間が長いため、WebサイトやECサイトなどトレンドの移り変わりがはやい分野には向いていません。2年もかけて開発していたら、リリース時期にはトレンドが様変わりしてしまうからです。
こういったトレンドを意識したものを開発するには、パッケージ開発が使われます。
パッケージ開発のメリット
ここまでスクラッチ開発について解説を進めてきましたが、パッケージ開発についても解説します。
パッケージ開発とは、「市販されているパッケージ製品を自社の要件にあわせてカスタマイズする」ことを指します。カスタマイズを全くせずとも自社要件を満たしているパッケージ製品はほとんどありません。
近年では、自社内にサーバーを構築して利用するオンプレミス型だけでなく、クラウド環境にサーバーを構築してインターネットを駆使して利用するクラウド型など、さまざまなパッケージ製品が登場しています。パッケージ開発のメリットについてまずは確認しておきましょう。
メリット1. コストを削減できる
パッケージ開発を導入する大きなメリットのひとつに、開発コストを抑えられることが挙げられます。
スクラッチ開発のように、ゼロから開発するのではなく、既存のパッケージソフトに対して必要なカスタマイズを行うので、スクラッチ開発ほどのコストはかからないといえます。
そのため、パッケージ開発は特に予算に限りのある、中小企業やベンチャーから選ばれる傾向にあります。
メリット2. 開発期間を短縮できる
パッケージ開発では、元からある製品に対してカスタマイズを行うので、スクラッチ開発と比べて、開発期間を短縮できることはメリットだといえます。
システム開発はプログラミングを行うだけではありません。要件定義や設計、テストなどの工程も必要です。パッケージ開発を導入することで、それらにかかる工数も短縮させることにつながります。
もちろん、カスタマイズが多いケースなどでは、それ相応の開発期間は必要となってくるでしょう。ただ、それでもスクラッチ開発でゼロから開発するよりも工数がかかることは少ないといえます。
メリット3. 保守・運用の手間が減る
システムは開発してそれで終わりではありません。問題なくシステムが動作するよう、未来永劫に保守・運用といったことをし続ける必要があります。
これはパッケージ製品によりけりではありますが、システムを提供する企業が、保守・運用などのメンテナンスや機能のアップデートを担当してくれるものはあります。そのような製品だと、社内の人的リソースを保守・運用に割けない場合でも安心して使いやすいと言えます。
パッケージ開発のデメリット
パッケージ開発のデメリットに関しても、確認しておきましょう。
デメリット1. サポート打ち切りのリスクがある
パッケージ開発には導入期間の短さやコストの安さなどのメリットがある一方、サポート打ち切りといったリスクがつきものです。
代表的なものが「SAPの2025年問題」。
2025年に既存のSAP ERPシステムのサポート期限が終了し、SAPを利用している企業がその対応に追われることからこう呼ばれています。ERP製品は企業全体のビジネスを根底から支えるIT基盤なので、その影響度は計り知れません。
その後、SAPからは保守期限を「2025年末から2027年末へ変更する」とアナウンスがありましたが、実質2年間のサポート延長になったとはいえ、プラス2年間でどこまで課題を解決できるかは未知数であり、単に呼び名が「SAPの2027年問題」に置き換わるのみではないかとも予想されます。
残念ながらパッケージ製品にはこういったリスクはつきもので、その度に後継バージョンへの移行やバージョンアップなどで多大なコストが掛かることは、念頭に置いておく必要があるでしょう。
デメリット2. 業務フローをパッケージに合わせる必要がある
パッケージ開発では、カスタマイズを前提にして製品を導入しますが、それでも既製品がベースとなるため、カスタマイズにも限界がある場合もあります。
この場合、自社の業務フローをパッケージに合わせるカタチで変更させ、適合させることが求められます。
今まで慣れ親しんだ業務フローを変更させることは、自社の社員が新システムに慣れるまでに時間を要したり、逆に生産性が落ちたりするなどのリスクが発生することも否めないでしょう。
柔軟に対応できるスクラッチ開発と比べると、こういった点はパッケージ開発のデメリットだといえます。
デメリット3. カスタマイズの際には高額な費用が発生するケースも
パッケージ開発では、完全オリジナルの自社システムの開発はとても難しいといえます。
そのため、カスタマイズの難易度によっては、追加機能を実装する際に予想外に費用がかかるケースも。
あれもこれもと機能をカスタマイズすることで、ほぼフルカスタマイズとなり、費用も高くなり開発期間も長くなります。スクラッチ開発とあまり差がなくなってしまうと、むしろパッケージ開発の方が、コストが高くなったりするケースも少なくありません。
システムの細部にまでこだわりたい場合には、スクラッチ開発で進めることをおすすめします。
スクラッチ開発の制作フロー
ここからは、スクラッチ開発における基本的な流れについて解説します。スクラッチ開発でよく使われる手法に、「ウォーターフォール開発」というものがあります。
ウォーターフォール開発では、上流工程(要件定義・設計)から下流工程(開発・テスト)へと順を追って進み、基本的には工程の後戻りは発生しないことを前提に作業を進めていきます。一方で、イテレーションという単位でフェーズを区切り、かつ機能単位でリリースすることで、スピード感を持って開発を繰り返す「アジャイル開発」という手法も存在します。
どちらも一長一短な開発手法ではありますが、スクラッチ開発のように長期間かけて開発するには「ウォーターフォール開発」が向いていますので、今回は「ウォーターフォール開発」でのフローをもとに解説を行います。
手順1. 要件定義
スクラッチ開発を行ううえで、すべての工程の礎となるのが「要件定義」です。
要件定義とは、発注者の開発要望を踏まえて、システム開発の概要や目的、必要な機能、必要な予算、人員、スケジュールなどを詳細に決めていく工程のことを指します。
要件定義のコツとして、まずは要件ごとに「優先順位」を決めていくことが大切です。
システム開発の場面では、全ての要件が同じ優先度ではありません。プロジェクト単位で見たときの価値や開発の工数を考慮し、要件ごとに優先順位をつけることが求められます。これにより、リソースを効果的に割り振り、計画的な開発が可能となります。
また、要件定義はきちんと文書化して共有します。要件定義の情報を正確に伝えるためには、文書化が不可欠です。文書化された要件定義を共有することで、チーム内の認識のズレを減らし、スムーズな開発ができます。
とくに、上司も含めて情報を共有するためには、非エンジニアが閲覧することも踏まえた文書化が重要です。専門用語や難解な言葉を避け、できるだけ一般的な表現を用いて要件を記述しましょう。これにより、チーム内の異なるバックグラウンドを持つメンバーや関係者の足並みが揃うはずです。
手順2. システム設計
要件定義で固めた要件を実現するためには、次にシステム設計の工程が必要です。要件定義では、おもにユーザーの要求をもとにシステムに実装する機能や性能を決定しますが、設計工程に移ると、実際にシステムを動かす部分の仕様を決めていきます。
またシステム設計は大きく分けて、「基本設計」と「詳細設計」のふたつの工程に分かれることになります。
基本設計とは、要件定義で決めた内容を実現させるために、システムに実装する機能を明確にしていく作業のことを指します。ユーザーから見たときに、どのような動作になるのかを決める側面もあるため、「外部設計」とも呼ばれます。
詳細設計とは、基本設計で決めた機能を、プログラマーに向けてまとめたものを指します。具体的には「機能をどのようにプログラミングするのか」という設計を行います。ユーザーからは見えない部分の設計となるので、「内部設計」とも呼ばれます。
手順3. 開発・テスト
完成した詳細設計書をベースに、実際のシステムを開発(プログラミング)する工程に移ります。
ここまで来れば、プログラミング言語を含め、作業に必要な情報はすべて揃っている状態であるため、それぞれの機能ごとに、ひたすら開発を進めていくことになります。
開発工程自体は、あくまで詳細設計書にもとづいてコーディングするだけともいえ、設計がきちんと固まっておれば、そこまで難易度は高くないともいえます。要するに、プログラミングに入るまでの要件定義・設計フェーズが何よりも大切だということです。
プログラミングが終われば、「システムの要件定義を満たしているか」「想定通りの動きをするか」といったことを、以下の順で段階的にテストを行います。
- 単体テスト:画面や機能ごとに、動作の検証を行う
- 結合テスト:他の機能やシステムと連携させて、動作の検証を行う
- 総合テスト:本番稼働を想定して、システム全体の動作を検証する
- 受入れテスト: 納品前に発注側で要件通りの動作になっているかを確認する
手順4. 導入(リリース)
すべてのテストをクリアすると、いよいよ本番環境へのリリースです。新規のシステム開発であれば特に問題はありませんが、旧システムが存在するケースでは、データ移行をはじめとした移行作業も必要となるでしょう。
手順5. 保守・運用
リリースしたシステムを問題なく継続的に稼働させるためには、システムの保守・運用といった工程が不可欠です。
「保守」とは、システムを改修・調整することで、「運用」とは、システムを問題なく稼働させ続けることを指します。
とくにリリース直後には、想定外のシステムエラーや使い方に関するユーザーからの問い合わせが殺到する可能性もあり、それらの対応に追われることになるでしょう。
そのため、事前にマニュアルなどを社員に配布しておくこともおすすめです。また、在籍中の社員だけでなく、今後入社する社員にとっても使いやすいシステムになるように準備を進めると良いでしょう。
スクラッチ開発の制作会社選びのポイント
要件定義が完了すれば、実際にスクラッチ開発の制作会社を依頼しましょう。
しかし、制作会社はどこでもいいわけではなく、できるだけ費用を抑え、質の高いシステムを開発してくれる会社を選びたいものですよね。ここでは、エンジニア目線で開発会社を選ぶ際のポイントを解説します。
ポイント1. 類似の開発実績があるかどうか
スクラッチ開発はゼロからシステムを作るぶん、開発ノウハウが必ず必要になります。
プログラムを組む前の段階のシステムを机上で構築していく段階から、経験が問われます。データをどのように持つのか、他のシステムとの連携はどうするのか、Webシステムにするのかなど、考えることは山ほどあります。
スクラッチ開発は検討する事項や開発する機能も多いため、類似の開発実績があるかどうかは非常に大切なポイントです。
ポイント2. 大手SIerに依頼すれば一安心ではない
システム開発に限った話ではありませんが、 「業界大手に発注すればひとまず安心」というイメージありませんか? システム開発の場合、大手といえば大手SIerが該当します。
大手SIerにはどの案件でもカバーできるよう専門の部署が設けられ、優秀な社員やシステム開発のノウハウもたくさん持っているのは事実です。
ただ、大手SIerがすべての工程を自社部門だけでまかなっているわけではありません。要件定義・設計までは担当するものの、実際の開発やテストは下請け企業に投げることが多いです。
大手SIerも数多くの案件を抱えていたり、受注を得るために動いているため、1人の社員を1つの案件に張り付かせて作業させるには人手が足りていません。
人手不足という経緯もあり、システム開発の現場では二次請け、三次請けは当たり前のように行われています。 下請けの数が多ければ多いほど、最終的に請け負う企業は、スケジュールも予算も何もかも逼迫した状態で作業することになるので、「納品物が想定と違う」といったトラブルにつながる可能性も。
これを防ぐために、はじめから下請けに丸投げしない中小のシステム開発企業に発注するのも選択肢のひとつです。
GIGでは、ご依頼いただいたプロジェクトはかならず社内の開発部署が担当し、開発内容に合わせて社内外のプロフェッショナルを巻き込んだチーム編成を行っています。
ポイント3. 開発費の安さだけで開発会社を選ばない
開発会社が「開発費用の安さ」をアピールする場合、人件費を削って費用を見積もるケースがほとんどです。
発注元からすれば費用は安くなればなるほどありがたいでしょうが、安すぎるとシステムの品質の低下にもつながります。
筆者の経験談ですが、海外拠点を複数持つ大企業のスクラッチ案件で、ものすごく規模の大きい機能を開発することになり、現場のエンジニア目線では開発~テストの工程で最低でも「2人月」は見積もる必要があると感じていました。しかし、実際には2週間ほどしか工数が取られていなかったことも。
※人月:1ヶ月間の開発に必要な人員の数。2人月の場合、1ヶ月の開発に2人の人員が必要という意味になる
あまりにも現実から乖離した工数で見積もると、リスケの連続で当初の予定通りに開発は進みません。結局は予算も時間もオーバーし、リリースまでたどりつかなくなってしまう可能性もあります。
システム開発に限った話ではありませんが、単純に費用が安いというだけで開発会社を選ぶのは失敗のもと。システム開発の相場感を掴むためにも相見積もりは必ず取ることをおすすめします。
なお、システム開発にかかる費用相場の詳細についてはこちらの記事で解説していますので、ぜひ参考にしてください。
スクラッチ開発はGIGにお任せください
求人サービスや不動産紹介サービスサイトの制作、膨大なデータを活用した大規模CRMの開発プロジェクトなど、GIGではこれまで培ってきたシステム開発のノウハウと知見を活かした支援のもと、高品質なシステム開発を実現してきております。
それぞれの企業様ときちんと向き合い、豊富なシステム開発の実績から最適なソリューションをご提供します。
システムのスクラッチ開発を検討している方、すでに稼働しているシステムの保守・運用の内容を見直してみたい方は、まずはお気軽にご相談ください。
■株式会社GIG
お仕事のお問い合わせはこちら
会社紹介資料のダウンロードはこちら
採用応募はこちら(GIG採用サイト)
採用応募はこちら(Wantedly)
WebやDXの課題、お気軽にご相談ください。
GIG BLOG編集部
株式会社GIGのメンバーによって構成される編集部。GIG社員のインタビューや、GIGで行われたイベントのレポート、その他GIGにかかわるさまざまな情報をお届けします。