この記事に関連するお役立ち資料

AIを活用した業務自動化 事例BOOK
無料ダウンロード
SaaSの開発工程について知りたい
SaaSを自社で開発する場合、どのような開発方法があるのか知りたい
SaaSの開発において、どのような工程があるのか知りたい
SaaS開発には、フルスクラッチやパッケージソフトのカスタマイズ、オープンソースソフトウェアの利用などがあります。また、SaaSのシステム開発工程では、「The Twelve-Factor App」がよく参考にされるものです。
本記事では、SaaSの開発工程について解説し、SaaSを自社で開発する場合の開発方法やシステム開発工程について紹介します。
本記事を読むことで、SaaS開発についての理解が深まり、自社でのSaaS開発においても安心して取り組めるでしょう。


SaaSを開発する際の方法論には、いくつかのアプローチがありますが、現代の主流はフルスクラッチによる方法です。以下に、SaaSの開発方法について詳しく説明します。
フルスクラッチの開発
パッケージソフトのカスタマイズ
オープンソースソフトウェアの利用
フルスクラッチとは、ゼロからソフトウェアを開発する方法を指します。この方法は、SaaSを開発する際に最も自由度が高いアプローチとされています。
開発者は、自らのビジョンに基づいてすべての機能やプロセスを設計・実装するため、カスタマイズ性や独自性を極限まで追求できます。
一方で、パッケージソフトのカスタマイズも一般的な開発方法です。SaaSに必要な基本機能を提供しているパッケージソフトをベースに、必要に応じてカスタマイズや拡張を行い、独自のソフトウェアを開発します。
ただ、結局のところはSaaSを使っているため、独自のシステムとはなり得ません。開発期間を短縮しつつ、必要な機能を実現できますが、どこかに依存するという側面があることからSaaSの開発方法には挙げられないでしょう。
また、オープンソースソフトウェアの利用も選択肢の一つです。無料で利用可能なオープンソースのソフトウェアをベースに、独自のカスタマイズや機能追加を行い、SaaSを開発します。コストを削減しつつ、高品質なソフトウェアを実現できます。
オープンソースをベースにしていますが、結局はオリジナルで開発する方がよいケースもあります。コードの親和性を加味した開発が求められることから、難易度が高くなることも考えられるでしょう。
総じて、SaaSの開発方法には多くの選択肢がありますが、現代ではフルスクラッチによる開発が自由度を最大限に引き出す主流の方法です。ただし、技術やビジネスの進化に伴い、新たな開発手法が登場する可能性もあるため、常に最適な方法の選択が大切です。

SaaSは、「Software as a Service」の略語で、クラウド上のソフトが利用できるサービスを意味します。
作成したデータはインターネット上に保存でき、複数人での共有や編集が可能です。デバイスや場所を選ばずアクセスできるのも特徴の1つです。
コスト面では、ソフトウェアを開発する必要がないため開発コストを抑えられます。さらに、管理の手間が省けるのでランニングコストも下げられるのも魅力です。
SaaSの代表的なサービスには、以下のようなものがあります。
メールサービス
SNSサービス
ストレージサービス
クラウドツールサービス
グループウェアサービス
また、SaaSは顧客と共に自社も成長する理想的なビジネスモデルです。サブスクリプションとの相性が良く、新規顧客獲得につながりやすいシステムといえるでしょう。
【関連記事】【決定版】SaaSとは?基本から開発方法・費用やサービスの立ち上げ方までプロが解説


