アジャイル開発における12の原則を理解する

# アジャイルソフトウェア開発宣言

アジャイル開発をするにあたって、原点である「アジャイルソフトウェア開発宣言」および「アジャイル宣言の背後にある原則」が十分にチームメンバーや関係者に伝わっていないことがあります。

すでにアジャイル開発(スクラム)を実践している人においても、より深く理解するには「アジャイル宣言の背後にある原則」への理解が欠かせません。

ですので、「アジャイル開発における12の原則」を読み解くために、以下にまとめました。

---

(アジャイルマニフェスト)
https://agilemanifesto.org/iso/ja/manifesto.html
<img width="931" alt="スクリーンショット 2020-01-13 11.21.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/9f817d01-12cc-6be8-2b1d-4f5444e80946.png">

---


**「アジャイルソフトウェア開発宣言」**は、2001年に著名な17名のソフトウェア開発者によって、それぞれの主義や手法についての議論を通して生み出されました。
彼らがソフトウェア開発を行ううえで重視している**「マインドセット」**が書かれています。

アジャイル開発で成果を出すためには、考え方の**背景にある12の原則**を理解することが大切です。

---

# アジャイル開発 12の原則

アジャイル開発を会得するには、アジャイルの呼吸の12の型を理解する必要があります。

https://agilemanifesto.org/iso/ja/principles.html

#### アジャイルの呼吸：拾弐ノ型

 1. 顧客満足を最優先し、
価値のあるソフトウェアを早く継続的に提供する
 * 要求の変更はたとえ開発の後期であっても歓迎する
 * 動くソフトウェアを、2-3週間から2-3ヶ月というできるだけ短い時間間隔でリリースする
 * ビジネス側の人と開発者は、プロジェクトを通して日々一緒に働く
 * 意欲に満ちた人々を集めてプロジェクトを構成します。環境と支援を与え仕事が無事終わるまで彼らを信頼します。
 * 情報を伝えるもっとも効率的で効果的な方法はフェイス・トゥ・フェイスで話をすること
 * 動くソフトウェアこそが進捗の最も重要な尺度
 * アジャイル･プロセスは持続可能な開発を促進します。一定のペースを継続的に維持する
 * 技術や設計をレベルアップさせる意識が、俊敏（アジャイル）さを高める
 * シンプルさ（ムダなく作れる量を最大限にすること）が本質です
 * 自己組織化したチームのメンバーが協調して動く方が、パフォーマンスが高い。
 * 定期的な「ふり返り」により、開発チームのパフォーマンスをより高めるようにする

---

## 【壱ノ型】 顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供する

![character_program_happy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/d7920bad-14c9-7249-211a-617cf07bb86f.png)


 * 開発者の最も重要な活動は、**顧客のビジネスを成功させ満足させる**こと
 * そのために、価値のあるソフトウェアを**素早く継続的に**提供する
 * 開発の目的は**「QCDの達成」**ではない。**「バグがないこと」「コストを下げること」「納期を守ること」**は大事だが、目的を見失わないように
 * 顧客と開発者は、**ビジネスのゴール**について、しっかりと話し合う必要がある

---

## 【弐の型】要求の変更はたとえ開発の後期であっても歓迎する

![thumbnail_happy_man.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/ed23eac8-78ed-dc24-3d6f-805ab06f249b.jpeg)


 * 開発者は、**価値があるのであれば積極的に**変更を受け入れる
 * しかし、顧客に**言われるがままに**変更を受け入れることは**やめる**
 * 改善に繋がる要求は**新しい価値を見つけた証拠**
 * 変化を**「新しい価値」の発見の機会**ととらえ前向きに受け入れる

---

## 【参の型】動くソフトウェアを、2-3週間から2-3ヶ月というできるだけ短い時間間隔でリリースする

![character_program_fast.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/59e55a1d-b316-fc44-2a49-687e935c4321.png)


 * **要求は不確実であり変化する**ことが前提である
 * 顧客の要求が変更になることが想定される場合は、**仮説検証型**で進める必要がある
 * 開発者は価値に結びつかない**中間成果物ではなく**、**ビジネス観点で評価できるもの**を提供する
 * 顧客は、**市場からのフィードバック**を得て開発者と共有する

---

## 【肆の型】ビジネス側の人と開発者は、プロジェクトを通して日々一緒に働く

![baseball_draft_akusyu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/b1669474-af57-4743-b2cc-c095634effba.png)


 * 全員で**共通の目標**に対して**仲間**として働く
 * 不確実性の高いプロジェクトでは、**状況が刻々と変化する**ため、共通の目標が見えないまま進めると認識の齟齬などが発生する可能性がある
 * 関係者全員が**一緒の場所**で働くことを理想とする
 * 関係者全員でビジネスを成功に導くという**共通目標**を、日々確認する

---

## 【伍の型】意欲に満ちた人々を集めてプロジェクトを構成する。環境と支援を与え仕事が無事終わるまで彼らを信頼する。

