フリーランスが目指すならスクラッチ開発?パッケージ開発?

システム開発においてサービス手法としてスクラッチ開発とパッケージ開発があります。どちらもメリット・デメリットがありますがフリーランスエンジニアが目指す方向として良い開発はどちらになるのかを記載します。

 

スクラッチ開発とは?

何もない状態からコードを記述しシステム構築することをスクラッチ開発と言います。

簡単に言えば既存製品に頼らずお客様の要件を満たすために最初からすべて作ることです。

住宅販売で言えば注文住宅に該当します。

パッケージ開発とは?

お客様の要件ではなく予め想定した業務やサービスにおいてシステム開発を行うことをパッケージ開発と言います。

住宅販売で言えば建売住宅に該当します。

 

それぞれのメリット・デメリット

住宅販売に例えるとイメージしやすいかと思います。

スクラッチ開発のメリット・デメリット

スクラッチ開発は住宅販売で例えると注文住宅になります。土地部は置いたとして、注文住宅を建てるには色々と検討することが多いです。夢のマイホームを叶えるため張り切って取り掛かりまずがあまりにもやることが多すぎてモチベーションの継続が難しく感じることもあるかもしれません。

時間と労力をかけて自分のイメージ通りのものを作る!という点が注文住宅(=スクラッチ開発)のポイントです。

メリット

  • お客様の要件に沿ったシステム構築が可能
  • 業務に独自性がある場合でもお客様の要望に沿ってシステム構築を行うため、使いやすいシステムが構築できます。

  • 業務の拡大にも柔軟に対応が可能
  • 予め業務の拡大性について検討しシステム構築時に考慮することで、システム改修を楽に対応することができます。

デメリット

  • 開発期間が長く、コストがかかる
  • システム構築をする前にお客様の要件をヒアリングしシステム設計を行いプログラミング・テストから導入となるため時間が多くかかります。時間がかかるということはシステム開発費用も多くかかりますので発注側にも体力が必要です。

  • お客様に業務要件をアウトプットするスキルが必要
  • お客様の業務内容はお客様でアウトプットする必要があるためしっかり業務内容を把握している人が担当者にならないと手戻りばかり発生し、結果コストが膨らむ可能性があります。

  • システム品質が開発者に依存
  • システムの品質は重要ですが、スクラッチ開発はゼロから作成するため開発者のスキルに依存します。テストがしっかり行われないとリリースしたあとも障害が発生しシステムがうまく動かないケースもあります。

スクラッチ開発まとめ

独自性のあるシステムを構築できる反面、発注側にもシステム知識や体力なども必要となります。

 

スクラッチ開発は時代遅れなのか

SESとして現場でSE作業に携わっていますが、以前はスクラッチ開発が基本となっていたものが近年ではクラウド化やパッケージ導入化の検討が進んでおります。

理由としては保守費用の削減です。

オンプレサーバ+スクラッチ開発はどうしても保守費用が嵩みます。

AWSなどのクラウドサーバやパッケージを導入することでバージョンアップ対応や制度変更は自社で対応する必要がありません。

そういった理由から新規開発を行う場合でも既存システムの見直しをする場合でもまずはパッケージ化を検討します。

基盤更改案件においてもクラウド化+パッケージ導入案で検討を進めています。

※スクラッチ開発のパッケージ化導入化は非常に難しく、特殊な業務がパッケージでどこまで網羅されているかが導入可否のポイントになるかと思います。実際、パッケージを検討しても本当に従来のスクラッチ開発機能が充足するかは不安があります。

パッケージ開発のメリット・デメリット

メリット

  • 受注から導入までの期間が短い
  • パッケージ開発はお客様へ提案する際にはすでにシステムが構築済みとなっているのでスクラッチ開発に比べ受注から導入までの期間が短いです。お客様もシステムを作る気になっても導入まで1年もかかると気持ちが切れる可能性があり、受注しにくくなります。その点パッケージでは導入コストのみとなりますので、早ければ数日、もしくはユーザ登録するだけで利用可能となります。

  • システムの安定稼働
  • スクラッチ開発は作ってテストしてを繰り返していきますが、パッケージ開発ではすでにテスト済みまたは他のお客様で動作実証済みのソフトを導入することができます。

  • 開発コストが低い
  • 毎回オーダーメイドのスクラッチ開発に比べ、パッケージ開発では一度作成したシステムを初期設定のみで各お客様へ販売をすることから要件定義・製造・テストの工程が不要となりその分コストを下げることができます。

  • 業務標準化の提案
  • パッケージ開発では決められた業務しか処理できないことをきっかけにお客様の業務を見直し標準化することで作業効率化に繋がります。

デメリット

  • 決められた機能しか利用できない
  • お客様ごとに業務は異なりますが、パッケージ開発では予め想定した業務で仕様を決めるため独自色のある業務には耐えることができません。その処理が致命的な処理であるとシステム導入に暗雲が立ち込めます。

  • 営業力が重要
  • どんなに良いシステムを構築してもそれを売るための営業力が必要です。(これはスクラッチ開発でも同じですね)パッケージ開発では売れば売るほど開発単価は下がりますので多くの人に利用してもらえるようなシステムづくりにすることが重要となります。

パッケージ開発まとめ

開発・導入コストが低くお客様に提供しやすい反面、発注側の細部の仕様に適用できない可能性もあります。

自分の立ち位置や相手先の規模によって変わる!

結局スクラッチ開発とパッケージ開発のどちらがよいのか!?

お客様が大手であるほどパッケージ開発の業務標準化よりも独自業務を重視する傾向があります。そうなるとパッケージ開発では要望を満たせずスクラッチ開発することが多くなります。また大手システム開発会社が作成したパッケージソフトは多岐にわたる機能があります。

中小企業や個人業務に関してはスクラッチ開発を行う体力を維持することが懸念となりますのでパッケージ開発したソフトを導入することが多くなります。

フリーランスエンジニアで目指すなら・・・

やはりパッケージ開発になると思います。スクラッチ開発はどんなに大型案件を受注しても人月計算となりますので、金額が多くてもその案件に拘束される期間も長くなるので1人月以上の作業は産み出すことが難しくなります。

反面、パッケージ開発では1システム構築するとあとはそれを導入するための営業と初期設定が作業となります。初期設定も各社で同様の対応となることで導入作業の効率化を図ることができまる。

安定感のスクラッチ開発、爆発力のパッケージ開発と考えています。

スクラッチ開発を学ぶなら

スクラッチ開発を独自で学ぶことはとても難しいです。何故ならスクラッチ開発は規模が比較的大きく、一人で作業するには期間が長くなるからです。

そのためプロジェクト形式で多くの人材をあつめ、一緒に作業することがあります。

SESとして現場に出て周りに人がいる状況で作業するのが良いかと思います。

そのためにはまずはエンジニアとしてフリーランス案件へ出向することをお勧めします。

[common_content id=”1401″]

パッケージ開発を学ぶなら

パッケージ開発はプログラミングスキルを学んでから独自の知識とアイデアでシステムを構築する必要があります。ビジネスモデルをしっかり検討し、自分のプログラミング力をサービス化することで開発コストを下げ売上を上げられるようになります。

[common_content id=”1398″]