SaaSのシステム開発工程では、「The Twelve-Factor App」と呼ばれるものが利用されます。特にクラウド上でのWebアプリケーションやSoftware as a Service (SaaS)の開発において重要な12のベストプラクティスを提供しています。
工程 | 概要 |
|---|---|
I. コードベース | バージョン管理されている1つのコードベースと複数のデプロイ |
II. 依存関係 | 依存関係を明示的に宣言し分離する |
III. 設定 | 設定を環境変数に格納する |
IV. バックエンドサービス | バックエンドサービスをアタッチされたリソースとして扱う |
V. ビルド、リリース、実行 | ビルド、リリース、実行の3つのステージを厳密に分離する |
VI. プロセス | アプリケーションを1つもしくは複数のステートレスなプロセスとして実行する |
VII. ポートバインディング | ポートバインディングを通してサービスを公開する |
VIII. 並行性 | プロセスモデルによってスケールアウトする |
IX. 廃棄容易性 | 高速な起動とグレースフルシャットダウンで堅牢性を最大化する |
X. 開発/本番一致 | 開発、ステージング、本番環境をできるだけ一致させた状態を保つ |
XI. ログ | ログをイベントストリームとして扱う |
XII. 管理プロセス | 管理者は、アプリケーションのために1度だけのメンテナンス用タスクを実行したくなる |
1つのコードにローリングされた複数のデプロイがコードベースです。デプロイとは、アプリケーションを実行している中でのインスタンス(実体)を意味します。コードベースは、すべてのデプロイで差異はありません。
コードはバージョン管理され、一つのコードベースから複数のデプロイが可能です。これにより、コードの変更が一元的に管理され、異なる環境へのデプロイも容易に行えます。
アプリケーションの依存関係を明確に宣言し分離することで、必要なライブラリやツールの一貫性を保ちつつ、環境間での差異を最小限に抑えます。
SaaSは、パッケージに依存しないため、関係の宣言も大切です。分離ツールを利用して依存関係が漏れないように努めましょう。依存関係は、本番の環境にも開発環境にも適用されます。また、依存関係においては宣言と分離を同じように使う必要があることも理解しておいてください。
アプリケーションを設定する際は、環境変数に格納します。定数として、コード内に格納しないようにしてください。環境変数は、設定ファイルと違いコード変更をせずデプロイごとに設定可能です。リポジトリにチェックインされてしまう可能性はほとんどありません。
アプリケーションの設定を環境変数に格納することで、セキュリティを向上させつつ、異なる環境への移植性を確保します。
アプリケーションがネットワーク越しに利用できるサービスのことを、バックエンドサービスといいます。
たとえば、以下のようなサービスが該当します。
データストア
メッセージキューイングシステム
SMTPサービス
キャッシュシステム
外部サービスのアタッチでタッチ可能になり、ソースとするために環境変数に定義します。後から、コードを修正することで環境ごとのビルドが省けます。
バックエンドサービスはアタッチされたリソースとして扱われ、外部サービスとの連携が容易に行えるため、アプリケーションの拡張や交換がスムーズです。
ビルドとリリース、実行という3つのステージの分離も必要です。コードベースは、ビルド、リリース、という過程を経てデプロイへ変換されます。
ビルドは、コードリポジトリを実行可能に変換するステージです。リリースは、ビルドをデプロイと結合するステージで、実行は選択されたリリースを起動するステージを指します。
ビルド、リリース、実行の3つのステージを厳密に分離することで、コード変更からデプロイまでのプロセスを独立させ、効率的な変更とデプロイを実現します。
永続化するデータは、データベースに格納する必要があります。アプリケーションをステートレス(システムが現状を保持せず、入力内容のみで出力が決定される方式)なプロセスとして実行しましょう。
アプリケーションは1つもしくは複数のステートレスなプロセスとして実行され、状態共有を避けることで、水平スケーリングを容易に行えます。
Webアプリケーションは、バインドして公開しましょう。サービスとしてHTTPを公開し、リクエストを待つことが大切です。環境ごとのサービス設定は不要です。
ポートバインディングを通じてアプリケーションを公開し、依存するサービスとの明確なインターフェイスを保ちつつ、自己完結性を維持します。
スケールアウトして性能を上げるのも大切です。WebプロセスでHTTPリクエストを、バックグラウンドタスクをワーカープロセスで処理しましょう。
アプリケーションのプロセスモデルに基づいて複数インスタンスの実行を行い、負荷分散と耐障害性を向上させます。
廃棄容易性は、即座に起動したり終了したりできることを指します。これにより、デプロイを容易にして本番環境の堅牢性を高めます。可能であれば、起動コマンドから数秒でリクエストやジョブを受け取るようにしましょう。
高速な起動とグレースフルシャットダウンにより、アプリケーションの堅牢性を最大化し、迅速なデプロイと回復を実現します。
かつては、開発の環境と本番環境の間に大きなギャップがありました。ギャップは、以下のような領域に現れます。
時間
人材
ツール
継続してデプロイできるように、できるだけギャップを小さく抑えられるように注力しましょう。開発、ステージング、本番環境をできるだけ一致させることで、環境間の差異を最小化し、予期せぬエラーを回避します。
ログは出力先やストレージに関係しません。アプリケーションはログファイルで管理したり、書き込みを行ったりするといったようにバッファーせず、書き出しツールで集約しましょう。ログをイベントストリームとして扱い、構造化と集約を行うことで、監視と分析の効率を高められます。
管理タスクは、1度のプロセスに集約されます。アプリコードと一緒に、管理コードもデプロイしてください。管理タスクを1回限りのプロセスとして実行することで、バッチ処理や一時的な管理タスクを効果的に管理し、システムの整合性とメンテナンスを確保できます。
これらの12の要素は、The Twelve-Factor Appの方法論に基づいており、モダンなクラウドプラットフォーム上でのデプロイ、スケールアップ、継続的な開発をサポートしています。ベストプラクティスを遵守することで、柔軟で効率的なアプリケーション開発が可能です。


