アジャイル開発って何だ
アジャイル開発とは
対話と協調をして、
変化に対応できる開発体制を整え、
価値のあるもの(動くソフトウェア)を作ろうという考え方。
具体的な開発手法ではなく何に価値を置くか。
具体的に重視する価値は以下
- プロセスやツール よりも 個人と対話
- 包括的なドキュメント よりも 動くソフトウェア
- 契約交渉 よりも 顧客との協調
- 計画に従うこと よりも 変化への対応
考え方ってなると若干宗教っぽい🤔
アジャイルの源流
なぜ↑アジャイル開発とは
なのかについて
アジャイルソフトウェア開発宣言という2001年に、アジャイルソフトウェア開発手法の分野において名声のある17人が提唱する重要な部分を統合した文書で以下のように書かれている。
アジャイルソフトウェア開発宣言
私たちは、ソフトウェア開発の実践あるいは実践を手助けをする活動を通じて、よりよい開発方法を見つけだそうとしている。
この活動を通して、私たちは以下の価値に至った。プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、価値とする。すなわち、左記のことがらに価値があることを認めながらも、私たちは右記のことがらにより価値をおく。
アジャイル宣言の背後にある原則
私たちは以下の原則に従う:
顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供します。要求の変更はたとえ開発の後期であっても歓迎します。
変化を味方につけることによって、お客様の競争力を引き上げます。動くソフトウェアを、2-3週間から2-3ヶ月というできるだけ短い時間間隔でリリースします。
ビジネス側の人と開発者は、プロジェクトを通して日々一緒に働かなければなりません。
意欲に満ちた人々を集めてプロジェクトを構成します。
環境と支援を与え仕事が無事終わるまで彼らを信頼します。情報を伝えるもっとも効率的で効果的な方法はフェイス・トゥ・フェイスで話をすることです。
動くソフトウェアこそが進捗の最も重要な尺度です。
アジャイル・プロセスは持続可能な開発を促進します。
一定のペースを継続的に維持できるようにしなければなりません。技術的卓越性と優れた設計に対する不断の注意が機敏さを高めます。
シンプルさ(ムダなく作れる量を最大限にすること)が本質です。
最良のアーキテクチャ・要求・設計は、自己組織的なチームから生み出されます。
チームがもっと効率を高めることができるかを定期的に振り返り、それに基づいて自分たちのやり方を最適に調整します。
具体的な取り組み
この価値を重視し開発を行う上での具体的な取り組みを書きたい。
プロセスやツール < 個人と対話
スクラムで言う所の、スプリントプランニングやデイリースクラムやバックログリファインメントなど。
包括的なドキュメント < 動くソフトウェア
ドキュメントを作らないことではなく、何をすることで価値を提供できるのかということ。
基本的には動くソフトウェアが一番価値を届けるはずなので 包括的なドキュメント < 動くソフトウェア
なっている。
ドキュメントがあることで今後の開発効率が上がったり、ユーザーにとって価値を届けられるのであればドキュメントを作るべきだと思う。
契約交渉 < 顧客との協調
前述と同じ考え方の話だと思うので割愛
計画に従うこと < 変化への対応
変化(問題)に対応できる開発体制を作ること。
- バージョン管理
- テスト自動化
- 継続的インテグレーション
問題に対応する点で言うとスプリントレトロスペクティブなどの振り返りになる。
アジャイル開発の手法
- スクラム
- エクストリーム・プログラミング(XP)
- ユーザー機能駆動開発(FDD)
※ 具体的な手法については省略
参考
1つ目が一番アジャイルの本質や具体的な手法の取り込み方を説明していると思う。
- アジャイルとは何か? ツールと開発手法「スクラム/XP」、ウォーターフォールとの違い
- アジャイルとは何か?今あらためて誤魔化さずに実践的に説明してみる
- アジャイル開発とは?今さら聞けない開発手法のメリット・デメリット
最後に
このアジャイルについての認識・価値観が揃えばチームとしての生産性が上がると思う。
生産性の高い開発チームにしていきたい。