20201019_アウトプット②(開発体制)
学んだこと 1時間
開発体制
アジャイル開発ってよく聞くけど何?と思ったため学んだ。
どんな時に向いているの?
アジャイル型
まずは最小限でリリースして、プロダクトの使い勝手をみながら残りの詳細をつめていきたい。
この機能だけは絶対にほしい、一方でそれ以外の機能は実際に使ってみながらでないと必要かどうか判断できない。
という時におすすめ。
詳細まで時間をかけて作り込むのではなく、実際に作ってみてから改善点を探していくことで、よりスピーディに本質的な開発を続けることができる。
ウォーターフォール型
大型システムのように多くのエンジニアが関わるプロジェクトにおいて、明確に役割分担したい。
開発途中で仕様変更などが発生しないことが前提で、 明確にほしい要件が決まっており、綿密な計画をあらかじめ立てられるとき。
という時におすすめ。 仕様通りに開発を粛々と進めれば良いため、役割が明確に決められることで最短効率で開発を進めることができる。
アジャイル開発におけるスクラムって?
スクラムとは開発を進めるチームの単位。
リーダー・マネージャー主体ではなく、チームメンバー全員が主体性を持ってプロダクト完成にむけた責任を持つ。
(機能を細かく)リリースするまでの期間を「スプリント」として(約1〜4週間)、隠すプリント毎にレビュー(振り返り)をする。
分担 | 役割と働き |
---|---|
プロダクトオーナー | リリースするプロダクトの責任を背負う。そのために、開発順序やスケジュールを考えて、プロダクトの価値が最大化するように様々な決断をする。 |
スクラムマスター | スクラムが上手くいくようにサポート。そのために、人間関係に起因する妨害を排除し、スクラムを円滑に回すための世話役を務める。 |
開発チームメンバー | 計画に沿って開発を進める。そのために、開発の進め方はメンバー間で話し合う。特に日々の開発計画について責任を持ち、必要であれば計画変更の申し入れを行う。 |
おすすめの管理自動化ツール
Sider(サイダー)
コードレビューを自動で行ってくれるツール。
特に、コードの体裁や、開発者自身が設定したルールに反してないか自動で判断。
ギットハブと公式に連携。(なので、ギットハブ上で駆動)
プルリクエストの上のコードに対してチェックを行う。
CircleCI
追加・変更されたアプリケーションのテスト、テストが完了して問題なかったコードのデプロイを自動で実行するクラウドサービス。
この「テストの自動化・デプロイの自動化」は、CD/CIという概念に基づいている。(Continuous Integration/Continuous Delivery)
その概念が重視されるようになった背景として、
①ソフトウェアが普及していくと品質に関する要求も高くなり、自動化テストの重要性の高まったこと
②今ではより多くのチームがアジャイル開発を取り入れており、スピーディーに開発をしたいため、いかに早くテストして、リリース後フィードバックを得られるかが成功の鍵となること
が考えられる。