多岐に渡る機能や利用シーンがあるため、以下のリストで代表的なSaaSを紹介します。
Zoom
Slack
freee
Midjourney
kintone
ビデオ会議とオンラインミーティングプラットフォームとして多くのユーザーがZoomを利用しています。Zoomは、他の人とリモートで接続するためのツールで、ビデオ通話、音声通話、画面共有、バーチャル背景などの多岐にわたる機能を提供しています。
これによって、コミュニケーションを効果的に行うことが可能です。Zoomはリモートワークの効率化と人々のつながりを強化する重要な役割を果たしています。
ビジネスコミュニケーションプラットフォームのSlackは、チームがリアルタイムでコラボレーションやコミュニケーションを行う場として不可欠です。
インスタントメッセージング、ファイル共有、音声通話、ビデオ通話などの機能を提供し、チーム内の情報共有をスムーズにします。Slackはビジネスプロジェクトの管理とコミュニケーションの円滑化に寄与しているサービスです。
freeeは中小企業向けのクラウド型会計ソフトウェアとして知られ、帳簿記録、請求書作成、給与管理などの機能を持っています。
これらの機能は、会計業務の自動化と効率化に直結し、多くの企業にとって価値あるツールとなっています。freeeは中小企業の経営効率を向上させるために役立つでしょう。
Midjourneyは、テキスト記述から画像を生成できる革新的なAIプログラムです。無料利用枠を提供していましたが、現在は有料利用枠のみの提供となります。
このツールによって、視覚表現の新しい方法を開拓し、クリエイティブ業界における新しい波を創出しています。Midjourneyは画像生成の分野での画期的なサービスと言えるでしょう。
サイボウズによって開発されたkintoneは、クラウド型ビジネスプロセス管理プラットフォームで、プログラミング知識がなくてもカスタムビジネスアプリケーションを作成できます。
プロジェクト管理、顧客関係管理、ワークフロー自動化などの機能で、ビジネスプロセスのカスタマイズと効率化を支援します。kintoneは企業の業務改善とプロセス管理における欠かせないソリューションとなっています。
【関連記事】SaaSの代表例をシステム開発のプロがまとめてみた

