アジャイル開発-スクラムについて

# はじめに
本記事ではScrumの基礎について書きます。私はCSMの資格を持っており、職場ではアジャイル導入にコーチとしてかかわった経験があります。
スクラムで開発したいどうしたらよいか質問を受ける事があります。その場合は先にスクラムとは何かから説明しています。時々はアジャイルを導入したいからスクラムを教えてとの質問も受けます。その場合は、アジャイル=スクラムではない事を先に伝えています。アジャイルにはScrum以外にKanban、Lean、XPなどほかにも色々手法があることを伝えてます。

## Agile
Scrumに入る前に、[アジャイルマニフェスト](https://agilemanifesto.org/)を読んで、アジャイルの4つのバリューと12の原則を理解して頂きたいです（笑）。

**アジャイルの4つのバリュー**
>Individuals and interactions over processes and tools(プロセスやツールよりも個人と対話を)
Working software over comprehensive documentation(包括的なドキュメントよりも動くソフトウェアを)
Customer collaboration over contract negotiation(契約交渉よりも顧客との協調を)
Responding to change over following a plan(計画に従うことよりも変化への対応を)

[アジャイルマニフェスト日本語訳の場合はこちら](http://agilemanifesto.org/iso/ja/manifesto.html)

## Scrum（スクラム）
Scrumについてはすべて[Scrum Guide](https://www.scrumguides.org/)に書いてあります。Scrumとは何から実装方法までの内容を10ページ内に完結にまとめられています。（表紙や目次入れると14ページ、日本語の場合は18ページ）。丁度先月(2020年11月）に新しいバージョンにアップグレードされました。

そんなに時間がかかるものではないので、ぜひ一度読んでおいてください。PDFを閲覧したい場合は下記リンクをご活用ください。

- [スクラムガイド英語](https://www.scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-US.pdf)
- [スクラムガイド日本語](https://www.scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-Japanese-2.0.pdf)


>簡単に全体を説明すると、スクラムには「Product Backlog」という箱が存在します。その箱にはチームがやるべき事すべて入っています。その箱から次の決まった時間単位内でやるべき作業を別の箱に移動します。その別の箱の事を「Sprint Backlog」と言います。「Sprint Backlog」の作業してできるのが「Increment」です。複数回にわたって「Increment」を作る事で完成品を作ります。

スクラムは、反復的(*=iterative*)かつ漸進的な(*=incremental*)アプローチを採用しています。

![sprint](https://media.licdn.com/dms/image/C4E12AQE_JIA38YnAsw/article-inline_image-shrink_1500_2232/0?e=2128291200&v=beta&t=V2lGO5f-QqlzfAE8YlYKKCjGQx8WzGz0xRnXUXC809Y)

### Scrum Theory（スクラムの理論）
Scrumは以下2つの考え方に基づいてます。

| SN | 項目名       | 意味  |
|----|------------|------|------|
| 1  | **Empiricism** | 経験主義（知識は経験から生まれる）  |
| 2  | **Lean Thinking** | Lean思考（無駄をなくす）  |



Scrumを機能するには以下の3点がとても重要です。

| SN | 項目名       | 意味  |
|----|------------|------|------|
| 1  | **Transparency** | 透明性（作業の見える化）  |
| 2  | **Inspection** | 検査（設定したゴールとずれてないか、頻繁かつ勤勉に結果を検査する）  |
| 3  | **Adaptation** | 適応（検査で新しい事を学んだらすぐに適用する）  |

上記の3点をまとめて、「***Three pillars of Scrum***(=スクラムの三本柱)」と言います。

### Scrum Values（スクラムの価値基準）
アジャイルは4つのバリューとはどんあものだったか覚えていますか？

Scrumには**5つバリュー**があります。

![scrum values](https://scrumorg-website-prod.s3.amazonaws.com/drupal/inline-images/2019-06/ScrumValues-1000.png)

| SN | 項目名       | 意味  |
|----|------------|------|------|
| 1  | **Commitment** | コミットメント（最初に設定するゴールを達成することにコミットメントする）  |
| 2  | **Focus** | 集中（ゴールを達成するために集中する）  |
| 3  | **Openness** | オープン（利害関係の全員に情報（＝成功、課題、。。）を共有する）  |
| 4  | **Respect** | 尊敬（お互い尊敬する）  |
| 5  | **Courage** | 勇気（正しい事をする勇気、困難な課題に立ち向かう勇気）  |

### Scrum Team（スクラムチーム）
ここまできたらScrumの考え方について理解できたのではないでしょうか。Scrumを実践するチームをScrumチームと言います。Scrumチームには下記3つのロールがあります。

- Developers（開発者）
- Product Owner（プロダクトオーナー）
- Scrum Master（スクラムマスター）


>ちなみに一つ前のバージョン（2017年版）では、以下のように定義されていました。
>
- Product Owner
- Development Team
- Scrum Master

>><font color="blue">順番が変わった事と「Developer Team」から「Developers」に変わってます。</font>


<font color="brown">※ 現在のバージョンでは*Scrumチームは10人以下がいい*と書いてあります。前のバージョンでは5~11人と言っていました。（DevelopmentTeamが3～9 + PO + SM）</font>

<font color="blue">※ 実はロールも「Accountability」という名称に変わってます。日本語では「責任」という言葉を使ってます！</font>
>
スクラムはスクラムチームにおいて、開発者、プロダクトオーナー、スクラムマスターという 3 つの明確な責任を定義する。

#### サブチーム
Scrumチーム内に**<font color="red">サブチームが存在しません</font>**。理由についてはScrumガイドで見つけてくださいね（笑）。

### Scrum Events（スクラムイベント）
イベントとは、スクラムの作成物の検査と適応をするために用意されたものです。スクラムには4つのイベントがあります。

- Sprint Planning（スプリントプランニング）
- Daily Scrum（デイリースクラム）
- Sprint Review（スプリントレビュー）
- Sprint Retrospective（スプリントレトロスペクティブ）

これらのイベントは、スクラムの三本柱の１つである**「透明性」**を実現するために明確に設計されています。イベントを理解するにはSprint(=スプリント)を理解する必要があります。Sprintとは決まった時間の単位です。各Sprintでプロダクトに必要な部品を作って行きます。Sprintの長さはScrumガイドが1ヶ月以内と書いてあります。実世界では2週間のスプリントが多いのではないかと思います。

#### Sprint Planning(スプリントプランニング)
スプリントプランニングはスプリントの起点であり、一番最初に実行するイベント（＝打ち合わせ）です。ここではスプリントで実⾏する作業の計画を⽴てます。ここではScrumチーム（PO, SM, Dev)全員が参加します。必要によってほかのステークホルダーを招待してもいいです。
Scrumガイドは1ヶ月のSprintの場合は8時間のタイムボックスが必要と言っています。つまり、2週間のスプリントの場合は4時間。
><font color="red"> **タイムボックス**とは必ずしもその時間までやらないといけないことではありません。早く終わってもOKです。しかし、それを超えてはいけません。実世界では2週間のスプリントで1～2時間が多いのではないでしょうか。</font>

<sub>[2021/08/05: スプリントプランニングについて記事を書きました！！](https://qiita.com/_dakc_/items/212270c77f90f2f83db3)</sub>

#### Daily Scrum(デイリースクラム)
このイベントはSprintの長さにかかわらず、**15分のタイムボックス**でやります。Scrumガイドは毎日同じ時間、同じ場所でするのがいいと言っています。コロナがなかなか落ち着かない実世界では、リモート会議でやるのも多いのではないかと思います。Developersが全員参加します。POとSMは参加したほうがより良いです。

#### Sprint Review(スプリントレビュー)
このイベントでは、Scrumチーム（PO, SM, Dev)全員、ステークホルダーが参加します。長さは1ヶ月のSprintの場合は4時間のタイムボックス（つまり、2週間のSprintの場合は2時間）。
※タイムボックスの意味覚えてますか？

このイベントでは、Sprintの成果物を検査します。DevelopersがSprintの頑張りをアピールする場でもあります。

#### Sprint Retrospective(スプリントレトロスペクティブ=振り返り)
これはSprintの最後のイベントです。**Scrumチーム全員**が参加します。長さは1ヶ月のSprintの場合は3時間の**タイムボックス**（つまり、2週間のSprintの場合は1.5時間）。
スプリント中に何がうまくいったか、どのような問題が発⽣したか、そしてそれらの問題がどのように解決されたかについて話し合います。
※Sprint Retrospectiveをもってスプリントは終了となります。

# 最後に
簡単にScrumについて書きました。何かの参考になれば幸いです。ぜひ一度Scrumガイドも確認しておいてください。とても丁寧に書かれています。

実はScrumにはもうひとつ「Backlog Refinement」というイベントが存在します。ここは次のスプリントプランニングができるように事前準備をします。
英語ですが、[こちらの記事](https://www.visual-paradigm.com/scrum/what-is-story-point-in-agile/)を見ると大変参考になるかと思います。


また、スクラムには下記の３つの成果物（=Artifact）があります。

- Product Backlog（プロダクトバックログ）
- Sprint Backlog（スプリントバックログ）
- Increment（インクリメント）

各成果物が、
・<ins>スクラムの三本柱</ins>の1つである**透明性**と
・<ins>スクラムバリュー</ins>の１つである**集中**（ゴールを達成するために集中する）
を強化するために、１つのコミットメントを持つ。

| 成果物          | コミットメント                  |
|-----------------|--------------------------------|
| Product Backlog | Product Goal（プロダクトゴール）|
| Sprint Backlog  | Sprint Goal（スプリントゴール） |
| Increment       | Definition of Done (DoD)       |

これらについては、次の[スプリントプランニングはどうやってやるの？](https://qiita.com/_dakc_/items/212270c77f90f2f83db3)記事に書いています。