アプリ開発におけるパッケージ開発とは?スクラッチ開発との違いも解説
公開日:2023.11.16 最終更新日:2024.04.18
アプリ開発の手法の一つとして、既存のアプリを利用して開発を行う「パッケージ開発」というものがあります。
今回はパッケージ開発の流れや特徴を、対比される「スクラッチ開発」と比べて解説します。
アプリ開発におけるパッケージ開発とは?
アプリ開発の契約や方法の一つに「パッケージ開発」があります。
「パッケージ」とは、サブスクリプションやクラウドサービスなどの、システムの主な部分が提供側にあるソフトやアプリに対して、買い切り型でデータの多くを購入側が管理するソフトをいいます。
「パッケージ開発」とは既存のアプリケーション(ソフトウェア)を叩き台にして、新しいアプリケーションを開発することです。
モデルにしたアプリケーションとは、ユーザー側からは関係性がわからないものから、同じブランドをクライアント向けのカスタムをアプリケーションに行うものまで、「パッケージ開発」の扱う幅は広いです。
また、サブスクリプションのソフトに対して、買い切り型のアプリも「パッケージ」と呼ばれることがあります。
関連記事:【アプリ開発用語集】パッケージ開発とは
パッケージシステムをカスタマイズする
また、パッケージ開発には、既存のアプリをカスタマイズする意味あいもあり、アドオンやパッチでソフトの専門性を高めることが一般的に使われる場合もあります。
そのため、基本カスタマイズを前提にしていないデスクトップアプリや、機能の追加が難しいSaaSは、パッケージ開発の対象になることはなく、パッケージ開発の対象となるカスタム元は、そもそもパッケージ化を前提として開発されていることが多いです。
さらには、パッケージ元はそのまま販売されず、クライアントにはパッケージ販売された物だけを販売するような媒体も存在します。
スクラッチ開発との違い
「スクラッチ開発」とは、「パッケージ開発」に対して、はじめから開発を行うソフトウェアのことを指します。
自社で開発を行う場合もあれば、他社に依頼して開発することもあるなど、通常のアプリケーション開発と違いはありません。
関連記事:【比較】パッケージ開発とフルスクラッチ開発との 違いとメリット・デメリット
スクラッチ開発の特徴
スクラッチ開発の特徴として、「パッケージ開発」に比べて機能や内容の自由度が高い点です。
パッケージ開発でも、機能のカスタマイズで事足りる場合もあります。しかし、特殊な機能など、パッケージ元のカスタマイズ機能と大きく設計や要件定義が異なるソフトの場合は、要望通りに制作するのが不可能な場合もあります。
また、パッケージ開発は、パッケージ元の使用に実績がある場合が多いので、エラーやバグなどは「スクラッチ開発」に比較して少ない傾向にあります。
開発コスト
「スクラッチ開発」の方が、「パッケージ開発」より様々なコストが必要なケースが多いです。
理由としては、「スクラッチ開発」は「パッケージ開発」のように、開発の元にするデータがないので、基礎的な部分から開発を始める必要がある他、自由度が高いため完成イメージのすり合わせや、工程の多さから多くのコストが必要になってしまうのです。
開発期間
上述のように「スクラッチ開発」には多くの工程が必要なため、開発期間も長くなってしまう傾向があります。
また、外注で製造する場合でも、「パッケージ開発」に比べるとやはり修正や新しい機能の取り入れが必要になるため、コミュニケーションの回数なども「スクラッチ開発」の方が多い傾向にあります。
オリジナリティ
自社ブランドのイメージを担保したアプリを開発したいときは、「スクラッチ開発」で開発した方が「パッケージ開発」よりオリジナリティを出すことができます。
「パッケージ開発」で開発を行ったり外注すると、他社が同じパッケージ元を活用しているアプリを開発していた場合、フォントやデザイン感が似通ってしまうからです。
また、「パッケージ開発」を選ぶ場合でも、パッケージ元の機能と自社が求めている機能に乖離がないか確認する必要があります。
必要としている機能が「パッケージ開発」元のソフトに搭載されていない場合は、「スクラッチ開発」を選択した方が良い場合もあります。
運用方法
「スクラッチ開発」で開発されたアプリは、長期間の運用するときなどにおすすめです。
「スクラッチ開発」は前述のように、一からアプリを制作するため、多大なコストがかかります。しかし、新しい機能を追加するときに、必ずしもパッケージ元に依頼をする必要がなく、自由度も高いため、トータルのコストが低く抑えられる傾向にあります。
一方、「パッケージ開発」では、最初の開発費用は抑えられますが、機能の追加などの際にコストが掛かるため、長期運用には向いていません。また、パッケージ開発元からサポートが受けられることが多いため、短期運用を前提にしている場合や、アプリの運用に自社の人的リソースを回すことのできない会社などは、「パッケージ開発」で商品の開発を行うことが合理的です。
パッケージ開発の手法
パッケージ開発とスクラッチ開発の違いや特徴を説明してきましたが、両者の開発のプロセスにはあまり違いがありません。
以下のような流れで開発を進めます。
- 要件定義
開発の最初に「要件定義」を行います。
要件定義とは、技術的なことを決める前に、開発するシステムは「何に使うのか」「どんな機能が必要なのか」などの、要望をまとめることです。
基本的には、クライアントとの話し合いで決めます。 - 設計
要件定義でヒアリングした内容を元に、技術面で開発する内容を設計します。
設計には「内部設計」と「外部設計」の2種類があります。
「内部設計」を運用者であるエンジニアが触る部分のシステムに関する設計です。バックグラウンドともいいます。
「外部設計」は一般ユーザーが使用する部分の設計です。
具体的には、スマホでアプリを使用する際にユーザーが見るデザインや操作感などがあたります。 - プログラム開発
各種設計が完了したらプログラムの開発に入ります。
パッケージ元や、スクラッチ開発で使用する予定のプログラミング言語で、設計で制作された内容を元にコーディングを行います。 - テスト
コーディングが完了したら各種テストを行います。
テストは行う範囲別に「単体テスト」「結合テスト」「システムテスト」の3種類があります。
「単体テスト」は、1ブロックのコードごとに不具合がないか確認するテストのことです。結合テストを飛ばして範囲の大きいテストを行ってしまうと、エラーが発見された際に全て全て調べることになってしまい多くの時間が掛かるため、単体テストは重要だといわれています。
「結合テスト」は、コード全体が噛み合っているかを調査するテストです。
「結合テスト」では設計書で定めた機能がアプリで動いているか確認して、一通りアプリが正常に作動するかを確認します。
操作に問題がなかった場合は。「システムテスト」を行います。
「システムテスト」では要件定義に定めた内容が稼働しているか確認します。
他にも「運用テスト」があり、クライアントや実際のユーザーの使用感に問題がないか運用レベルのテストを行います。
また、「パッケージ開発」の場合は細かいエラーなどが既に、以前の使用で判明している場合もあるため、チェックリストを作成する手間を省くことができます。 - 移行・導入
クライアントのサーバーにインストールすることで納品します。 - 運用
クライアントに引き渡し後、システムの管理を行う「運用」に入りますが、運用の契約や完成後の保証契約を結んでいない場合、この段階で成約となります。
また、納品直後はテストで確認しきれなかった事柄などにより、思わぬことで不具合が発生したりして、問い合わせが多くなる場合があります。
開発ベンダーにカスタマイズを依頼
「パッケージ開発」の場合、開発ベンダーにカスタマイズを依頼することが一般的です。
そもそも、「パッケージ開発」の場合は運用までセットで依頼することが多く、カスタマイズもベンダーに依頼します。
ただし、ベンダーの倒産やサポートの終了などによって開発元へカスタマイズが依頼できない場合は、個別の業者を見つけなくてはならないといったデメリットがあります。
そのため、前述したように長期間の運用で「パッケージ開発」
を行うことは危険だといえます。
開発パートナー企業にカスタマイズを依頼
「パッケージ開発」とはいえ、ベンダー以外に開発を依頼する場合があります。
改めて業者を選定する場合は、パッケージ元のカスタマイズに実績があるなど、パッケージ元のフレームワークに対応した会社を選ぶとよいでしょう。
自社開発チームでカスタマイズ
「パッケージ開発」でも自社開発チームでカスタマイズを行う場合があります。
「スクラッチ開発」と同じように、自社にリソースやノウハウがないと対応するのは厳しいため、大掛かりなアプリを開発するなどで、自社に開発スキルはあるが「パッケージ開発」を他社に依頼するなどの場合は、このケースが当てはまります。
アプリ開発の際にどちらを選べば良いのか
実際にアプリ開発を行う際。「パッケージ開発」と「スクラッチ開発」どちらを選べばよいか、まとめます。
パッケージ開発が向いているケース
パッケージ開発でアプリの開発を行う場合は以下のケースがよいでしょう。
- 運用期間が短い
- パッケージ元の機能と、求めている機能が類似している
- オリジナリティを重視していない
- 独自の機能が必要ない
- 予算が少ない
上記のようなケースでアプリ開発を進める場合は、「パッケージ開発」を使用することが合理的です。
スクラッチ開発が向いているケース
次にスクラッチ開発を選択した方がよいアプリ開発のケースについて紹介します。
- 運用期間が長い
- 独自性の高いアプリで自社が求める機能を備えたパッケージが存在しない
- オリジナリティを重視している
- 独自の機能が必要ない
- 予算が潤沢である
上記のように予算が潤沢であり、今後の事業の中核を担うようなアプリ開発を考えている場合は「スクラッチ開発」を選択するのがおすすめです。
また、一般消費者向けのアプリ開発で自社ブランドを全面に押し出したい場合は、「スクラッチ開発」を選択する必要があります。
アプリ開発の手法を選ぶ際のポイント
上述した以外にも「パッケージ開発」と「スクラッチ開発」を選ぶ際の詳細なポイントを解説します。
課題解決に必要な機能要件を明確にする
決定した「要件定義」と同じようなパッケージ元がある場合は、「パッケージ開発」を選択するのが効率的といえます。
そのため、「パッケージ開発」か「スクラッチ開発」どちらを元に作成すればよいか、
逆に、求める機能が既存のアプリケーションに存在しない場合「スクラッチ開発」を選択するのが必須です。
機能要件を満たせるパッケージを検討する
求める機能要件を満たしたパッケージがあるか検討した上で、「パッケージ開発」にするか、「スクラッチ開発」にするか検討しましょう。
予算・納期を総合的に考慮する
先述のように、「パッケージ開発」と「スクラッチ開発」では予算感や納期に大きな隔たりがあります。
まずは低コストで作りたいのか、今後の事業の中核となるアプリを作るため、最初からコストをかけて開発するのかなど、長期的な視点を持って検討しましょう。
アプリのパッケージ開発を外注するならEMEAO!
「EMEAO!」では、「パッケージ開発」から「スクラッチ開発」までアプリの開発を行う業者を無償で紹介しています。
「パッケージ開発」と「スクラッチ開発」どちらで開発しようかと迷われていたり、どのようなパッケージ元を選択すればよいか迷われているお客さまがいらっしゃったら、ぜひ「EMEAO!」にご相談ください。
この記事を書いた人
編集部員 濵岸
編集部員の濵岸と申します。コンテンツ作成と取材を主に担当しております。身長が低いため学生時代は「お豆」と呼ばれていました!豆らしく、皆様の役に立つ記事を「マメに豆知識を!」の意識で作成します!どうぞよろしくお願いいたします!