システム開発を依頼する際は、一般的に以下のような流れで進めます。
要件定義
内部設計
プログラミング
リリース
まず、自社の要望をまとめた要件定義からはじめましょう。SaaS開発によりシステムを構築してどんな課題を解決したいかを明確化するのが大切です。
次に、システム内部に特化した項目を決定して内部設計を進めます。必要な情報を整理して実現しやすいように準備しましょう。
内部設計ができたら、それに沿って必要な機能から外観までトータルでプログラミングを進めます。
プログラミングの段階では、依頼した開発会社との連携が重要です。完了したらテストで正常に作動するかチェックします。意図や目的に合った動作をするか確認する受入テストにも問題なければ、リリースします。
リリース後は外部会社と契約して、メンテナンスや保守・改修をしましょう。以上が、SaaS開発の大まかな流れです。
【関連記事】【保存版】システム開発とは?エンジニアが依頼の流れや費用感を解説

自社でSaaSの開発を進める際は、最適な開発体制を整える必要があります。ユーザーが使いやすいサービスを提供できるように、最適化しましょう。
SaaSの開発体制では、市場や顧客の変化に合わせてスケジュール調整や運用・改善が求められます。その際、KPI(重要業績評価指標)と目標を設定して、計画を立てるようにしてください。
また、円滑に進めるために開発体制を機能別にすると効率化できます。ただし、課題も生じるため、部署ごとに連携を取りながら進めるようにしましょう。
開発体制の実例として、以下のような3つの事例があります。
マーケティング活動の設計図である「パーセプションフロー・モデル」
Sansan株式会社が変化を拒まず実施した3度の組織体制変更
CS(カスタマーサクセスの社員)がPM(プロダクトマネージャー)を兼ねる株式会社hokanのプロダクト開発
それぞれの会社によって、適した開発工程は異なります。ノウハウや事例を参考にして、自社に合った開発体制を検討しましょう。
【関連記事】SaaSの開発体制・組織図の考え方をまとめてみた

SaaS開発の注意点は、下記の4つが挙げられます。
顧客ニーズや解決すべき課題を明確にする
PMFを達成することを営業・マーケティングより優先する
KPIを設定する
KPIをトラッキングする仕組みの導入を考える
顧客ニーズを正確に把握し、それに応える製品を提供することは、成功への第一歩と言えるでしょう。この結論は、製品開発の方針を決定する際に、顧客が何を求めているのかを理解する重要性から来ています。
たとえば、既存の問題を解決する新機能の追加や、ユーザビリティの改善などが挙げられます。全体として、顧客ニーズを明確にすることで、市場への適合性を高め、製品の改善に役立てられるのです。
PMF(Product Market Fit)は、顧客の課題を満足させる製品を提供し、それが市場に受け入れられている状態のことを指します。この達成は、製品が市場に受け入れられる可能性を高めるため、極めて重要です。
顧客のフィードバックを取り入れて製品を改良することで、市場との一体感を高められます。これによって、営業やマーケティングよりも優先されるべき重要なプロセスとなるのです。
ビジネスの進展を測定するために、KPI(Key Performance Indicator)の設定は欠かせません。この設定によって、ビジネスの進捗状況を明確に把握し、必要な改善策を実施できます。
月間の新規顧客数や顧客満足度などの指標を設定することで、目標に対する進捗を一目で理解できるでしょう。KPIの明確な設定がビジネスの方向性を保ち、成長を促進できるはずです。
KPIを効果的に利用するためには、そのトラッキングする仕組みの導入が必須となります。これにより、ビジネスの進捗状況をリアルタイムで把握し、必要に応じて柔軟に改善策を講じられます。
ダッシュボードを用いて各KPIを可視化し、即座にアクションを起こせる体制を築くといったことが挙げられます。この取り組みによって、ビジネスの成長と継続的な改善が促進されるでしょう。

