アジャイル開発についてまとめてみようと思ったのは、今自分が携わっている案件がアジャイル開発かなのかどうかが分からなくなったからです。
しかし、どうもアジャイル開発(スクラム開発)に似ているところがあるので、自分の携わっている現場がアジャイル開発なのか、それとも、完全にアジャイル開発に近いものなのかを検討してみようと思いました。
現場の状況
ざっとまとめてみると、 ○スクラムマスターみたいな人はいない ○プロダクトオーナーみたいな人はいる ○コードレビュー等はなく、問題があれば対処する(最初の方はフロントエンド、バックエンドそれぞれのチームでコードレビューの時間があったが、自然となくなったので、コーディング規約に反してない限り、問題にはならない。) ○定期的にそのプロダクトオーナーみたいな人とMTGをして、作成したものが作りたいものから逸れていないかどうかをチェックすることはある ○タスク1つについて、1~2週間程度の作業期間がある ○作業内容がリリースされたのちに、振り返る時間とかはない ○朝と夕方に進捗報告がある ○Redmineで作業内容はまとめられているこんな感じです。
アジャイル開発とは
実装したい機能やシステムを短期間で区切って開発する方法のことです。開発を行っていると、
○作りたいものが変わった
○急遽必要な機能が増えた
○実際にリリースしたけど、ユーザからクレームが増えたため、リリース前の状態に戻す
など予想できないことが起こることがあります。
そういった要所要所で発生する問題に対応しながら開発を勧めることができるのがこのアジャイル開発のメリットです。
アジャイル開発の流れ
アジャイル開発は主に ○システムをリリースするまでの計画 ○「計画→設計→実装→テスト」の繰り返し(これをイテレーションといいます) の2つに分けられます。アジャイル開発には種類がある
そして、アジャイル開発には種類があり、 ○スクラム ○エクストリーム・プログラミング(XP) ○ユーザー機能駆動開発(FDD) の3つのいずれかに分けられます。スクラム
チーム内で密にコミュニケーションを取りつつ開発を行っていく手法です。○分からないいことがあればミーティングする
○新しく実装する機能について意見を出し合う
などコミュニケーションが大切になります。
ラグビーの「スクラム」が由来だそうです。
エクストリーム・プログラミング(XP)
仕様変更等が生じた際に、柔軟に対応しつつ開発を行っていく手法です。仕様変更が起こりやすい顧客の案件を取り扱うときに効きます。
ユーザー機能駆動開発(FDD)
ユーザの求めるものを優先的に重視して開発を行っていく手法です。アジャイル開発に関する用語
スクラムマスター
スクラム開発の進め方を管理する役割の人。プロダクトオーナー
システムや機能含むプロダクトの決定権を持ちつつ、最高責任者の人。チーム
スクラム開発を行っていくメンバーの集まり。スプリント
1つの開発・実装における期間のこと。 大体1~2週間で組まれるのが主。プロダクト・バックログ
機能やユーザーからの要望、技術的な改善要素を優先順位付きでまとめたリスト。 Redmineなどでこれを作成できる。スプリント・バックログ
1つのスプリント間で行うタスクのこと。 このスプリント・バックログは、1スプリント内のタスクを消化できるかどうかを検証したりする。デイリースクラム
チーム内で情報を共有すること。 主に、 ・昨日やったこと ・今日やること ・つまずいていること などを共有する。タスクボード
俗に言うTo doリスト。 ○これからやること ○現在やっていること ○終わったこと を視覚化するのに丁度いい。Trelloとかでこれが作れる。
結論
そこそこ簡単に調べてみたところ、完璧ではないが、スクラム開発には近いように感じました。自分の現在携わってる環境と照らし合わせ見てたところ、何個か当てはまるところがあるので、ニアリーイコールスクラム開発という結論としましょう。笑
参考にした記事や動画
https://www.youtube.com/watch?v=mCR09b0B6D8