【フィーチャーくどうかいはつ】
フィーチャー駆動開発(FDD) とは?
最終更新:
💡 機能というピースでパズルを組み立てる開発術
利用者にとって価値のある小さな「機能(フィーチャー)」を単位にして、計画・設計・実装を進める開発手法。最初に全体のモデルと機能リストを作り、機能ごとに短い周期で作り込む。
📌 このページのポイント
- 利用者から見て価値のある小さな「機能」を単位に開発を進める手法
- 全体モデル作成 → 機能リスト作成 → 機能ごとの計画 → 機能ごとの設計 → 機能ごとの実装、の5つのプロセスで構成される
- 機能は2週間程度以内で作れる大きさにし、機能単位で担当と進捗を管理する
- アジャイル手法の一つに数えられ、最初に全体モデルを作る点で計画寄りの特徴を持つ
フィーチャー駆動開発って、普通の開発と何が違うの?
なるほど!でもどうやって進めるの?
最初に全体のモデルを作って、機能リストを洗い出し、機能ごとの計画を立てる。そのあとは機能ごとに設計と実装を短い周期で繰り返すんだ。この5つのプロセスが決まっているのが特徴だよ
アジャイルとは違うの?
アジャイル手法の一つに数えられているよ。短い周期で動く機能を積み上げる点はスクラムなどと同じだけど、最初に全体モデルと機能リストを作る点は計画寄りだね。もう一つ特徴的なのは、クラスごとに担当者を決める「クラスオーナーシップ」なんだ
どんなプロジェクトに向いてるの?
もともと約50人・15か月の銀行システム開発で使われた手法で、比較的大きなチームでの実績から生まれたんだ。機能単位で担当を分けられるし、「全100機能中、60機能完了」のように進捗を数えやすいよ
機能リストを作るのが大変そう…
そこがFDDの肝だね。機能は「<動作> the <結果> <by/for/of/to> a(n) <対象>」という型で書くんだ。たとえば「Calculate the total of a sale(売上の合計を計算する)」のようにね。書き方をそろえると、機能の粒度や意味のぶれが減るんだよ
もっと詳しく知りたい人へ
1つの機能が複数のクラスにまたがるときはどうするの?
FDDではクラスごとに担当者(クラスオーナー)を決めるので、機能が複数のクラスにまたがる場合は、関係するクラスオーナーが集まって「フィーチャーチーム」を組んで作業するよ。全員がどのコードでも直せるXPの共同所有とは考え方が違うんだ。
まとめ:ざっくりこれだけ覚えればOK!
「フィーチャー駆動開発」って出てきたら「利用者向けの小さな機能を単位にして計画・開発する手法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Feature-Driven Development」 = 機能駆動開発
💬 1997年ごろシンガポールの銀行のプロジェクトでジェフ・デ・ルカの開発プロセスとピーター・コードの「フィーチャー」の考え方を組み合わせて生まれ、1999年の書籍で広く紹介されたよ