【フィーチャーくどうかいはつ】

フィーチャー駆動開発(FDD) とは?

最終更新:
💡 機能というピースでパズルを組み立てる開発術

利用者にとって価値のある小さな「機能(フィーチャー)」を単位にして、計画・設計・実装を進める開発手法。最初に全体のモデルと機能リストを作り、機能ごとに短い周期で作り込む。

📌 このページのポイント
フィーチャー駆動開発(FDD)の5プロセス 1. 全体モデル 開発 2. 機能リスト 作成 3. 機能ごと 計画 4. 機能ごと 設計 5. 機能ごと 実装 機能ごとに繰り返し 機能リストの例 ✓ 商品を検索する ✓ カートに追加する ○ 注文を確定する ○ レビューを投稿する 進捗管理 60% 完了 完了: 6機能 / 進行中: 2機能 / 未着手: 2機能 完了 進行中 未着手
フィーチャー駆動開発の5プロセスと進捗管理のイメージ
ひよこ ひよこ
フィーチャー駆動開発って、普通の開発と何が違うの?
ペンギン先生 ペンギン先生
「画面を作る」「データベースを設計する」みたいな技術的な作業で区切るのではなく、「売上の合計を計算する」「利用者のパスワードを検証する」みたいに、利用者から見て意味のある小さな機能で区切って進めるんだよ
ひよこ ひよこ
なるほど!でもどうやって進めるの?
ペンギン先生 ペンギン先生
最初に全体のモデルを作って、機能リストを洗い出し、機能ごとの計画を立てる。そのあとは機能ごとに設計と実装を短い周期で繰り返すんだ。この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年の書籍で広く紹介されたよ

参考資料

← 用語集にもどる