はじめに
先日、プログラミングスクールの10週間のカリキュラムを終え卒業しました。
その中のRuby on Railsでの最終課題のフリマアプリ作成で、スクラムを用いたアジャイル開発を行い、GitHubを通じたチーム開発について学びました。
様々な困難があったので、記憶の新しいうちに書き残しておきます。
参考になる記事というよりは体験談になりますのでご了承ください。
アジャイル開発とは
概要
一度にまとめて開発を行うのではなく、スプリントと呼ばれる開発周期(今回は1週間)ごとに、その期間でやるべきことを決めて、終わりにレビューを得ながら少しずつ調整して進めていく開発手法です。
目的
アプリケーション開発の過程では、仕様変更が頻発します。その頻繁な変更に対応するために、細かく作って細かく確認をすることで柔軟な開発を行うことができます。
メリット・デメリット
・メリット: 手直しが容易で、仕様変更にも柔軟に対応できる。
・デメリット: 全体の進捗が把握しにくい
スクラムについて
概要
チーム開発を進めるための手法の一つです。
チームメンバー全員が主体性を持ってアプリケーション作成に対する責任を持って開発を進めていくことが特徴です。
進め方
大まかに分けると以下のようになります。
1.アプリケーションの要件定義
2.開発意図をメンバー全員が理解する
3.実装すべき要素を洗い出す
4.上記で洗い出した作業量を見積もる
5.スプリントごとに実装を行う
6.スプリントごとに行ったことを共有する
7.レビューを行いカイゼンに取り組む。
こういったフローを繰り返して開発を進めていきます。
実際に行ってみて
ここまでは概念的な話でしたので、
ここからは体験を通じて感じたことを書いていきます。
開発メンバーに関して
まず、スクールに通っている初学者同士がチームを組んでいるため、全員が学習開始から2ヶ月程度という状況でした。
よって、全員がしっかりとRailsについて理解できている。というわけではなく、細かいエラーやそもそものロジックが大きく間違っているという事も多くありました。それでも、最後まで作成できたのはチームメンバー同士の助け合いがあったからだと感じました。私自身は比較的理解が早い方でしたので、メンバーのサポートに回ることが多かったです。
「他の人のコードを読むことにより得るものは多い」とよく聞きますが、今回の開発で他の方のエラーを解消することによって、Railsの基本的なMVCモデルの動きへの理解がより深まったと感じております。例えば、ビューでエラーが起きているからそのビューファイルだけしか見ずに長く悩んでいるメンバーのコントローラーを見せてもらうと、そもそも変数が定義されていなかったり、ストロングパラメーターに変更したいカラムが入っていないと言ったことが何度かありました。
開発の流れについて
まず、開発のはじめにチームとしてのルールを設定します。
私たちのチームの場合は技術的な面よりもチームとしてのコミュニケーションを重視して、
・分からないことは15分考えたらチームメンバーに相談する
・1日3回の進捗報告には必ず参加する
・参考にした記事やサイトは共有する
・GitHubのコンフリクトの解消は1人では行わない
と言ったことを決めました。
あとは、先ほど書いた流れに沿って進んでいきます。
1週間を1つのスプリントとして、初めに洗い出した要素を細かく分けてメンバーに割り振ってスプリント内で各々が行うタスクとして設定します。そして終わりに、設定したタスクが終えられているか、ルールをしっかり守れていたかというレビューを行います。今回確認のスクールのメンターが行いました。
レビューが終わると、次のスプリントでのタスクの設定を行い、振り返りを元に新たなルールも設定します。
タスク管理はTrelloを用いました。
まとめ
細かい点はカリキュラムの漏洩になってしまうので触れられないため申し訳ありません。
チーム開発では、個人での開発とは大きく異なる点がたくさんあると実感させられました。
まだ実務に入ったことがない私がいうのもなんですが、チーム開発を学ぶことで、GitHubの使い方や新たなマインドも身につくので、何かしらの手段で経験することをお勧めします。
ここまで駄文を読んでいただきありがとうございました。