こんにちは、やなっぎです。
アーリーステージからメガベンチャーまでWebエンジニアとして10年以上活動しています。
Webアプリケーションってどうやって作っているんだろう?
ウォーターフォール開発やアジャイル開発に関わらず、ソフトウェアの開発プロセスには一般的な流れがあります。
今回は、Webサービスの開発プロセスについて解説します。開発プロセスを知ることで、Webエンジニアになった時の働き方をより具体的にイメージできます。
エンジニアの働き方の理解やポートフォリオ作成など応用がききやすいので、ソフトウェアの開発プロセスはぜひ押さえておこう
Webサービスの開発プロセス
ソフトウェアもWebサービス、組み込みソフトウェア、AIなど作るものによって開発プロセスは若干異なります。
ここでは、よくあるWebサービスのソフトウェア開発プロセスについて説明していきます。
Webサービスの立ち上げ、新機能、バグ対応などの開発プロセスは次のとおりです。
- 要件定義
- 設計
- 実装
- テスト
- デプロイ
- 保守・運用
①:要件定義
要件定義は、ソフトウェア開発の最初のステップです。
新機能や機能改修の企画から、ソフトウェアが実現する要件を具体的にします。
Web系企業の場合、プロダクトマネージャーといった職種の人が、デザイナーやエンジニアのサポートを受けながら、要件定義を進めることが多いよ
要件定義では、ソフトウェアを使う顧客やソフトウェアに関連するステークホルダーと協力して、ニーズの理解やシステム活用状況を把握します。
そして、機能要件と非機能要件を洗い出して文書にまとめていきます。
機能要件は、機能や画面といった「利用者に対してソフトウェアがどう動くのか」を決めます。
非機能要件は、パフォーマンス、セキュリティ、可用性、運用・保守性などといった機能要件以外のシステムとして備えておくべき部分を決めていきます。
②:設計
要件が定義できたら、設計に移ります。ここからはエンジニアが中心になって進めていきます。
設計は、要件定義で明確にした機能要件と非機能要件を、ソフトウェアでどうやって実現するかを考えます。
Webサービスの場合は、システム全体のアーキテクチャ、画面設計、API設計、テーブル設計といったことを考えることが多いです。
どういった設計で実現するかは腕の見せ所で楽しいところだよ!
③:実装
実装フェイズでは、設計に基づいてコードを書いていくことで、ソフトウェアの機能や非機能を実現していきます。
コードを書くときには、プログラミング言語の知識だけでなく、フレームワークやライブラリの知識が必要です。
また、ただ動くだけでなく、継続的に開発を進めていくためにコードの品質や可読性といったことも気にして実装していく必要があります。
設計や実装などで他の人にレビューしてもらいながら作っていくんだよ
④:テスト
テストフェイズでは、ソフトウェアが要件を満たしているか確認していきます。
エンジニアがテストをする場合もあれば、QAエンジニアというテストを専門とする人にお任せする場合もあります。
テストは、ユニットテスト、結合テスト、システムテストと細かな粒度から大きな粒度でソフトウェアをテストしていきます。
- ユニットテストでは、コードの断片が期待通りに動くかをテストする
- 結合テストでは、コードの断片を組み合わせて期待通りに動くかをテストする
- システムテストでは、利用者目線で実際にシステムを操作してテストする
他にも、テストには、パフォーマンステスト、負荷テスト、ペテトレーションテスト、モンキーテストなど目的に応じてさまざまなテスト手法があります。
テストも奥が深い領域なので、書籍などで網羅的に学んでおくと良いよ
⑤:デプロイ
テストが完了して要件を満たせていることが確認できたらデプロイに進みます。
デプロイフェイズでは、ソフトウェアを本番環境に展開して、ユーザーが実際に機能を使えるようにします。
デプロイは自動化されていることが多いけど、デプロイの中身を知るとインフラやアプリケーション知識がぐんとつくよ
⑥:保守・運用
保守・運用フェイズでは、ユーザーにシステムが安定的に利用されるように監視・運用していきます。
保守・運用はおざなりにされがちですが、Webサービスの保守・運用フェイズはとても大事です。
なぜなら、ユーザーにWebサービスを使って価値を感じてもらうことで、企業が売上や利益を得られるためです。
保守・運用では次のようなことをします。
- システムの稼働状況をモニタリングし、アラートが上がれば対応する
- バグが発生したら、重要度を切り分けて対応する
- ユーザーからのフィードバックを受けて改修する
- 技術の進化やバージョンアップを追随する
自分が作った機能のユーザーからの声はやりがいの1つになるよ
まとめ:Webサービスの開発プロセスは継続する
Webサービスの開発プロセスの大きな流れとしては、要件定義から保守・運用となっています。
- 要件定義
- 設計
- 実装
- テスト
- デプロイ
- 保守・運用
各フェイズを理解して、適切に実施することで、安定して高品質なソフトウェアを開発することができます。
また、新機能や改善をすることでサービス利用者を増やしていくために、開発プロセスは1度で終わりではなく、継続的に実施します。