スクラッチ開発は時代遅れ?ローコード開発やメリットとデメリットから考えてみよう

#開発手法
公開日:2024年03月27日(水)

序章

スクラッチ開発という開発手法があります。昔から存在する開発手法ですが、テクノロジーは進化し、システム開発の難易度は上がり、IT開発者の人手不足の背景から見てスクラッチ開発は時代遅れなのでしょうか?そこで、様々なシステム開発手法:スクラッチ開発やローコード開発・ノーコード開発の違いやメリットとデメリットを整理していきます。また、レガシーシステムのマイグレーションを行う際の方法のリホスト、リライト、リビルドの違いも解説いたします。「スクラッチ開発は時代遅れなの?そうではないの?」の答えを提示します!

スクラッチ開発とは?意味や言い換えも紹介

スクラッチ開発とは、システムやソフトウェアをゼロから設計・開発する手法です。ERP(Enterprise Resources Planning)パッケージやクラウドERPを使わず、既存のテンプレートや開発フレームワークを使用し、要件定義から設計、プログラミング、テストまでの全工程を独自の開発で行うことをスクラッチ開発と言います。

スクラッチ開発と似た言葉として、フルスクラッチ開発があります。スクラッチ開発の中でも、既存のテンプレートや開発フレームワークさえも使用せず、全工程を新規に一から独自の開発で行うことがフルスクラッチ開発です。

スクラッチ開発と対比される開発手法としてパッケージ開発があります。パッケージ開発はERPなどのような既に出来上がっているシステムを利用して開発する手法です。開発期間や開発コストを低減できる可能性がある一方、スクラッチ開発よりも自由度は低く、時には業務や要件をパッケージシステムの方に合わせる必要が出てくることもあります。

昨今ではDXや生成AIのようにシステム開発の範囲、技術が複雑化し、独自開発のボリュームが増えています。また、システムを必要とする業務が多様化し、既存にパッケージが存在しないようなシステムを開発するようなことも多々あります。このような場面においてとりうる開発手法としてはスクラッチ開発しかないのでしょうか。

スクラッチ開発、ローコード開発、ノーコード開発の違い

以前ではスクラッチ開発を行わなければならなかったようなカスタムアプリケーションを作成する場面において、ローコード開発やノーコード開発といった手法が注目されています。スクラッチ開発が理解できたところで、ローコード開発とノーコード開発も整理しながら、3つの開発手法の違いを解説していきます。

事業企画者が押さえておくべき
ローコード開発のメリットと成功事例

スクラッチ開発

既存のテンプレートやフレームワークを使用し、要件定義から設計、プログラミング、テストまでの全工程を独自の開発で行う手法。企業の要望通りにイチからシステムを構築できる。

ローコード開発

開発者がプログラミングやコードを書かなくても、製品機能の画面操作でシステム開発を行う手法。簡単なシステム開発であればエンドユーザー側で実行でき、難しいシステム開発であればベンダーに開発を任せることができる。ローコード製品の仕様で制約が発生することがあるが、そういった要件は個別にプログラミングしてシステム開発ができるローコード開発ツールもある。

ノーコード開発

ノーコード開発はエンドユーザー側が、簡単なシステムを製品機能の画面操作で開発する手法。ローコード開発には、ノーコード開発の機能も含むという上位概念の意味がある。本記事ではノーコード開発ツール機能を含む、ローコード開発ツールを中心に記載していく。

ここで一度、スクラッチ開発、ローコード開発・ノーコード開発ツールの違いをまとめます。スクラッチ開発はイチから要望通りになんでも開発できる、ローコード開発はノーコード開発を含んだ製品機能の画面操作で開発を実行し、求める要件へ柔軟に対応できるといった違いがあります。

マイグレーションのリホスト、リライト、リビルドの違いも知っておこう

スクラッチ開発をするか否かを検討する場面として、レガシーシステムの移行・刷新が挙げられます。レガシーシステムとはその名の通り古くから存在しているシステムで、旧世代の技術や仕組みで構築されているシステムを指す言葉です。

レガシーシステムは、ホストコンピューター(以下、ホスト)で開発された大規模システムであったり、オープン系のシステムであってもクラウドが登場する前の技術で構築された自社データセンター内のシステムである場合もあります。

それらレガシーシステムを移行・刷新することをマイグレーションと呼びます。

マイグレーションにはリホスト、リライト、リビルドという方法がありますので、それぞれの違いも知っておきましょう。

