## スリーアミーゴスとは
「スリーアミーゴス(Three Amigos)」とは、主にアジャイル開発やビヘイビア駆動開発(BDD)の現場で使われる、三つの異なる専門的な視点を持つ人々が協力して、要求や仕様を具体化する活動のことです。一般的には、**ビジネス担当者、開発者、テスターまたは品質保証担当者**の三者を指します。ただし、組織によって呼び方や参加者の構成は異なり、プロダクトオーナー、業務担当者、デザイナー、開発者、テスト担当者などが参加する場合もあります。
スリーアミーゴスの目的は、要求の曖昧さを減らし、関係者全員が同じ理解を持った状態で開発を始めることです。ビジネス担当者は、利用者が何を必要としているのか、どのような業務上の価値があるのかを説明します。開発者は、技術的な実現可能性、既存システムへの影響、実装上の制約などを確認します。テスターや品質保証担当者は、正常系だけでなく、異常系、境界値、例外的な状況、セキュリティや使いやすさなどの観点から質問します。
この三者が早い段階で話し合うことによって、「何を作るのか」だけでなく、「どのような条件を満たせば完成と判断できるのか」も明確になります。例えば、「利用者が商品を購入できるようにする」という要求だけでは、在庫切れの場合、支払いに失敗した場合、配送先が不完全な場合などの扱いが不明確です。スリーアミーゴスでは、このような状況を具体的な例として取り上げ、受け入れ条件や受け入れテストに反映します。
BDDでは、スリーアミーゴスの会話を「Given(前提)」「When(操作)」「Then(結果)」という形式で表現することがあります。例えば、「在庫がある商品を購入できる利用者が、購入ボタンを押した場合、注文が作成される」というように記述します。この形式を使うと、業務担当者、開発者、テスターが読みやすい共通の仕様を作成できます。さらに、Cucumberなどのツールを利用すれば、これらの仕様を自動テストに結び付けることもできます。
ただし、スリーアミーゴスは単なる会議の名前ではありません。重要なのは、三者がそれぞれの専門知識を持ち寄り、質問、確認、合意形成を行うことです。会議を形式的に開催するだけで、発言が一部の人に偏ったり、すでに決まった仕様を確認するだけになったりすると、本来の効果は得られません。また、三人だけに限定する必要もありません。必要に応じて、運用担当者、セキュリティ担当者、データ分析担当者、ユーザー代表などを加えることも有効です。
したがって、スリーアミーゴスは、要求定義と品質向上を同時に進めるための協働手法であり、開発の早い段階で認識のずれを発見するための実践的な仕組みです。これによって、手戻り、仕様の誤解、受け入れ時の不一致、テスト不足などを減らし、利用者にとって価値のあるソフトウェアをより確実に提供しやすくなります。
## スリーアミーゴスの主な特徴
1. **三つの異なる視点を組み合わせます。** ビジネス、開発、テストまたは品質保証の視点を組み合わせて、要求を多面的に検討します。
2. **要求の曖昧さを早期に発見します。** 開発を始める前に疑問点や矛盾点を確認するため、後工程での大きな手戻りを防ぎやすくなります。
3. **具体的な例を中心に話し合います。** 抽象的な要求だけでなく、実際の利用場面、入力値、期待される結果、例外条件などを確認します。
4. **受け入れ条件を明確にします。** 何ができれば要求を満たしたことになるのかを、関係者が理解できる形で定義します。
5. **BDDや受け入れテストと相性が良いです。** Given、When、Thenなどの形式を使って、会話の内容を実行可能な仕様やテストに変換できます。
6. **専門家同士の協働を重視します。** 一方的な仕様伝達ではなく、質問と対話を通じて共通理解を形成します。
7. **品質を開発の後工程だけで考えません。** テスト担当者が早期から参加することで、品質を要求定義の段階から作り込みます。
8. **参加者は状況に応じて柔軟に変更できます。** 三人に限定するのではなく、セキュリティ、運用、デザインなどの専門家を必要に応じて加えます。
9. **自動テストや継続的インテグレーションに発展させられます。** 合意したシナリオを自動化することで、仕様確認と回帰テストを効率化できます。
10. **会議そのものよりも成果を重視します。** 重要なのは会議を開催することではなく、明確な要求、具体例、受け入れ条件、共通認識を残すことです。
## 参考資料
1. Cucumber公式「Behaviour-Driven Development」 https://cucumber.io/docs/bdd/
2. Cucumber公式「Gherkin Reference」 https://cucumber.io/docs/gherkin/reference/
3. Dan North, “Introducing BDD” https://dannorth.net/introducing-bdd/
4. Agile Alliance「Behavior-Driven Development」 https://www.agilealliance.org/glossary/bdd/
5. Atlassian「Behavior-driven development」 https://www.atlassian.com/continuous-delivery/software-testing/behavior-driven-development
6. Wikipedia「Behavior-driven development」 https://en.wikipedia.org/wiki/Behavior-driven_development
※「スリーアミーゴス」は、ソフトウェア開発以外にも、映画作品名や一般的な三人組を指す場合があります。本説明では、アジャイル開発およびBDDで使われる意味を中心に説明しています。