SaaSの開発工程に関するよくある質問を、3つ紹介します。
SaaSの開発言語は?
SaaS開発の工程で使われる略称は?
ソフトウェアとSaaSの違いは?
SaaS開発に用いる開発言語は、自社の既存システムと連携可能なものや共存できるものを念頭に置いて選択しましょう。さらに、エンジニアのリソースも加味して検討することが大切です。
開発言語は、主に以下のようなものがあります。
開発言語 | 概要 |
|---|---|
Ruby | 日本で開発されたオブジェクト指向のプログラミング言語 |
PHP | ホームページやWebアプリなどに使われる言語 |
Python | オランダで開発されたオブジェクト指向のプログラミング言語短い記述で多くの処理が詰め込める |
JavaScript | 全ての主要なブラウザに対応主に閲覧や操作に関連する部分の開発に使われる |
Java | JVMを導入していないOSでは使用不可実行速度が早い |
TypeScript | 互換性が高い大人数のプロジェクトに適している |
【関連記事】SaaSの開発言語について各種サービスを含めてまとめてみた
SaaS開発の工程で使われる略称を、以下の表にまとめました。
工程 | 略語 | 英語表記 |
|---|---|---|
基本設計 | BD | Basic Design |
コーディング | CD | Coding |
詳細設計 | DD | Detail Design |
外部設計 | ED | External Design |
機能設計 | FD | Function Design |
内部設計 | ID | Internal Design |
結合テスト | IT | Integration Test |
運用テスト | OT | Operations Test |
プログラム設計 | PD / PS | Program Design /Program Structure Design |
プログラミング | PG | Program / Programing |
プログラム(構造)設計 | PS / PD | Program Structure Design |
総合テスト | PT | Product Test |
要件定義 | RD | Requirement Definition |
要求分析 | SA | System Architectural design /System Analysis /System Analyze |
システム企画 | SP | System Planning |
構造設計 | SS | System Structure Design |
システムテスト | ST | System Test |
UI基本設計 | UI | User Interface |
単体テスト | UT | Unit Test |
ソフトウェアとSaaSの大きな違いは、どこで実行されているかと、それにアクセスする方法です。
ソフトウェアは、コンピューター上で動作するプログラムを指します。昔から、ソフトウェアを利用する際には、ソフトウェアのパッケージを手に入れ、それを自分のコンピューターにインストールし、操作する方法が一般的でした。この方式は、ローカル環境でソフトウェアを動かすための方法です。
SaaS(Software as a Service)は、「サービスとしてのソフトウェア」の略で、クラウドサービスとして提供されるソフトウェアのことです。
SaaSでは、ソフトウェアの中核部分はプロバイダーのサーバーコンピューター上で実行され、利用者はネットワークを介してその機能を遠隔から利用します。ユーザーは、簡易なクライアントソフトを使って、必要な機能をクラウド上のソフトウェアから利用します。
つまり、ソフトウェアは従来の方法でインストールして使うのに対し、SaaSはクラウド上で実行されるため、インターネット経由でアクセスして利用するという違いがあるわけです。
【関連記事】SaaS・PaaS・IaaSの違いは?具体例までプロが解説
SaaS開発には、要件定義、内部設計、プログラミング、リリースの4つの工程があります。また、製品開発にあたり、顧客ニーズを明確に把握し、PMFの達成を優先することが重要です。
KPIを設定し、リアルタイムでトラッキングする仕組みを導入することで、ビジネスの進捗を把握し、成長を促進できます。外注先を選ぶ際には、数多くのSaaS開発に携わってきた制作会社への依頼がおすすめです。
当社では、様々な企業様のSaaS開発を手がけており、信頼性の高いサービスを提供しています。SaaS開発に取り組む際には、ぜひご相談ください。
この記事に関連するお役立ち資料を無料ダウンロード

AIを活用した業務自動化 事例BOOK
AI技術を活用した社内業務効率化の基本から、実際の導入ステップまでをわかりやすく解説しています。
下記フォームにご記入下さい。(30秒)
テックユニットは、下記のような方におすすめできるサービスです。
お気軽にご相談ください。
・開発リソースの確保に困っている方
・企業の新規事業ご担当者様
・保守運用を移管したい方
・開発の引き継ぎを依頼したい方


