DX(デジタル・トランスフォーメーション)が叫ばれる昨今、DXを後押しする開発手法としてアジャイル開発が改めて注目を浴びている。
今回はアジャイル開発手法のひとつであるスクラム開発について、これから導入を検討している方向けに、メリットやデメリット、開発のポイントをわかりやすく解説していこう。
アジャイル開発とは
従来のウォーターフォール型の開発と異なり、設計・開発・テストの工程を短い期間で繰り返し、チームで課題の改善を行いながらプロダクトを完成させる開発手法である。
2001年、従来の開発方法とは異なる手法を実践していた17名のソフトウェア開発者によって「アジャイルソフトウェア開発宣言」が公開された。
17名の中には、TDD(テスト駆動開発)・XP(エクストリーム・プログラミング)で有名なケント・ベック、「達人プログラマー」の著書で有名なアンドリュー・ハントなどレジェンドの名が連なる。
その他、Scrum Inc.の創設者であるジェフ・サザーランド、氏と共にスクラムの提唱者であるケン・シュヴァーバーなどもおり、開発を行なううえで重要となる考えがアジャイルソフトウェア開発宣言には、まとめられている。
アジャイルソフトウェア開発宣言
私たちは、ソフトウェア開発の実践
あるいは実践を手助けをする活動を通じて、
よりよい開発方法を見つけだそうとしている。
この活動を通して、私たちは以下の価値に至った。
プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、
価値とする。すなわち、左記のことがらに価値があることを
認めながらも、私たちは右記のことがらにより価値をおく。
この宣言文にはソフトウェア開発を行うために必要なマインドセットについて書かれているが、その後、このマインドセットを支持するエンジニアたちによってアジャイルソフトウェア開発という名で広まっていった。
アジャイル開発について、より深く理解したい場合は下記を参考にするとよいだろう。
IPA「アジャイルソフトウェア開発宣言の読みとき方」(https://www.ipa.go.jp/files/000065601.pdf)
スクラム開発とは
アジャイル開発の手法として、XP(エクストリーム・プログラミング)やリーン開発などいくつかあるが、スクラム開発もそのうちのひとつである。
いずれの手法も、一定の短い期間で開発・テストを行い、それを何度も繰り返すという方法が基本であるが、スクラムで特徴的なものとしてはチームを構成する3つの役割、開発の進め方などがある。
開発の進め方を交えながら3つの役割を解説していこう。
チームを構成する3つの役割
1.プロダクトオーナー
開発チームにプロダクトの要求を出す役割である。
プロダクトオーナーはエンジニアである必要はなく、要求する機能を「プロダクトバックログ」と呼ぶリストにまとめ、スクラムマスターと相談しながら諸々の最終判断を行なう。
2.スクラムマスター
開発チームのリーダーで、プロダクトオーナーからのプロダクトバックログやその他の要求を整理・調整しながら開発チームに共有し、スプリントと呼ぶ一定期間の中でどのバックログをどこまで消化するかなどをコントロールする。
また、開発がスムーズかつ快適に進められるよう、メンバーとコミュニケーションを取りながら課題解決したり環境を整えたりなど、プロジェクト成功のためにあらゆることを行なう。
3.開発メンバー
プロダクトの開発やテストを行なう。
デイリースクラムと呼ばれる毎日の短いミーティングで課題や進捗を共有し、課題解決も同時並行で行いながら開発を進める。
アジャイルではメンバーが「他人事」ではなく「自分ごと」として動き、「自己組織化」していくことが重要成功要因のひとつである。
スクラム公式ガイドとして、常にアップデートされている下記も是非一読されたい。
「スクラム公式ガイド:ゲームのルール」(https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-Japanese.pdf)
スクラム開発のメリット
1.チームの自己組織化が進む
前項の通り、スクラム開発では、チームメンバーが各々主体性を持って進めることが大前提となる。そのため、自分ごととしてプロジェクトで動く文化のないチームであっても、スクラムを行なうことで自己組織化が進むというメリットがある。
2.チームが早いサイクルで学習する
プロジェクトでは、日々失敗や成功がある。スクラムではスプリント(短いタイムボックス)を繰り返すなかで、次のスプリントでより上手く行なうために失敗・成功要因をふりかえり、カイゼンを行なうチャンスがある。それがメンバーの学びに繋がり、チームの成長を促す。
3.従来の開発方法と比べ、デバッグコストが低い
ウォーターフォールではプロジェクトの後工程で大量のテストとバグ修正が発生する。構造を思い出したり、影響範囲を思い出したりなど、修正コストが高くつくことが多い。
スクラムではスプリントの中でテストを行い、バグ修正も済ませてしまうため、殆どは直近で開発したプログラムの修正となり、開発者もまだ記憶に新しく、修正コストが低く抑えられる。
スクラム開発のデメリット
1.アジャイル未経験のチームで行なうには発注者と周囲の理解、チームの努力が必要である。全員が初心者の場合、先導する人がいないため学習しながらのプロジェクト進行となる。
そのため、時間がかかったり、失敗したり、手まどうこともある。発注側や社内の人間は、それらを理解したうえでチームを見守り、時には手助けする必要がある。
2.スクラムマスターの力量次第でプロダクトバックログが肥大化する
スクラムマスターが「スクラムたるべく」プロダクトオーナーと調整しなければ、要求ばかりをバックログに積んでしまい、チームの能力以上の開発となり失敗してしまうケースがある。
よって、スキルの高いスクラムマスターが必要である。初心者だが失敗できないという場合は、社外のアジャイルコーチを付けるなども検討した方が良い。
スクラム開発のポイント
1.最初からスクラムの手法全てをやろうとしない
スクラムには様々なツールがあり、全部取り入れなければならないと考えてしまいがちであるがそうではない。
できるものから、取り入れられるものから徐々に行なうようにすれば、チームにも過度な負担がなく済むだろう。
2.最初はセオリーに従い、徐々にチームに合わせカスタムする
全て教科書どおりにする必要はない。一度セオリー通りに実施してみて、スプリントを重ねるなかでやりやすいようにチームに合わせて改善していけば良い。
以上アジャイル開発、スクラム開発について解説してきた。
最初は戸惑い、馴染めない部分もあるかもしれないが、スクラム開発はチームを成長させ、ビジネスを加速させる素晴らしい開発手法であることに間違いないだろう。