リホスト

リホストとは、システム基盤の保守期限切れやスペック向上のために、ハードウェアを入れ替える手法を言います。‘入れ替える’という意味でリプレース(リプレイス)とも呼ばれることもありますが、リプレースはシステム開発では様々な文脈で使われる言葉ですので、本記事内では基盤・ハードウェアの入れ替えをリホストと記述します。
昨今は、自社データセンターなどのオンプレミス環境からクラウド環境へリホストすることをクラウドリフトと言ったりもします。

リライト

リライトとは、機能はそのままに、現行のソースコード、データ、ファイルを新しいプログラム言語などに転換し新しい環境に適応させる手法を言います。中でも、ソースコードは現行のプログラミング言語のまま新しい環境で動作するように必要最低限の改修にとどめる手法をストレートコンバージョンと呼びます。

リビルド

リビルドとは、システムを再構築する手法を言います。マイグレーションのリホストやリライトのようにハードやソフトを移行するのではなく、イチからシステムを作り直して再構築するという意味です。
最近では、古い手法や設計で作られたシステムをクラウドの最新技術を用いて再構築することをクラウドシフトと言ったりもします。また、レガシーシステムをモダナイゼーション(現代的な技術でシステムを刷新すること)する方策としてリフト&シフト(まずはクラウドへリフトして、そのあとでシフトする)が推奨されています。

昨今、マイグレーションでリビルドが選択されるケースが多いようです。その背景には、結局はリホスト・リライトでは古い技術やしがらみに縛られたままであり、近年のDX推進に求められる要件の実現が困難となってしまうことが多いといった理由が挙げられます。ただ、一般的にリビルドはリホスト・リライトに比べて開発期間やコストが増加する形となります。そのため、リビルドをあきらめてリホスト・リライトを選択するといったこともあります。

リビルドするにあたりそのデメリットである開発期間やコストの削減を可能とするソリューションとしてローコード開発、ノーコード開発に注目が集まっています。

それでは次に、タイトルにある「スクラッチ開発は時代遅れなの?」という点を考えるために、スクラッチ開発のメリット・デメリットについて整理していきます。

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

「スクラッチ開発は時代遅れなの?そうではないの?」という点を考えるために、スクラッチ開発のメリットとデメリットを整理してみましょう。

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

要件への柔軟性と拡張性
企業が求める要件を実現したシステムを作れます。「なんでも要望通りに」という柔軟性を持った開発手法です。将来的な機能追加や変更等の拡張性もあります。

自由度の高い設計・開発
製品の仕様や既存システムに縛られない、完全オーダーメイドのシステムが構築できます。自由度の高い設計・開発ができるので、パッケージ製品が存在しない業種・業界や大規模システムに向いています。

最先端の技術の適用
パッケージ製品のような標準仕様であったり制約はありません。つまり、発表されたばかりの最先端の技術を自由にシステムに適用することができます。競合他社に先んじて先進的なサービスの提供ができたりします。

「なんでも要件通りのシステムが作れて、先進的なシステムも作れる」というスクラッチ開発はメリットだらけのように感じます。しかし、スクラッチ開発のデメリットも存在しますので、しっかり理解しておきましょう。

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

開発期間とコスト
スクラッチ開発を服に例えると「既製品ではなく、オーダーメイド」です。つまり、オーダーメイドは納得のいく良いものは作れますが、期間とコストがかかります。しかも、IT技術者が不足している今、想像以上に開発納期と費用がかかります。

技術力・品質管理・プロジェクトマネジメント
設計からプログラミングまで、幅広い技術力が求められます。テストを徹底して行う必要があり、品質管理も気を配らなければなりません。期間の長いプロジェクトになるためQCD(品質・コスト・納期)をしっかり管理できるプロジェクトマネジメントも大切です。

開発ベンダー選定
スクラッチ開発が自分の組織でできない場合は、外部の開発ベンダーに依頼することになります。スクラッチ開発に適していて、技術力・品質管理・プロジェクトマネジメントがしっかりできる開発ベンダーを選ばなければなりません。新規取引であれば、打合せ段階で開発ベンダーの実力を見極めることは、簡単ではありません。アマがプロを判断にするのはリスクがあります。

スクラッチ開発のメリットとデメリットをまとめますと「自由に要望通りに開発はできる。しかし、コスト・納期がかかり、開発ベンダーの実力判断や品質面にリスクがある」と言えるのではないでしょうか?このようなスクラッチ開発のデメリットを補い、スクラッチ開発のメリットの恩恵を受けられる方法があります。それがローコード開発です。