おすすめの記事
関連する記事はこちら
優秀なエンジニアの見極め方がわかる!採用面接で聞くべき質問例15選
優秀なエンジニアを見極めるのは、企業にとって大きな課題です。人材不足が深刻化する中、優秀な人材を見逃すわけにはいきません。優秀なエンジニアを見極めるのが難しい採用面接でどのような質問をすべきかわからない採用後のミスマッチを避けたいなどは、多...
エンジニア面接の技術質問で優秀なエンジニアを見極める方法
多くの企業が抱える課題の1つに、優秀なエンジニアの採用があります。優秀なエンジニアを見つけるのは簡単ではありません。履歴書やポートフォリオだけでは、実際の技術力や問題解決能力、コミュニケーション力などを把握するのは難しいのが現状です。そのた...
どちらが上?AWSとAzureの性能・特徴の違いを徹底比較
「AWSとAzureの性能はどちらが上なのか知りたい」とお考えではないでしょうか。クラウドサービスは、物理的なインフラを自社で設置・管理する必要がなくなり、導入コストや運用負担を削減できます。その一方で、どのクラウドサービスを選べばいいのか...
AWSのCDN「Amazon CloudFront」とは?メリットやユースケースを紹介
CDNとはどのようなものなのかAWSのCDNであるAmazon CloudFrontにはどのような特徴があるのかAmazon CloudFrontを利用するメリットは何かAmazon CloudFrontの利用方法は?このような疑問を持って...
開発生産性とは?高める理由や注意点、フレームワークを解説
開発現場では、生産性の向上が喫緊の課題となっている開発リソースの有効活用や、スピーディーな製品リリースが求められている開発コストの削減や、人材不足への対応も重要な課題とお悩みではないでしょうか。開発現場では、常に効率化を意識しながら、限られ...
エンハンス開発とは?仕事内容や業務を円滑に進めるためのポイントを解説
「エンハンス開発って何?」「仕事内容は?」「円滑に進めるためのポイントは?」と気になりお調べですね。また、エンハンス開発の概要や新規開発との違い、またその使い方については、なかなか明確に理解できていない方も多いのではないでしょうか。そこで、...
エンジニアの外注費の相場は?見極めるポイントと費用を抑える3つのコツ
「エンジニアの確保が追いついていない」「予算の制約に悩んでいる」というお悩みはありませんか?新しいプロジェクトが増加する一方で、社内のエンジニアの採用やトレーニングが追いついていない。そのギャップを埋めるために、外注を検討している企業も少な...
増加続く…派遣エンジニアの単価相場は?推移と過剰なコストを避ける方法
「予算内で最大限の成果を得たい」「過剰なコストを避けて利益を最大化したい」とお考えではないでしょうか。近年、IT業界では人材不足が深刻化しており、企業はエンジニアの確保に苦戦しています。一方で、エンジニアの単価は上昇傾向にあり、採用コストの...
給与以上の理由でエンジニアが辞める - 10の理由と改善ポイント
「優秀なエンジニアが次々と辞めていく」という悩みはありませんか?優秀なエンジニアの確保は、企業にとって大きな課題です。実際にエンジニアの離職は意外に多く、優秀な人材の確保と定着が難しくなっています。このエンジニアが辞める理由は給与以外にも様...
AWSのCloud9とは?できることやメリット・デメリットについて解説
開発環境としてのAWSのCloud9について、その魅力とともに注意点も含めて詳しく知りたいという方も多いのではないでしょうか。AWSのCloud9は、低コストでチームで開発を行いたい、新規事業としてなるべく低予算で開発したいという場合に重宝...
業務システムとは?大別や種類、メリットとデメリットをプロが解説
企業の成長を支えるために、効率的な業務システムの導入を検討することはしばしばあります。しかし、どのように始めれば良いのか、どのシステムが最適なのか、悩むことも多いでしょう。また、業務システムの自作には多くのメリットがありますが、同時に注意す...
システム保守とは?業務内容やメリット・デメリット、費用相場まで解説
「システム保守運用の費用が高すぎるのでは?」と感じたことはありませんか?システムの安定運用は企業の業務効率やセキュリティに直結するため、適切な保守運用が欠かせません。しかし、具体的な費用相場や業務内容を知らないままでは、適切な判断が難しいは...
人気記事ランキング
おすすめ記事