20201019_アウトプット②(開発体制)

アプトプット画像

学んだこと 1時間

開発体制

アジャイル開発ってよく聞くけど何?と思ったため学んだ。

  • アジャイル型開発:一度にまとめてではなく、少しずつ確認を挟みながら開発を進めていく手法。

  • ウォーターフォール型開発:初めに決めた要件を、ある期限までに完了する手法。(要件定義が重要)

どんな時に向いているの?

アジャイル
  • まずは最小限でリリースして、プロダクトの使い勝手をみながら残りの詳細をつめていきたい。

  • この機能だけは絶対にほしい、一方でそれ以外の機能は実際に使ってみながらでないと必要かどうか判断できない。

という時におすすめ。
詳細まで時間をかけて作り込むのではなく、実際に作ってみてから改善点を探していくことで、よりスピーディに本質的な開発を続けることができる。


ウォーターフォール
  • 大型システムのように多くのエンジニアが関わるプロジェクトにおいて、明確に役割分担したい。

  • 開発途中で仕様変更などが発生しないことが前提で、 明確にほしい要件が決まっており、綿密な計画をあらかじめ立てられるとき。

という時におすすめ。 仕様通りに開発を粛々と進めれば良いため、役割が明確に決められることで最短効率で開発を進めることができる。

アジャイル開発におけるスクラムって?

  • アジャイル開発では、進捗が把握しづらいという特徴があるためスクラムを導入することがある。

  • スクラムとは開発を進めるチームの単位。

  • リーダー・マネージャー主体ではなく、チームメンバー全員が主体性を持ってプロダクト完成にむけた責任を持つ。

  • (機能を細かく)リリースするまでの期間を「スプリント」として(約1〜4週間)、隠すプリント毎にレビュー(振り返り)をする。

分担 役割と働き
プロダクトオーナー リリースするプロダクトの責任を背負う。そのために、開発順序やスケジュールを考えて、プロダクトの価値が最大化するように様々な決断をする。
スクラムマスター スクラムが上手くいくようにサポート。そのために、人間関係に起因する妨害を排除し、スクラムを円滑に回すための世話役を務める。
開発チームメンバー 計画に沿って開発を進める。そのために、開発の進め方はメンバー間で話し合う。特に日々の開発計画について責任を持ち、必要であれば計画変更の申し入れを行う。

おすすめの管理自動化ツール

Sider(サイダー)
  • コードレビューを自動で行ってくれるツール。

  • 特に、コードの体裁や、開発者自身が設定したルールに反してないか自動で判断。

  • ギットハブと公式に連携。(なので、ギットハブ上で駆動)

  • プルリクエストの上のコードに対してチェックを行う。

sider.review

blog-ja.sideci.com


CircleCI
  • 追加・変更されたアプリケーションのテスト、テストが完了して問題なかったコードのデプロイを自動で実行するクラウドサービス。

  • この「テストの自動化・デプロイの自動化」は、CD/CIという概念に基づいている。(Continuous Integration/Continuous Delivery)

  • その概念が重視されるようになった背景として、
    ①ソフトウェアが普及していくと品質に関する要求も高くなり、自動化テストの重要性の高まったこと
    ②今ではより多くのチームがアジャイル開発を取り入れており、スピーディーに開発をしたいため、いかに早くテストして、リリース後フィードバックを得られるかが成功の鍵となること
    が考えられる。

circleci.com



積み残し(復習したいこと)

  • Rails勉強会→50%
  • カラムの追加方法、ロールバック
  • Formオブジェクト(モデルの存在しないデータを更新)

    感想

  • プログラマーの方がよく言う「最小限でまずはリリースしてみて、改善していく」という方法自体が、「アジャイル開発」だったのね、と理解した。

  • テストの自動化・デプロイの自動化は便利だな。

  • 便利だけれども、頼るだけでなくって、その自動化はどう行われているのかも学んでいきたい。