業務システムやアプリなどを開発するとき、 1 からつくりあげていく方法をスクラッチ開発といいます。
最近は汎用性が高い既存のシステムが流通していて、それを使えばコスト安に業務の効率化を果たせるのですが、特殊な業務を数多く抱える企業はスクラッチ開発のほうが「正解」の場合があります。汎用システムが時代遅れということではないのですが、スクラッチ開発のほうが優れている場合があります。
この記事では、スクラッチ開発がどのようなもので、どのようなメリットとデメリットがあり、開発がどのように進むのか解説します。
また、スクラッチ開発と対比されるパッケージ開発についても紹介します。
スクラッチ開発とは
スクラッチは英語で scratchと表記します。ただ、スクラッチがパッケージの対義語になっているわけではありません。
スクラッチ開発は元々は普通の開発手法でした。ベースとなるシステムがなかったころは、システムを1からつくっていくのが当たり前でした。
スクラッチ開発が普通でなくなったのは、パッケージ開発が生まれたからです。パッケージ開発はひな型となるシステムがあり、そこにクライアント(発注者、システムユーザー)の要望に応じてカスタマイズを加えていく手法です。
フルオーダーメードがスクラッチ開発で、既製品またはセミオーダーメードがパッケージ開発、というイメージになります。
パッケージ開発との違い
これはシステムやソフトウェアに限りませんが、反対に、既製品で問題ない場合そのほうがメリットが大きくなることがあります。そしてシステムの世界では優れた既製品が現れています。システム会社はさまざまな企業のさまざまな業務を研究し、それにマッチした既製品システムを次々生み出しているので、あなどれないものがあります。
そのため、既製品システムを使うパッケージ開発のほうが新しく、1からシステムを構築していくスクラッチ開発は古い、と考えることもできます。
ただ、既製品システムを導入してもカスタマイズする箇所が増えると、スクラッチ開発したのと同じ作業工数とコストがかかってしまいます。
そうなると「最初からスクラッチ開発で進めておいたほうがよかった」となってしまいます。
したがってシステムの導入を検討している企業は新しい手法か古い手法かで選ぶのではなく、自社が求めるシステムを開発するのにどちらが低コストで高効率か、を検討したほうがよいでしょう。
ウォーターフォール開発とアジャイル開発について
話は少し脇道にそれますが「開発」というワードが出てきたので、ウォーターフォール開発とアジャイル開発について紹介しておきます。
ウォーターフォール開発は、作業工程を企画、設計、要件定義、システム開発、運用などに分割して、前工程が終わったら次工程に移っていく手法です。
アジャイル開発は、企画・設計・要件定義・システム開発・運用を機能単位の小さいサイクルで繰り返す手法です。
例えば1つのシステムに3つの機能を持たせる場合、ウォーターフォール開発では3つの機能追加の要件定義が済んだら3つの機能のシステム開発に進む、というふうに進めていきます。
アジャイル開発では、1つの機能の運用を完了させてから2つ目の機能の要件定義などの作業に取り掛かります。
なお、ウォーターフォール開発とアジャイル開発については下記のページでも詳しく解説していますので参考にしてください。
スクラッチ開発とパッケージ開発を比較するときのポイント
システムの導入を検討している企業がスクラッチ開発をするかパッケージ開発をするかで悩んだら、次の項目を検討してみてください。
- 他社との差別化が必要かどうか
必要であればスクラッチ開発のほうが有利かもしれません。
- 開発期間を長く取れるかどうか
長く取れるのであればスクラッチ開発でもよいかもしれません。短期間でシステムを立ち上げる必要があれば、パッケージ開発のほうがよいでしょう。
- 自社のコア業務に直結するかどうか
直結するならスクラッチ開発も検討したほうがよいでしょう。
なぜこのような答えになるのかについては、スクラッチ開発のメリットとデメリットを知れば理解できると思います。
スクラッチ開発の4つのメリット
スクラッチ開発を採用するメリットには、次の4つがあります。
- 他社と異なるオリジナルなシステムを作ることができる
- コア業務をしっかりサポートできる
- 長く使い続けることができる
- ブラックボックス化を防ぐことができる
1つずつみていきましょう。
他社と異なるオリジナルなシステムを作ることができる
A社とB社の扱う商品やサービスが同程度だった場合、よいシステムを持っていたほうがビジネスを有利に進めることができるでしょう。システムは今、それほどのビジネス・パワーを持っています。それで多くの会社がデジタルトランスフォーメーション(DX)を急いでいるわけです。
パッケージ開発によるシステムはライバル会社も採用する可能性があるので大きなアドバンテージにはなりません。
一方、スクラッチ開発によるシステムは完全自社オリジナルなので差別化できます。
もちろん差別化するには、既製品システム(パッケージ開発システム)より優れたシステムを発注する必要があります。
コア業務をしっかりサポートできる
システムがビジネスで重要な位置を占めるようになったことで、システムトラブルが企業経営に大きな影を落とすようになりました。大規模システム障害を引き起こせば、企業のトップが謝罪会見を開かなければならなくなるほどです。
そのため自社のコア業務をシステム化するときは、システム会社にスクラッチ開発でつくってもらったほうがよいでしょう。
長く使い続けることができる
既製品システム(パッケージ開発システム)の場合、システム会社によっては保証期間やサポート期間を短く設定していることがあります。
その期間がすぎると、システムにトラブルが生じてもサポートを受けられません。もしくは、サポートに多額の費用を請求されるかもしれません。
スクラッチ開発であれば、もちろん契約内容次第ではありますが、システム会社に長くサポートしてもらえます。
ブラックボックス化を防ぐことができる
既製品システム(パッケージ開発システム)にはシステム会社のノウハウが詰まっているので、クライアント企業(システムを発注した企業)がそれを購入してもそのノウハウを開示してもらえることはありません。
したがってクライアント企業はブラックボックス化されたシステムを購入することになります。
もしそのシステム会社が倒産してしまったら、そのシステムを改修できなくなってしまうかもしれません。
スクラッチ開発はクライアント企業の要望をほぼすべてかなえてもらえるので、ブラックボックス化しにくいという利点があります。
スクラッチ開発の2つのデメリット
スクラッチ開発のメリットが4つあったのに対し、デメリットは2つしかありません。
それはコスト高で開発期間が長く、開発者(システム会社)選びが難航することです。
コスト高で開発期間が長い
フルオーダーのスーツが高価で既製品のスーツが安価であるのと同じで、スクラッチ開発システムはコスト高でパッケージ開発システムはコスト安です。
ただコストについては、スクラッチ開発システムはコア業務や大規模業務に導入されることが多く、そのため高い機能性や優れた使い勝手が求められます。それで費用が高くなりやすくなります。
したがって、スクラッチ開発システムを導入しても、カスタマイズを大量にオーダーすればコストはそれだけ上がります。
そしてスクラッチ開発は、いわばベースとなるシステムがない状態から開発を始めるので、完成までの時間が長くなります。
開発者(システム会社)選びが難航する
スクラッチ開発システムを導入しようとしている企業は、開発者(システム会社)を慎重に選ぶ必要があります。
コア業務にスクラッチ開発システムを導入する場合、そのシステムに社の命運がかかっているといっても過言ではありません。開発者に自社の生殺与奪を握られるようなもので、これは大袈裟な表現ではありません。
例えばインターネット通販( EC 事業)の売上のウェートが大きい企業が EC サイトの不具合に見舞われたら大きなダメージを受けます。そのため信頼できる開発者に EC サイトをつくってもらわなければなりません。
優れたシステムをつくれるかどうかだけでなく、システムに不具合が生じたときにどれくらいの期間で復旧させることができるかも開発者選びでは重要になってきます。
スクラッチ開発の流れ
これはデメリットではありませんが、スクラッチ開発ではクライアント(システムを発注する企業)もシステム開発に深く関与する必要があります。ベースとなるシステムがないので、クライアントの指示や要望が間違っていると、使いにくいシステムになってしまうからです。
そのため、スクラッチ開発システムを導入する企業は、自分たちが開発するわけでなくても、作業の流れは押さえておいたほうがよいでしょう。
スクラッチ開発はおおよそ上記のイラストのように進みます。
ステップごとにみていきましょう。
ステップ1:要件定義
システムにどのような機能を盛り込むかを決めることを要件定義といいます。
もしあいまいに要件を定義してしまうと、開発者にクライアントの意図が伝わらず、使いにくいシステムを従業員に押しつけることになったり、完成してもすぐに修正が必要になったりします。
これは余計な費用と余計な作業期間を生むだけです。
スクラッチ開発システムを選択したクライアント企業の担当者は「システム会社ならそこらへんはなんとなくわかってくれているだろう」と考えないほうがよいでしょう。
スクラッチ開発では要件定義が最も重要です。
ステップ2:システム開発
要件定義ができたら、開発者はシステムを実際に開発していきます。プログラムを組んでいきます。
このときもクライアント企業の担当者は、進捗状況をチェックしたほうがよいでしょう。
ステップ3:テスト運用
システムがひととおり完成するとテスト運用を行います。
ここでバグや使いにくい部分を洗い出さないと運用本番でトラブルが出てしまうので、テスト運用では、このシステムを使う全員が触れるようにしたいものです。
ステップ4:運用本番
テスト運用が終われば運用本番となり、クライアント企業の従業員がこのシステムを使って仕事をします。
ステップ5:アフターフォロー
アフターフォローには不具合の修正や保守などが含まれます。
ただスクラッチ開発システムでは、クライアント企業も積極的にアフターフォローに関わったほうがよいでしょう。クライアント企業の担当者は、このシステムを使っている従業員に使い勝手や不具合を聞き取り、それを開発者にフィードバックしてよりよいシステムにしてもらいます。
スクラッチ開発システムでは「育てる」ことが大切です。
まとめ
本記事では、スクラッチ開発についてみてきました。
既製品のシステムのクオリティが上昇しているので、企業のシステム担当者はついパッケージ開発のメリットに目がいきがちですが、自社のコア事業に導入する場合はスクラッチ開発も検討したいものです。
そしてスクラッチ開発でシステムをつくることを決めたら、システム会社(開発者)選びを慎重に進めてください。コストや機能はいうに及ばず、アフターフォローの内容もしっかり吟味してください。
当然のことなのですが、スクラッチ開発でなければつくれないシステムは、スクラッチ開発でなければつくることができません。自身のフレームワークのなかにこの概念を入れておくとよいと思います。