ローコード開発ツールでもスクラッチ開発に近いことができる

ローコード開発ツールとは、プログラミングやコーディング等の専門的な知識が乏しくても、ドラッグ&ドロップや画面操作でシステム開発ができるツールです。フレームワークで様々な部品が提供され、クラウドで利用できるローコード開発プラットフォームは、ローコード開発ツールの進化版と言えます。

ある程度の範囲まではプログラミングに詳しくなくとも開発ができます。複雑なシステムではない場合、開発コストを抑えるために自社で開発するといった選択肢をとることも可能です。開発ベンダーに依頼しなければならない複雑なシステムであっても、ローコードで開発できる部分の工数は低減することが可能で、スクラッチ開発するよりはコストが抑えられる可能性があります。そして、ローコード開発プラットフォームの機能や仕様に準じて開発していきますので、開発者個人であったり開発ベンダーの技術力だけに依存するわけではありません。認証機能や権限制御、データ管理など、ある程度のベースの部分はローコード開発プラットフォームが担保してくれる部分があり、一定レベルの品質の確保はできます。また、ローコード開発プラットフォームが提供していない機能をコーディングして機能を拡張することもできます。セキュリティレベルの向上や拡張性にもローコード開発プラットフォームは優れていると言えます。

しかし、ローコード開発プラットフォームの製品によってその使いやすさ、提供される機能、拡張性は異なります。ローコード開発プラットフォームといっても機能や仕様による制約により、自由に要望通りのシステム開発ができないケースは意外に多くあります。これでは、スクラッチ開発(=プロコード開発)に近いことができるとは言えません。

そこで、ローコード開発とプロコード開発の双方を実現できるローコード開発プラットフォームを1つご紹介します。それは、iPLAss(アイプラス)です。

iPLAssは顧客の要望に合わせて機能を選び、ローコード開発+プロコード開発の手法でシステム開発ができます。例えば、簡単な機能はローコード開発機能を用いてノンプログラミングで開発します。

難しい機能では、JavaやGroovyの開発言語でプログラミングできるので、コーディングができる開発者に自由に開発してもらいます。つまり、スクラッチ開発と同じように要望通りに作って欲しいものはプロコード開発、コストや納期を抑えたいものはローコード開発をするのです。

これならスクラッチ開発のメリットと同じように要望を叶えるシステム開発ができ、スクラッチ開発のデメリットを最小限に抑えられます。

    スクラッチ開発は時代遅れなの? まとめ

    「スクラッチ開発は時代遅れ?ローコード開発やメリットとデメリットから考えてみよう」と題して、ご紹介してまいりました。「スクラッチ開発は時代遅れなの?」の答えは、次のようにまとめられると思います。

    1.  IT人材の人手不足の背景からシステム開発のコストは高騰しており、納期もかかる。DX推進が叫ばれる中システム化すべきものはたくさんあるが、すべてのシステムをスクラッチ開発で要望通りのものを作っていくことが難しくなってきている。
    2. 一方で、DX推進にはレガシーシステムのリビルドによるマイグレーションが喫緊の課題として浮上している。リビルドの選択肢はパッケージ製品やクラウドサービスへの移行、ローコード開発、スクラッチ開発と複数の手段(またはその組み合わせ)が考えられる。コストや解決したい課題に合わせて適切な手段を選択することが肝要。
    3. 依然として先進的な技術の実装、誰も構築していない新サービスの開発にはスクラッチ開発が最適。ただしコスト低減や開発スピード確保のために一部ローコード開発プラットフォームを活用することも可能。

    このような視点でスクラッチ開発を考える必要があります。
    本記事でご紹介したローコード開発プラットフォーム「iPLAss」は、制約の少ないローコード開発プラットフォームです。レガシーシステムのマイグレーション、複雑なシステムの開発を計画されている方は、iPLAssという選択肢も検討いただければ幸いです。

    当サイトでは、ノーコード開発ツールやローコード開発プラットフォームを利用し、業務システムの開発を効率化したいエンジニアの方や、会員サイト構築などの新規事業の目的を達成したい方へ、ダウンロード資料をご用意しております。ぜひ資料をご覧いただき、ご活用ください。

    本記事の内容・料金・価格は2024年1月31日の情報を基に作成しています。詳しい内容や料金・価格は各サイトにお問合せください。