システム開発の手法・アプローチについて、いくつかの分類方法があります。
今回は、「パッケージソフトを使うのか?使わないのか?」という基準で分類した、スクラッチ開発とパッケージ開発の違い、特にスクラッチ開発のメリット・デメリットについて見ていきたいと思います。
まず、スクラッチ開発と、その対義語と言える、パッケージ開発について、それぞれ、どういう開発方法なのかを説明いたします。
簡単に言うと、「パッケージソフトを使わないシステム開発方法」がスクラッチ開発で、その逆に「パッケージソフトを開発するシステム開発手法」がパッケージ開発です。
もっと具体的に言えば、「市販の電話帳ソフトの中に、良いソフトがないから、自分で作ってしまおう!」ということで、オリジナルの電話帳ソフトを開発するのが、スクラッチ開発。対して、「この電話帳アプリ、結構良いね。でも、この機能があると、もっと良いよね」と、市販の電話帳アプリを改良するのがパッケージ開発です。
スクラッチ開発のメリット、デメリットについて、詳細は後から見ていきますが、「一点モノ」のシステム開発を作る際は、スクラッチ開発、ある程度、「汎用性のあるシステム」を開発する際は、パッケージ開発を選択することが多いです。
スクラッチ開発を成功させるためには、いわゆる上流工程が重要になってきます。
上流工程とは、要件定義や設計のことを言います。分かりやすく言えば、クライアントの「こんなシステムが欲しい」という希望・要求を正しく理解し、どうやって、その要求を実現するのかを考え、実現可能な設計に落とし込むスキルです。
パッケージ開発の場合、パッケージソフトというベースがあるので、そもそも、致命的な認識のずれというものは、よっぽどのことがなければ起きません。しかし、スクラッチ開発の場合、よくよく気を付けておかないと、ある程度、形になったところで、クライアントから「思っていたのと違う」とクレームが入り、そこで認識があってなかったことに気が付く、という事も、ままあります。
もちろん、パッケージ開発でも「余計な機能を足しやがって」という話になることもあるので、パッケージ開発は絶対に失敗しない、という話ではありません。ただ、エンジニアの上流工程の力量がより試されるという意味で、スクラッチ開発はパッケージ開発より難易度が高いです。
スクラッチ開発について、おおむね理解できてきたところで、スクラッチ開発のメリット、デメリットについて見ていきましょう。
スクラッチ開発の一番のメリットは、ベースとなるパッケージソフトの制限を受けないということです。
基礎となるパッケージソフトがあると、どうしても、そのソフトの仕様上「特定の機能は追加できない」や「特定の動作は制限される」という事態になりがちです。
また、ライセンス料が高いパッケージソフトも中にはありますが、オリジナルのソフトを開発するスクラッチ開発であれば、基本的には、ライセンス料を気にする必要はありません。
ライセンス料だけでなく、保守面にも気を付けた方が良い場合もあります。パッケージ開発のベースになったパッケージソフトの修正パッチが配布されたので、深く考えず適用した結果、せっかく、カスタマイズして追加した機能が使えなくなった、という残念なケースを見たことがあります。
そして、上でも触れましたが、パッケージソフトが存在しない一点モノの特別なシステムを開発する際は、スクラッチ開発しかあり得ません。
筆者のITエンジニアとしてのキャリアは金融機関系のいわゆるユーザー系SIerでスタートしましたが、そこで見たシステムのいくらか(すべてではない)は「その金融機関」や「そのサービス・運営」のために開発された特注品のシステムでした。
当然、そうした特注品のシステムはスクラッチ開発されたものです。
続いて、スクラッチ開発のデメリットについて、見ていきましょう。
スクラッチ開発のデメリットは、二つあります。
まず一つ目ですが、一般的にパッケージ開発より開発コストが高くなってしまう点です。
そもそも論として、パッケージ開発を選択する理由の一つは、すでにある程度まで完成しているパッケージソフトをベースにすることで、開発期間を短くし、開発コストを下げることです。
もっとも、パッケージ開発を選んだあと「ああいう機能も欲しい。この機能も欲しい」と仕様が拡大した結果、魔改造状態になり、「スクラッチ開発で一からオリジナルで開発した方が、早く開発ができたし、開発期間が短くなった分、安く開発できたのでは?」という、“限りなく開発失敗に近い案件”も散見されるので、あくまで一般論ではありますが。
そして、二つ目のデメリットは、パッケージ開発より失敗しやすい、という点です。理由は、『スクラッチ開発の難易度は?』で見た通り、パッケージ開発よりも、はるかに、上流工程スキルが求められるためです。
もちろん、上流工程スキルが高いエンジニアや開発チームで開発した場合、クライアントにとって、パッケージ開発では実現できなかった“良い意味で期待を裏切る”素晴らしいシステムになることもあります。ただ、どちらに転ぶのか保証がありません。
つまり、スクラッチ開発には、パッケージ開発に比べて、「コストが高い上に、失敗するリスクが高い」というのが一般的な評価なのです。
そのため、昨今のシステムインテグレーション(SIer)業界のトレンドとして、「パッケージ開発ができるのであれば、パッケージ開発。パッケージ開発ができない場合は、やむなくスクラッチ開発」というスタンスをとるのが主流となっています。
どの企業でも必要かつ、業種や会社で大きく仕様が異なることのない統合業務(ERP)システムは、ほとんどの場合パッケージ開発です。ベースとなるパッケージソフトの例としては、OBIC7や勘定奉行などがあります。みなさんも、TVCMなどで、一度は耳にしたことがあるかもしれませんね。
さて、ITエンジニアのみなさんが、副業でシステム開発を始めるとしましょう。その場合は、スクラッチ開発が良いのか、パッケージ開発が良いのか、ですが、そのクライアントとはどこで出会い、どういうニーズを持っているか次第です。
一つ言えるのは、クラウドワークスやランサーズなどの、クラウドソーシングで出会ったクライアントさんの場合は、基本的にはスクラッチ開発です。理由としては、パッケージ開発の場合、そもそもパッケージの購入(ライセンス料の支払い含めて)が必要になってしまいますが、そうした費用を予算計上されていないクライアントさんも多いので、現実的に利用が難しいです。
「えー、スクラッチ開発は難しいみたいだから、いやだな」と思った方も多いかと思いますが、スクラッチ開発の場合、オーダーメイドになるため、“保守を他の会社に任せにくい”つまり、継続的にクライアントさんとお付き合いできる関係になれる、というメリットもあるので、副業の小規模開発案件では、スクラッチ開発の方が開発者にとって有利なことも多いです。
繰り返しになりますが、現在は「パッケージ開発ができるのであれば、パッケージ開発。パッケージ開発ができない場合は、やむなくスクラッチ開発」というスタンスで取り組む開発会社が多いです。
しかし、スクラッチ開発の方が良い場面、そもそもパッケージソフトがないなどの理由で、スクラッチ開発しかできないケースも存在します。例えば、大企業や行政法人などが利用する特殊用途のオーダーメイドシステムの開発は、まずスクラッチ開発となります。これらの案件は 非常に予算規模が大きく、単価も高いです。
ですので、高単価を狙う場合はスクラッチ開発を避けては通れない、ということは覚えておいた方が良いでしょう。
3つの質問に答えるだけで、フリーランスエンジニアとしての単価相場を算出します。 スキルやご経験にマッチする案件もあわせてご紹介いたしますので、気軽にご活用ください! ※単価相場の算出に個人情報の回答は必要ございません。