開発手法と管理ツール


目的

開発手法と管理ツールの概要を把握する事
代表的な開発を言語化し定着させる事

アジャイル開発

一度にまとめてではなく少しづつ確認しながら開発を進めていく事が特徴。利用者の反応や関係者からのレビューを得ながら計画を調整しつつ進めていく。
メリット
 手直しが容易で修正が仕様変更に対応可能
デメリット
 進捗が分かりにくい

 進捗が分かりにくいという特徴があるので「スクラム」を導入する事がある。
スクラム
 「開発を進めるチームの単位」リーダー、マネージャー主体ではなくテーム全体が主体性を持ち責任を持つ事が特徴。
・プロダクトオーナー
 リリースするプロダクトの責任を持つ。開発の順序やスケジュールを考えプロダクトの価値が最大化するように様々な決断をする役割。
・スクラムマスター
 人間関係に起因する妨害を排除し、スクラムを円滑に回すための世話役を務める。
・開発チームメンバー
 開発チームメンバーに上下関係はなく開発の進め方はメンバー間で開発します。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
アジャイル型開発で最終的な用件がはっきりしていないプロジェクト
まずは最小限でリリースし、プロダクトの使い勝手を見ながら残りの詳細を詰めていくようなプロジェクトにはアジャイル型開発が向いている。「この機能だけは絶対欲しい、一方でそれ以外の機能は実際に使ってみながらじゃないと必要かどうか分からない。」といった開発プロジェクトに置いて用いる事ができる。
顧客ビジネスの状況によって開発の優先度が変わる可能性のあるプロジェクト
アジャイルでは1~4週間が一つのサイクルです。そのサイクル内で完成したものを顧客やユーザーに届ける事ができます。詳細まで時間をかけて作り込まず、実際に作ってみてから改善点を探していくことで、スピーディーに開発を続ける事ができる。

ウォーターフォール型開発

初めに決めた用件をある期限までに完了する手法。
契約→開発→納品というフローに則ったシンプルなもの。
メリット
開発計画がシンプルで進捗管理がしやすい。
デメリット
仕様変更に対応しにくい
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
大規模システム開発プロジェクト
大型システムの開発のように多くのエンジニアが関わるプロジェクトにおいて明確に役割分担を行う必要がある際にウォーターフォール型開発が有効です。携わる人々の役割と期間を明確に決める事で、大規模でもスケジュール管理がしやすい。ただし、開発途中で仕様変更などが発生しない事を前提とするので綿密な計画が必要。
ユーザーの用件が明確に決まっているプロジェクト
明確に欲しい用件が決まっている際には、仕様通りに開発を進められるのでウォーターフォール型開発が有効です。役割を明確に決めることで、最短効率で開発を行う事ができる。

プログラムの管理

サービスの開発を進める場合様々な管理が必要です。例えばコードレビューやテストの実行そして開発した機能をデプロイ。少人数で開発すれば、これらを人が手動で管理することは容易です。しかしながら、開発に携わる人数が増えるとそれらの管理を綿密に行うことは難しくなります。管理する労力がかかり、見落としや作業忘れが発生するからです。
それらを避けるためになるべく人が介在する余地を減らし、自動化する必要がある。
Sider
コードレビューを自動で行ってくれる。特にインデントなどのコードの体裁や開発者自身が設定した、ルールに反していないかを自動で判断してくれる。
CicleCI
追加、変更されたアプリケーションのテスト、テストが完了して問題が無かったコードのデプロイを、自動で実行するクラウドサービスです。
CI/CD
CIは「Continuous Integration」の略で継続的インテグレーションという意味です。開発したコードのテストを定期的に自動で実行することです。
CDは「Continuous Delivery」の略で継続的デリバリーという意味です。書いたコードを自動で本番環境にデプロイできる状態に整えることです。
CI/CDを導入することで、「変更したコードは自動でチェック、問題がなければ自動でデプロイ」が実現し、人的負担を少なくすることができます。