スクラムガイドの要点、短期間で高品質な製品を作る方法
はじめに
先日研修にてアジャイルについて学んだのですが、頭の整理も兼ねてここで少し私なりにまとめておきたいと思います。
一般的なアジャイルのイメージは「スクラム」のことを指しているようにも思いますが、アジャイルという定義自体は以下のサイトに書かれています。
https://agilemanifesto.org/iso/ja/manifesto.html
要約すると、取り敢えず動くものを作って世の中に出してみたら(良いものも悪いものも含めて)反応が返ってきて、その意見をもとに改善すれば結果的に無駄な機能が無いシンプルで使いやすいものができるよね、ということになります。
市場からフィードバックを得て製品を改善するプロセスは自動車業界や家電業界でも同じであると思いますが、講師の方に聞いてみるとアジャイルの定義は広いので、自動車や家電もアジャイル開発と言って良いそうです。
でも、アジャイルって短期的にリリースされるものだよね?自動車や家電は短期的に出て来ないじゃん!っと思ったそこの貴方はきっと「アジャイル」と「スクラム」を混同しているのだと思います。
アジャイルの中に様々な開発手法があり、スクラムもその一つになるのですが、これがあまりにも有名なのでアジャイル=スクラムのイメージが付いてしまったのだと思います。
という訳で、今回はそんなアジャイルを代表する「スクラム」について、話をして行きたいと思います。
スクラムとは
スクラムの概要
スクラムとはソフトウェア開発の方法の一つです。この方法ではチームが一緒に働いて、短い期間(通常2週間から1ヶ月)で製品を作っていきます。この方法は「みんなで協力して」より良い製品を早く作ることができます。
スクラムにはいくつかのルールがあります。例えば、毎日のミーティングをすることや、誰もが話すことができるようにすることなどがあります。これらのルールを守ることでチームメンバーがお互いにコミュニケーションをとり、製品作りがスムーズに進むことができます。
要約すると「みんなで協力して目標に向け、より良い体験ができるやり方」がスクラムであり、そのルールを定義しているのがスクラムガイドになります。
スクラムガイドについて
スクラムについては「スクラムガイド」と呼ばれる公式ガイドブックが存在しており、これが経典的なものになっています。
https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-Japanese.pdf
これをもとに色々な本や記事が書かれていると思いますが、やはり勉強するのであれば本家本元を見るのが一番良いということで、研修でもこのガイドブックに沿った用語の説明や役割などを教えて頂きました。
私がこれを読んだ感想としては、正直単語が英語そのままなので、もう少し分かりやすく出来なかったの❓🤔という印象で、説明されている内容に関しても若干日本語が怪しいようにも思いました。
まぁ、概念的なものなので共通認識が持てれば用語はそのまま英語でも良いと思いますが、補足の部分はもう少し易しい日本語が良いですね。
という訳で、今回私がスクラムの用語を易しい日本語に置き換えて図にしてみました。
スクラムチームについて
スクラムを実現するためにはチーム全員が協力者であり、対等な関係が望まれます。
勿論個々の思惑はあるにせよ、最終的な目標に向けて全員の意思統一が必要であり、皆が納得して作業を進めることが重要視されています。
その調整役として「スクラムマスター」が存在しており、チームを俯瞰的に見て作業が適切に実施されていることを確認し、何か問題があれば対処を行います。
また、スクラムマスターはスクラムのやり方を遵守していることを確認するために、コミュニケーションをサポートすることも大切な役割です。
ここで言うやり方とはスクラムで重要視されている「透明性」という部分にも関連があり、何か隠し事があると「検査」時に正しい判断ができない、という理念のもと、嘘偽りのない関係性を構築できるようサポートする必要があります。
プロダクトの方針決め
何を目的に活動するのか決めないと何も始まらないと思いますが、最終的に達成したい目標のことを「プロダクトゴール」といいます。
また、このゴールに向けて何をすれば良いのか決めないと先に進めないので、目標に向けて何をやって行くかを考えていきます。
プロダクトバックログについて
プロダクトバックログとは、目標を達成するために必要な項目の一覧のことです。これには他者が望むポイントや改善点、優先順位などが含まれます。
開発チームはこの一覧を元に次にやることを決定します。この一覧は常にアップデートされ続け、最新の状況を反映している必要があります。
簡単に言うと「優先順が記載されたやりたいことリスト」ということですね。
このやりたいことリストはあくまで「やりたい」だけであり、別にやらなくても良いものになります。
最終的に達成したい目標に向けてやりたいことに優先順位を付け、次はこれをやろう、ということを決めるものが「プロダクトバックログ」です。
スプリントとは
では、プロダクトの方針が決まったところでこれをどうやって進めていこうかという話になるのですが、そのやり方が「スプリント」になります。
スプリントについて掘り下げて行くと色々ルールがあるのでここでは少し割愛しますが、大事なのはここで何かしらの結果を出し、それが良かったのか悪かったのか検査できる状況にする必要があります。
スプリントはプロダクトバックログ(やりたいことリスト)の優先順に進めていきますが、期間は固定であり、その期間内に終わらせられる内容にする必要があります。
例えば1週間作業をやってみて、その結果からどのぐらいの生産性が出て、最終的な目標を達成する為にはどのぐらい掛かるのか、やってみた結果を精査して精度をあげていこう、という取り組みになるかと思います。
勿論やった結果プロダクトの方針が変わって最終的な目標自体が変わってしまう可能性もありますが、それはそれで良しとするのがアジャイル的な考え方になります。
やらなきゃ始まらないから、まずはやってみよう!ということですね。
スプリントバックログについて
作業を行う前に計画を立てないと期間内に終わるかどうかも分からないと思いますが、スプリントの最初に行うのが「スプリントプランニング」になります。
この計画の際、期間内に行う作業のリストアップは勿論のこと、スプリントのゴールと何を持って完成と言えるのか(ゴール達成時の品質)を定義します。
このゴールと完成の定義は開発者全員が納得するものである必要があり、 作業に必要な時間の算出も「プランニングポーカー」と呼ばれる開発者全員の意見を聞いて、すり合わせた上で一番多いものを採用する、というやり方になります。
そうすることで工数に対する妥当性が増すと共に、不平不満が出にくいという側面があります。無理のない計画を立て、それをきちんと遂行するということが必要になると思います。
スプリントの実行と終了について
スプリントを進めていく際に作業の進捗や方向性があっているか、「デイリースクラム」と「スプリントレビュー」で確認を行っていきます。
デイリースクラムでは1日1回15分以内、というルールの下、期間内にやることが終わるかを確認します。
単なる進捗確認になりがちですが、本質的には問題の発生有無を確認する場になるので「ファイブフィンガー」というやり方を使うのが良いそうです。
スプリントレビューでは作業によって出来上がった成果物を実際に動かしてみて、スプリントゴールやプロダクトゴールに対して方向性が合っているか確認します。
スプリントレビューに関しては成果物の出来によってやる回数が変わりそうですが、少なくともスプリントの最後に必ず1回は行うことになります。
そしてスプリントが終わった際は「スプリントレトロスペクティブ」と呼ばれるふりかえり会があります。
実際にやってみた結果から次に何をやるかを決めるものになるのですが、この内容がプロダクトバックログに反映され、次のスプリントの方針を変える可能性があります。
これを繰り返すことで、最終的な目標に近づいていく、というのがスクラムの考え方になります。(勿論前述した通り、最終的な目標自体が変化していく世界観です)
まとめ
改めてスクラムの用語についてまとめます。
なお、図はmiroで作成しているので、詳しく見たい方はmiroの方で見てください。
さいごに
少し長くなってしまったのでこの辺りで筆を置きたいと思いますが、日々の生活の中でまだやったことないけど挑戦してみたい!という人にはこの「スクラム」という考え方はとても良いと思います。
例えば「投資」を初めてみたいけど良く分からない、という人はプロダクトバックログ(やりたいことリスト)に以下を入れてみてはどうでしょうか。
証券口座を開設する
投資信託を買ってみる
1株から買える海外株を買ってみる
100株の国内株を買ってみる
…
きっと少しずつ進めていくうちに株に詳しくなって、投資信託を買ってみたら日本株に対する興味が湧いてきて優先順位が変わった、なーんて事にもなる気がします。
スクラムは世の中にある一般的な経験を文書化して体現したものであると思いますが、「先人の知恵」は有効に活用すべきですので、日常においても「スクラム的」な考えを使って目標に向かって進んでいくのは良いことですね。
ではでは。
よければ❤️、シェア⤴️、サポートお願いします❗🥰