【せきむくどうせっけい】

責務駆動設計 とは?

最終更新:
💡 部品の役割と協力相手から、設計を考える

部品の役割、知っていること、行うこと、他の部品との協調を中心に考えるオブジェクト設計の手法。注文の例とCRCカードで、責務を割り当てて見直す考え方を説明します。

📌 このページのポイント
責務駆動設計:役割と協力相手注文明細を把握・合計を計算協調相手:商品・支払いCRCカードの例商品価格を提供注文からの問い合わせに答える支払い決済を処理必要な相手に仕事を依頼するクラス名・責務・協調相手を記録具体的な流れで役割分担を試す
注文処理の役割分担の一例。矢印は協調の依頼先を示します。部品の責務はシナリオを試して見直します。
ひよこ ひよこ
責務って、何を決めるの?
ペンギン先生 ペンギン先生
その部品が何を知り、どんな仕事を行うか、という役割だよ。例えば注文の部品なら、注文した明細を把握し、合計金額を計算する。単なるデータの入れ物として見るだけでなく、果たす仕事から考えるんだ。
ひよこ ひよこ
注文の部品が、全部やるの?
ペンギン先生 ペンギン先生
必要な仕事を全て抱え込むとは限らないよ。商品の価格を商品へ問い合わせたり、支払い処理を支払いの部品へ依頼したりできる。責務を果たすために、誰とどのように協力するかも設計するんだ。
ひよこ ひよこ
CRCカードは、何を書くの?
ペンギン先生 ペンギン先生
クラス名、責務、協調する相手をカードに簡潔に書くよ。例えば注文なら「合計を計算」「商品から価格を得る」。カードを並べて、注文から支払いまでの流れを試すと、足りない役割や偏りを見つけやすいんだ。
ひよこ ひよこ
役割を決めれば、よい設計になる?
ペンギン先生 ペンギン先生
最初の案を作る助けになるけど、それだけで品質が保証されるわけではないよ。実際のシナリオで協力の流れを確かめ、責務の割り当てを見直していく。DDDの考え方などと組み合わせることもできるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「責務駆動設計」って出てきたら「部品の役割と協力関係を中心に考える設計手法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Responsibility-Driven Design」 = 責務を中心に考える設計
💬 レベッカ・ワーフスブロックの解説では、ブライアン・ウィルカーソンらと取り組んだ設計の考え方として紹介されています。責務と協調を先に考え、内部のデータ構造やアルゴリズムの細部を詰めます。

参考資料

← 用語集にもどる