![skate_speed_pursuit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/fda7dd01-84c6-ba31-ee30-fc4ffd540d98.png)


 * 開発チームには**意欲のある前向きな人々**を集める
 * 関係者は、開発チームを**信頼して**仕事を任せ、気持ちよく働けるよう配慮する
 * 細かな作業指示は、開発者の**自律的な行動を阻害**する
 * 開発者は、顧客の価値創造のために、**自らが考え**、自らの行動と判断に**責任**を持つ

---

## 【陸の型】情報を伝えるもっとも効率的で効果的な方法はフェイス・トゥ・フェイスで話をすること

![bird_karasu_talk.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/2a2f0bae-b7f3-b54d-f3d7-2254a0aa8f55.png)

 * お互いの本音をフェイス・トゥ・フェイスで汲み取り、**直接対話**することが大切
 * 決まった**仕様を伝えるだけ**のような**一方通行はダメ**
 * 伝えたい情報には、目的、希望、夢、心配ごとなど、**正確に言葉で表現できない**ものもある。そのような情報は、言葉では伝わりにくかったり、伝える際に**齟齬や誤解**を起こしやすい
 * 関係者が全員同じ空間に集まり、**対面で双方向に**対話することで、お互いの本音を汲み取りやすくなる

---

## 【七の型】動くソフトウェアこそが進捗の最も重要な尺度

![thumbnail_job_technical_evangelist_man.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/25c1c85a-f664-1211-aee6-2bd9228f116f.jpeg)


 * **動くソフトウェアこそ**が、進捗の最も重要な**尺度**である
 * 設計書の完成度など、動くソフトウェア以外のもので測る進捗では、実際に動作するまでは**問題に気づけない可能性**がある
 * 動くソフトウェアを**早いタイミングで見せられる**ように、**小さな単位**でリリースする計画を立てる
 * 顧客は、期待に合っているか判断するために**評価できる受入基準**を作る

---

## 【八の型】アジャイル･プロセスは持続可能な開発を促進する。一定のペースを継続的に維持する

![thumbnail_sports_run_syoumen_man_zekken.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/3a5d789e-5283-576f-45a5-af473045997a.jpeg)


 * **無理のない一定の**開発ペースを保つ
 * 無理をした状態では、創意工夫をしたり、改善をしたりという**意欲が起きない**。トータルパフォーマンス**低下**
 * タスクを**小さく均一化**し、一定期間内に**優先順位の高いものから**開発を繰返す
 * 開発者だけでなく、**顧客も心身ともにベストな状態**を保つ

---

## 【玖の型】技術や設計をレベルアップさせる意識が、俊敏（アジャイル）さを高める

![skate_speed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/3c67e6fc-22f9-97f3-bf07-d212ad582bbf.png)


 * 開発者は、常に**最新の技術**を学び、効果的な技術は**プロダクトへ適用**する
 * ソースコードの状態を目視やツールで**常に診断**し、**常に変更**して**高い可読性**を維持する
 * **自動化されたテスト**を作成して常に実行し、問題をすぐに発見する
 * 関係者は全員、上記の行動に**価値があることを認める**

---

## 【拾の型】シンプルさ（ムダなく作れる量を最大限にすること）が本質

![kaisya_kaigi_muda.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/1e588d02-5517-0e82-30e4-4d1339ba4874.png)


 * 「ムダ=価値を生まない」を探して「**やめる勇気**」を持つ
 * 日々の作業の中から、全員がムダを見つけ、削減することは、身軽になり機敏性を高め、**生産性を向上**させる
 * ムダについて**真剣に話し合う**
 * 顧客に価値をもたらさない**会議や報告**をなくす

---

## 【拾壱の型】自己組織化したチームのメンバーが協調して動く方が、パフォーマンスが高い

![undoukai_boutaoshi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/ccf121ac-9b3d-2c02-f4cc-bcb18bdb4851.png)


 * 開発チームは、**自分たちで**規律やルールを決める
 * **自ら率先して**作業の改善や課題の解決に取り組む
 * 自分の**不得意な作業**、領域についても**チャレンジ**して取り組む
 * 困っているメンバーがいたら、**助け合う**

---

## 【拾弐の型】定期的な「ふりかえり」により、開発チームのパフォーマンスをより高めるようにする
![figure_kaigi_hanashiai.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/691953e3-d08b-6738-3de0-9b78a4a8a236.png)

 * 常にチームが成長し続けるためには、**定期的に(毎週が良い)ふりかえり**を行い、調整し続けることが大事
 * 開発チームだけでなく、**ビジネス側も交えて**チーム全体で振り返ると良い
 * **チームで**問題に立ち向かう(**個人の責任にしない**)
 * 挙がった課題をすべて解決しなくても**気にしない**

---

## まとめ

アジャイル開発し続けるためには、自分たちに合った方法を、常に試していく必要があります。
失敗した場合も成功した場合も、「12の原則」に立ち返ることも大事です。

今回、わたし自身この資料をまとめることによって、アジャイルの原点をみつめなおし、明日からの開発に向けて、向き直ることができました。感謝いたします。