業務システムの開発には、コストや期間といった種々の制限がつきまといます。制限の中でできるだけ良いものを作り上げるためには、その時々で最適な開発方法を見極めなくてはいけません。一般的に業務システム開発では、「パッケージ開発」と「スクラッチ開発」のどちらかが採用されます。どちらが適しているかは、業務の性質や予算、納期などによるでしょう。今回はクラウド移行と同時にシステムを刷新するケースを想定し、パッケージとスクラッチの違いやメリット、最適解について解説します。
パッケージ開発とスクラッチ開発の違い
まず、パッケージ開発とスクラッチ開発の特徴、両者の違いについて解説します。
パッケージ開発
パッケージとは、ERPやCRMなど業務分野ごとに必要とされる機能を網羅的に内包した製品です。以前は外資系ベンダーが提供するパッケージ製品が大半を占めましたが、近年は国内の製品も充実してきています。
パッケージ開発の最も大きな特徴は「標準機能をフル活用することで開発工数を最小化できる」という点です。パッケージ製品には、業務分野ごとに想定される業務の流れや、ベストプラクティスが集約されています。また、複数の業務シナリオを想定して機能をカスタマイズしていくことも可能です。既存の業務プロセスをパッケージに合わせることを心がければ、開発工数をかなり小さくすることができます。以下は、パッケージ開発のメリットとデメリットです。
メリット
パッケージ開発のメリットは「低コストかつ短期導入が可能」という点です。パッケージ開発は、「開発」よりも「作成」といった意味合いが強く、パッケージで用意されている材料に独自の味付けをしていくというイメージになります。もし、業務側をパッケージに合わせることを徹底できれば、3か月~半年程度の短期導入も可能です。また、パッケージに内包されるツールの活用や設定変更によって、ある程度の独自性を担保することもできます。
デメリット
パッケージ開発のデメリットは、開発が完了した後のランニングコストにあります。具体的には、IDの数だけ必要となるライセンス費用や保守費用、サポート費用などが挙げられるでしょう。これらが積み重なり、TCOの肥大化を招く可能性もあります。また、SaaS型の場合はほとんど追加開発の余地がない場合もあることから、十分に注意して選定を進めたいところです。
スクラッチ開発
スクラッチ開発とは、ゼロの状態から独自にシステムを開発する方式を指します。スクラッチ開発の最も大きな特徴は「仕様や機能の自由度が高い」という点です。特に自社開発の場合は、予算や時間が許す限り機能を作り込むことができます。
また、スクラッチ開発は開発の割合によって「フルスクラッチ」「ハーフスクラッチ」「セミスクラッチ」などの種類があります。フルスクラッチは、いわゆる「ゼロベース」での開発です。これに対してハーフスクラッチは、パッケージの機能を一部踏襲しつつ、独自の機能を付与するなど追加の開発を行う方式です。セミスクラッチはレガシーシステムに対して追加開発を施します。スクラッチ開発のメリットとデメリットは以下のとおりです。
メリット
スクラッチ開発のメリットは、「システムを業務に合わせられる」という点です。作り方によっては、業務プロセスを変更するためのルール作りや社内調整にかかる手間がほとんど必要ありません。また、OSSなどを重点的に採用する場合は、ベンダーロックインに陥りにくいこともメリットになります。
デメリット
一方、デメリットとしては「イニシャルコストが高い」「開発人材の確保が難しい」という2点が挙げられます。一般的にスクラッチ開発では、システムの規模に比例してイニシャルコストが高くなり、必要な人材の数も増えていきます。また、規模が大きくなり工期も長期化することで、管理工数が嵩んでしまったり、プロジェクトのハンドリングが難しくなったりというリスクもあります。
日本ではハーフスクラッチを多用する傾向だが…?
日本国内では、折衷案としてハーフスクラッチ開発を選択する企業が少なくありません。つまり、パッケージを導入したうえで、標準機能で賄えない部分については独自機能を追加で開発するのです。そこで、ハーフスクラッチについてもう少し詳しく見ていきましょう。
ハーフスクラッチのメリット
一般的にハーフスクラッチ開発では、各機能のコアな部分はパッケージの標準機能を使い、プラスアルファの部分だけをスクラッチ開発で行います。ハーフスクラッチのメリットは、端的に言えば「バランスの良さ」です。企業独自の業務プロセスに大きな変更を加える必要がなく、なおかつ投資額の肥大化も抑えることが可能です。また、パッケージに内包される機能やビジネスシナリオを流用することで業務の標準化が進むこともメリットのひとつでしょう。
ハーフスクラッチも万能ではない
ただし、ハーフスクラッチ開発にも弱点があります。それは「追加開発部分が大きすぎると、フルスクラッチ以上にコストが嵩む」という点です。複数の機能やアプリケーションを外注によって作成すると「フルスクラッチ開発のほうが安上がりだった」という結果になりがちです。また、標準機能と追加開発の境界で不具合が発生しやすかったり、保証の範囲が不明瞭になることでベンダーからのサポートを打ち切られたり、といったリスクもあります。
こうしたリスクに対応する方法としては、内製化が挙げられます。追加開発やトラブルにある程度対応できる体制を作っておくことで、コストとリスクのバランスをとるのです。
PaaS+スクラッチ開発による内製化
オンプレミスからクラウドへの移行と同時に業務システム開発を行うのであれば、PaaSの活用がおすすめです。メジャーなPaaSは開発作業をサポートするサービスが充実しており、スピーディーに内製化を進めることができます。また、PaaS上で提供されているSaaS型パッケージを組み合わせることで、ハーフスクラッチ開発を低コストかつ柔軟に進めることが可能です。
Azure上で提供されるSaaS型パッケージ「Dynamics365」
Azureでは、SaaS型パッケージ「Dynamics365」を提供して言います。Dynamics365は、クラウドERPとCRMの特徴を併せ持つ新世代のパッケージ製品です。「営業」「マーケティング」「サービス」「財務」「EC」「サプライチェーン」の7つを業務分野とし、各分野のベストプラクティスが集約されています。
Azureのアプリ開発支援サービス
さらにAzureでは、アプリケーション開発の内製化支援サービスも提供しています。このサービスでは、複数の言語とフレームワークに対応し、開発ツールの提供やローコード開発サービスとの連携も行っています。以下は、Azureの開発支援サービスの特徴です。
- NET、Java、Python、Node.jsなど複数の言語に対応
- Visual Studio CodeやGitHubなど充実の開発ツール群
- Microsoftのローコード開発サービスであるPowerAppsとの連携、Powerシリーズを通してDynamicsを拡張可能
まとめ
ここでは、パッケージ開発とスクラッチ開発の特徴や違い、ハーフスクラッチ開発の課題などについて解説してきました。これからの業務システム開発では、ハーフスクラッチ開発と内製化を両立させる体制づくりが重要です。もし、開発方法でお悩みであれば、Azureのようにパッケージ・スクラッチ開発の両方に対応できるサービスの導入を検討してみてはいかがでしょうか。