ソフトウェア開発について学んでいくと、「BDD」という言葉に出会うことがあります。振る舞いに注目した開発の進め方ですが、TDDと似ていて違いが分かりにくいと感じる方もいるかもしれません。この記事では、BDDの意味や基本的な考え方、TDDとの違いや関連する用語までを、初心者の方にもわかりやすいように整理して解説していきます。
BDDとは?
BDDとは、英語の「Behavior-Driven Development」の頭文字をとった言葉で、日本語ではビヘイビア駆動開発、振る舞い駆動開発などと呼ばれます。ソフトウェアが「どう振る舞うべきか」、つまり利用者から見てどんなときにどう動くべきかという観点を中心に据えて開発を進める考え方です。たとえば「ある操作をしたら、こうなるべき」という振る舞いを、関係者に分かりやすい言葉で表し、それをもとに開発や確認を進めます。利用者の視点での動きを軸に開発する考え方だと捉えると分かりやすいでしょう。
BDDが重要な理由
ソフトウェアを作るときには、開発する人だけでなく、企画する人など技術にくわしくない関係者も関わることがあります。BDDでは、ソフトウェアの振る舞いを、みんなに分かりやすい言葉で表すことを大切にします。これにより、関係者の間で「どう動くべきか」という認識をそろえやすくなり、認識のずれによる手戻りを減らせます。技術にくわしくない人とも、ソフトウェアの動きについて共通の理解を持ちやすくする工夫として役立つ考え方だと言えるでしょう。
BDDが使われる場面
BDDの考え方は、開発のさまざまな場面で取り入れられています。代表的な例としては、次のようなものが挙げられます。
- 利用者から見た動きを中心に開発を進めたい場面
- 技術にくわしくない関係者とも認識をそろえたい場面
- どう振る舞うべきかを分かりやすい言葉で整理する場面
- 振る舞いをもとに確認しながら開発を進める場面
BDDの仕組み
BDDの基本的な考え方は、おおまかに次のように整理できます。
- ソフトウェアが、どんなときにどう振る舞うべきかを整理します
- その振る舞いを、関係者に分かりやすい言葉で表します
- 表した振る舞いを、関係者で確認して認識をそろえます
- その振る舞いを満たすように開発を進め、確認していきます
BDDと似た用語との違い
BDDとよく比べられる言葉に「TDD」があります。TDDがテストを先に書いて確実に作り進めることを中心とするのに対し、BDDはそれを発展させ、利用者から見た振る舞いを、分かりやすい言葉で表すことをより重視する考え方だと考えると整理しやすいでしょう。両者は深く関わっており、対立するものではありません。何に注目するか、誰に分かりやすくするかという観点に着目すると、違いが見えてきます。組み合わせて捉えると理解しやすいでしょう。
BDDを理解するメリット
BDDの考え方を理解しておくと、利用者から見た振る舞いを中心に、関係者と認識をそろえながら開発を進めるという発想が身につきます。これは、開発に携わる人にとって特に役立つ知識ですが、相手に分かりやすい言葉で期待する動きを表すという考え方は、ほかの場面でも応用が利きます。振る舞いを軸に共通の理解を作る習慣があれば、認識のずれを減らせます。期待する動きを言葉で共有する力の基礎になる考え方だと捉えると分かりやすいでしょう。
BDDの注意点
BDDを取り入れる際には、いくつか注意したい点があります。振る舞いを分かりやすい言葉で表すことには手間がかかり、慣れるまでは負担に感じることもあります。また、すべての場面でBDDが最適というわけではなく、対象や状況によって向き不向きがあります。形式を整えること自体が目的にならないよう、関係者と認識をそろえるという本来の目的を見失わないことが大切です。目的に応じて、無理のない範囲で取り入れることが望ましいでしょう。
BDDに関連する用語
BDDをより深く理解するために、あわせて知っておくと役立つ関連用語を紹介します。
- TDD:テストを先に書く開発の考え方
- テスト:プログラムが正しく動くかを確かめること
- 振る舞い:利用者から見たソフトウェアの動き
- 要件:システムに求められる条件
- 品質:ソフトウェアの良し悪しを表す性質
まとめ
BDDは、ビヘイビア駆動開発とも呼ばれ、ソフトウェアがどう振る舞うべきかという利用者の視点を中心に据えて開発を進める考え方です。振る舞いを分かりやすい言葉で表すことで、技術にくわしくない関係者とも認識をそろえやすくなります。TDDと深く関わり、それを発展させたものとされます。形式を整えること自体が目的にならないよう注意が必要です。BDDを理解しておくと、期待する動きを共有する力につながるので、TDDとの違いも意識して理解を深めるとよいでしょう。
よくある質問
BDDは何の略ですか?
BDDは英語のBehavior-Driven Developmentの頭文字をとった言葉で、日本語ではビヘイビア駆動開発や振る舞い駆動開発などと呼ばれます。ソフトウェアがどう振る舞うべきかを中心に開発を進める考え方を指すと考えると分かりやすいでしょう。
BDDとTDDは何が違いますか?
TDDがテストを先に書いて確実に作り進めることを中心とするのに対し、BDDはそれを発展させ、利用者から見た振る舞いを分かりやすい言葉で表すことをより重視します。対立するものではなく、深く関わる考え方だと捉えると整理しやすいでしょう。
BDDはどんな利点がありますか?
振る舞いを分かりやすい言葉で表すため、技術にくわしくない関係者とも、どう動くべきかという認識をそろえやすくなります。これにより、認識のずれによる手戻りを減らせる点が利点だと考えると分かりやすいでしょう。

とは.png)