システムの機能を使う人(アクター)について考えてみた

システムの機能とシステムを使用する人

1つのシステムには複数の機能があります。
そして、複数の人が1つのシステムを使用します。

そのため、1つの機能を複数の人が使用する場合もあれば、複数の機能を同じ人が使用する場合もあります。

しかし、同じ人が複数の機能を使用する場合、同じ人が使用していたとしても、機能によってはその人の役割が異なる場合があります。

使う人の役割が変わる場合

同じ人が予定登録機能と実績登録機能があるシステムを考えてみます。
例えばTodoアプリのように自分がやる作業を登録しておき、実際に登録しておいた作業を実施した場合にその作業を消し込むようなシステムです。

このようなシステムでは、ユーザーは以下のようにして予定の登録および、実績の登録を行うと思います。

1.予定の登録:自分の実力や現在のタスクと優先順位を基に何をどう行うかを考えて登録を行う
      →マネジメントの視点で機能を使用する

2.実績の登録:実際に行った作業を登録する
      →作業者の視点で機能を使用する

機能を使う目的が違えばアクターは分ける

同じ人であっても機能を使用する目的が異なるのであれば、同じ人でもシステムを使用する役割は異なることとなります。
そのため、個人で使用するアプリであってもアクターが複数存在する場合があります。

例えば上記の例ではマネージャーと作業者の2つのアクターが存在します。
そして、予定を登録するユースケースと実績を登録するユースケースのそれぞれに対して、マネージャーと作業者のそれぞれのアクターが対応することとなります。

アクターを考える

アクターを考えるときはだれが使用するかではなく、どのような目的で使用される機能であるかを考える必要があります。
そして、機能がどのような視点で使用されるかをもとにユーザーの役割を考え、アクターとして割り当てる必要があります。

また、アクターを考えるときに機能の目的を検討する必要があるということは、機能の分割を行う場合も目的に合わせた機能分割が必要となります。
そうしなければ、1つの機能変更が複数のアクターに影響する事態となります。

そのため、システムの構造を考えるときは目的やそのものを取り巻く環境を考慮して機能を分割する、つまり関心ごとの分離が必要です。

設計の本

ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本

ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本

  • 作者:成瀬 允宣
  • 出版社/メーカー: 翔泳社
  • 発売日: 2020/02/13
  • メディア: 単行本(ソフトカバー)
エリック・エヴァンスのドメイン駆動設計

エリック・エヴァンスのドメイン駆動設計