NFLabs. エンジニアブログ

セキュリティやソフトウェア開発に関する情報を発信する技術者向けのブログです。

アジャイル開発って何だろう? ~組織内アジャイルコミュニティと活動内容の紹介~

はじめに

こんにちは。NFLabs. DevOps Teamの香川です。この記事はNFLabs.アドベントカレンダー2021の7日目です。

我々の組織内にはいくつかスクラムチームが存在し、それぞれで開発を行っています。そんな中、チームを横断した組織として有志によって立ち上げられた「アジャイルコミュニティ」という組織があります。

本記事ではアジャイルコミュニティの紹介と、コミュニティ内でディスカッションした「アジャイル開発って何だろう?」について書いていきたいと思います。

アジャイルコミュニティとは

アジャイルコミュニティは以下の3点を目的に立ち上げられました。

我々の組織では、スクラムを取り入れて活動を行っているものの、アジャイル開発の経験があるメンバーは多くありませんでした。そのため、「なんとなくスクラムをやってる」といったチームも多かったように思います。
コミュニティを立ち上げ、スクラムアジャイル開発に関心のある人どうしで集まって活動を行うことによって、改めてスクラムを学びなおし、スクラムマスターのスキルアップも図っていこうという狙いがあります。
また、スクラムマスター1人では、チームを超えた組織全体に関わるような変化を起こすことはなかなか難しいことだと思います。チームを跨いだ活動を行うことで、組織全体のスクラムアジャイル開発を改善していきたいという狙いが込められています。

活動内容としては、特定のテーマについてのディスカッションや、チーム間での困りごとの共有等を週1回1時間程度、4人~多い時は8,9人ぐらいで集まって行っています。
スクラムマスターに限らず、アジャイル開発に関心のある方々がチームの垣根を越えて集まって活動しているのが特徴です。

これまでいくつかのテーマでディスカッションを行ってきました。その中の一つとして、「アジャイル開発って何だろう?」というテーマで行った議論の内容を紹介したいと思います。

アジャイル開発って何だろう?

皆様は「アジャイル開発って何?」と聞かれた時にどう答えますか?アジャイル開発といえばどんなイメージを思い浮かべますか? 考えられる答えは様々あると思います。
実際、アジャイルコミュニティでディスカッションを行った時も、次のように様々なイメージが出てきました。

  • 素早くリリースする
  • 繰り返し行う
  • 価値をデリバリーする

しかし、とあるメンバーはこう言います。

ウォーターフォールアジャイルになったからといって速くなることはないよね」

ん??スピードを上げたいからアジャイルをやっているのではないの??
私の中で疑問が湧いてきましたが、その理由を話し合っていくと、ウォーターフォールアジャイル開発の二つのイメージ図が出来上がりました。

まず、次の図はウォーターフォール型の開発のイメージ図です。

f:id:nfl_kgw:20211124200135p:plain

ウォーターフォール型の開発では、一般的にはゴールを決めたらそこに向けて一直線に開発を進めていきます。
最終的にたどり着いた地点が本当に目指していた地点ならめでたしめでたしです。
しかし、我々が取り組む問題は目指すべきゴールが最初から明らかな単純なものばかりではありません。
最初に設定したゴールに無事たどり着いても、それが本当に欲しいもの(真のゴール)とは全然違っていたということもあるかもしれません。

ゴールが自明でない問題に対応するためにはどのようにすれば良いのでしょうか。
問題をクネビンフレームワーク*1というもので分類し、その性質に応じた解決方法(開発手法)をとるアプローチがあります*2
ゴールが自明でない、予測可能性が低い領域では、仮説検証を繰り返し、試行錯誤しながら進めることが良いとされます。

それでは、アジャイル開発のイメージ図にについても見ていきます。

f:id:nfl_kgw:20211124200310p:plain

図のように、アジャイル開発でもゴールを決めてそこに向けて進んでいきますが、そのまま一直線に進んでいくわけではありません。状況の変化を感じ取り、その都度目指すゴールを変えていきます。

ゴールを小さく設定することで、最初のリリースはアジャイル開発の方が早くできそうです。
しかしプロジェクト単位で見ると、ゴールを変えながら繰り返し開発を行う分、アジャイル開発を行ってもスピードが上がるとは限らないわけですね。
むしろアジャイル開発の方が遅くなる可能性すらあるかもしれません。
ただ、都度適応しながら進めていくことで、最初からゴールを見通せない問題に対応する際にも、真のゴールのより近いところに着地できる可能性が高くなるのではないかと思います。

適応させる対象はゴールの他、スコープや、振り返りを通じてチームも適応させていく必要があるという意見が出ました。

以上のことから、「アジャイル開発って何?」という質問に一文で答えるとすると、

真のゴールにできるだけ近いところに着地するため、ゴール・スコープ・チームを適応させながら進める開発

なのだと私は考えました。

おわりに

本記事ではアジャイルコミュニティ、そしてその中でディスカッションした「アジャイル開発って何だろう?」について紹介しました。
もちろんここで紹介した内容が全てではなく、人や組織によってそれぞれのアジャイル観があると思います。

チームを超えたディスカッションを行うことで、様々なアジャイル観を学ぶことができ非常に勉強になります。 私自身この活動を通してアジャイルについて学び、自チームでもゴールを設定して日々適応を繰り返していく意識を醸成することができるようになってきたと感じています。

アジャイルコミュニティ、皆様の組織でも取り入れてみてはいかがでしょうか。

以降のアドベントカレンダーの記事でもアジャイルコミュニティに関する記事を投稿予定です!お楽しみに!

*1:The Cynefin Company:『THE CYNEFIN FRAMEWORK』, https://thecynefin.co/about-us/about-cynefin-framework/

*2:Ryuzee.com:『新規事業とアジャイル(ダイジェスト版)』, /https://slide.meguro.ryuzee.com/slides/102