プログラミングの勉強を始めてある程度理解できて来ると、実際の開発現場ではどのような流れで開発作業を進めていくのか気になることはないでしょうか。
また、プログラミング以外の学習をどのように進めていくべきか悩んでいる方はいないでしょうか。
開発現場ではプログラミングだけでなく様々な作業があります。
本記事では、実際のシステム開発の流れをざっくりと解説し、その流れに沿った学習手順を紹介します。
プログラミングだけでなく、開発全体の流れを理解した上で学習を進めていくと、開発現場に加わった際にもスムースに業務を進めることができます。
そして、システム開発には幅広い知識が必要となりますので、学習を通して一連の流れを経験することで、即戦力となる技術を持つことができます。
一般的なシステム開発の流れ
自社サービス開発や受託開発などの種類によって異なる部分はありますが、大まかに下記の流れで進めていきます。
②アーキテクチャを決定し、設計する
③開発環境を構築する
④プログラミングを行う
⑤テストコードを作成し、単体テストを行う
⑥結合テスト環境を構築し、デプロイして結合テストを行う
⑦ステージング環境を構築し、デプロイしてシステムテストを行う
⑧本番環境を構築し、デプロイしてリリースする
⑨保守、運用を行う
①開発対象となる要件や機能を決定する
自社サービス開発であればサービスオーナーやプロダクトオーナーが中心となって、開発対象となるサービスや機能の要件を決めます。
②アーキテクチャを決定し、設計する
全体のインフラ構成やプログラムのアーキテクチャとして使用するフレームワークなどを決めます。
また、画面のデザインやデータベースに登録する情報の設計を行います。
③開発環境を構築する
開発に必要な環境を各自の端末に作ります。また、メンバーで共有して使うものがあれば、代表者が環境を構築します。
④プログラミングを行う
プログラミングを行い、開発を進めます。
どの単位でプログラミングを進めていくかは、開発手法やプロジェクトにより異なりますが、多くの場合は機能単位に設計・実装・テストを繰返していくことが多いです。
⑤テストコードを作成し、単体テストを行う
プログラミングしたソースコードをテストするためのテストコードを作成します。
このテストがすべて成功することで、プログラミングが完了となります。
⑥結合テスト環境を構築し、デプロイして結合テストを行う
チームで開発している場合は、たくさんのメンバーがそれぞれの機能を作っているため、それらを結合させたテストを実施する必要があります。
まずはテストを実施するための環境を作成します。
環境が出来上がったら、ソースコードを1つにまとめて配備し、プログラムを起動させます。
予めテスト内容を決めておき、作った環境に対してテストを実施します。結合テストでは主に、機能間の連携を行うテストを中心に実施します。
⑦ステージング環境を構築し、デプロイしてシステムテストを行う
リリースの一歩手前となるテストとしてシステムテストを実施します。
システムテストでは、性能に関するテストや環境に対するテスト、セキュリティに関するテストなど、非機能となるテストを中心に実施します。
システムテストは本番環境と同等の環境で行うことが望ましく、ステージング環境と呼んだりします。
⑧本番環境を構築し、デプロイしてリリースする
リリースする環境を本番環境、商用環境、プロダクション環境などと呼んだりします。
システムテストを実施した環境をもとに、本番環境を構築し、テストを実施したプログラムを配備します。
リリースする物によっては、既存のデータを移行したり、他のシステムと連携させたりなどの準備が必要なこともあります。
全ての作業が完了すると、ようやく利用者が使える状態としてリリースします。
⑨保守、運用を行う
プログラムは作って終わりではなく、リリースしてからがスタートとなります。
テストでは見つからなかった不具合があったり、利用者から機能追加の要望あったりするなど、常にメンテナンスを必要とします。
通常、プログラムを作る期間よりも保守、運用する期間の方が圧倒的な長くなります。
ですから、プログラミングは保守、運用しやすいように作ることが求められます。
以上が本当にざっくりではありますが、システム開発の流れとなります。
プログラミングの学習で取り入れて欲しいシステム開発の流れ
プログラミング初心者の方が、上記の実際の開発の流れに合うように学習するための手順を考えてみました。
②アーキテクチャを決定し、設計する
③開発環境を構築する
④プログラミングを行う
⑤テストコードを作成し、単体テストを行う
⑥環境を構築し、デプロイしてテストを行う
⑦リリースする
⑧プログラムを改善し、リリースを繰り返す
①学習のための開発対象を決定する
まずは開発対象を決定します。
自分が欲しいものでも良いですし、人から作って欲しいと頼まれたものがあれば実際の開発に近くて良いと良い思います。
他の人に頼まれた場合には、どんな機能が欲しいのかヒアリングを行います。
②アーキテクチャを決定し、設計する
開発対象を実現するために、どんな構成で出来るかを考えます。
なるべく学習しようとしている内容に合わせていくと良いと思います。
例えば、Ruby On Railsの学習をしようとしているのに、スマホアプリで実現するのは目的と一致しないので、Webアプリとして作成するなど、状況に応じて要件を変化させても良いと思います。
開発する言語やフレームワークなどを決定したら、画面イメージやどんな情報を入力、保存するのかを決めます。
また、外部サービスと連携させて情報を取得する必要があるのかなども決定します。
③開発環境を構築する
学習する言語やフレームワークに合ったIDEを導入したり、初期設定を行い、プログラミング可能な状態を作ります。
④プログラミングを行う
プログラミングを進めていきます。
作る順番に決まりはありませんが、なるべく機能単位に作り上げていくと、次のテストがしやすくなると思います。
⑤テストコードを作成し、単体テストを行う
すべてのテストコードを作成する必要はないと思いますが、いくつかピックアップしてテストコードを書いてみると勉強になります。
テストがやりづらい場合は、テスト対象となるプログラムをリファクリングしながらテストを進めていきます。
⑥環境を構築し、デプロイしてテストを行う
自分の端末とは異なる環境を可能であれば用意すると良いです。
無料のクラウドサービスなどを使ってみるのも良いかもしれません。
自端末とは違う環境を構築するのは、手順も違いますし、勉強になります。
また、プログラム一式を自端末以外の環境で動かすのも、違った手順になると思いますので、経験しておくと良いと思います。
実際に操作しながらテストを行って、問題ないことが確認できたら完成になります。
⑦リリースする
いよいよリリースとなります。
自分で使ってみたり、人に使ってもらえると改善点が見つかったり、不具合が見つかるかもしれません。
⑧プログラムを改善し、リリースを繰り返す
リリース後に出てきた改善点や要望を考慮しながら、プログラムを改良します。
出来上がったら、環境にデプロイして、テストを行い、再度リリースします。
誰かのために実際にシステムを作ってみることが重要
プログラミングの学習だけを進めていても、知識は得られても経験としては不足しています。
やはり実際に誰かに使ってもらってこそのシステムであり、その経験はただ学習するよりも遥かに多くのものを得ることができます。
今回は実際のシステム開発の流れから、プログラミング初心者が学んだ方がよい学習の流れを紹介しました。
もちろん開発現場では一人ですべてを行うわけではないですが、なるべく幅広い分野を経験しておけると、より知識も深まりやすくなると思います。
参考にしていただければ幸いです。
コメント