3秒でわかる
アクターとは、UMLのユースケース図で、対象システムの外から機能を利用する役割のこと。人だけでなく外部システムや装置も含み、並行処理のアクターモデルでは別の意味を持ちます。
30秒図解
もう少し詳しく
ITでいうアクターとは
「アクターとは」と聞かれたとき、要件定義や設計の文脈なら、まずUMLのアクターを指します。アクターは、開発対象のシステムの外側にいて、システムと直接やり取りする役割です。
ネットショップを開発するなら、商品を買う「購入者」、商品を登録する「運営担当者」、支払い結果を返す「決済代行サービス」などがアクターになります。棒人間で描くことが多いため人だけに見えますが、外部のAPI、別システム、機器もアクターになれます。
アクターは人ではなく「役割」
アクター名には、具体的な個人ではなく、その人やシステムが果たす役割を書きます。
| 候補 | アクターか | 理由 |
|---|---|---|
| 購入者 | はい | 商品を検索し、注文する役割 |
| 運営担当者 | はい | 商品や注文を管理する役割 |
| 決済代行サービス | はい | 対象システムの外から決済結果を返す |
| 経理担当の田中さん | いいえ | 個人名ではなく「経理担当者」と書く |
| 注文画面 | いいえ | 対象システムの内側にある部品 |
| ネットショップ本体 | いいえ | 開発対象そのものはアクターではない |
同じ人が複数の役割を持つこともあります。小さな店舗で一人が「購入者」と「運営担当者」の両方になる場合でも、ユースケース図では役割を分けて考えます。
システムの境界でアクターが決まる
何がアクターかは、開発対象の境界によって変わります。
ネットショップを開発対象にすると、決済代行サービスは外側にあるためアクターです。一方、決済代行サービスそのものを開発対象にすれば、決済処理は内部の機能になり、カード会社や加盟店システムなどが外側のアクターになります。
アクターを決める前に「今回どこまでを作るのか」を四角いシステム境界として決めます。境界の外から、境界の中の機能へ働きかけるものがアクターです。
ユースケースとの違い
アクターは機能を使う側、ユースケースはシステムが提供する機能です。
| 種類 | 答える質問 | 例 |
|---|---|---|
| アクター | 誰が、または何が使うか | 購入者、運営担当者、決済代行サービス |
| ユースケース | システムで何ができるか | 商品を検索する、注文する、返金する |
「購入者が注文する」なら、購入者がアクター、注文するがユースケースです。この主語と動作の組で考えると分けやすくなります。
アクターを洗い出す理由
アクターは、要件の抜けを見つけるために使います。機能だけを列挙すると「返金機能が必要」で終わりますが、アクターから考えると次の問いが出ます。
役割ごとに利用する機能を並べると、権限、外部連携、例外処理の漏れを実装前に見つけられます。
もう一つの意味 アクターモデル
並行処理の話では、アクターは別の意味になります。アクターモデルのアクターは、自分専用の状態とメールボックスを持ち、届いたメッセージを順番に処理する実行単位です。Erlang、Elixir、Akkaなどで使われます。
| 用語 | いる場所 | 役割 |
|---|---|---|
| UMLのアクター | システムの外 | システムの機能を利用する |
| アクターモデルのアクター | プログラムの中 | メッセージを受けて状態を更新する |
周囲にユースケース図、要件、利用者という語があればUMLです。メールボックス、メッセージ、並行処理という語があればアクターモデルです。
アクターモデルの短い例
Elixirでは、状態をプロセスの内側に閉じ込め、外からはメッセージだけを送ります。
defmodule Counter do
def start(count \\ 0), do: spawn(fn -> loop(count) end)
defp loop(count) do
receive do
{:add, n} -> loop(count + n)
{:get, from} ->
send(from, count)
loop(count)
end
end
end共有状態を外から直接変更させないため、複数の処理が同時に同じ値を書き換える競合を避けやすくなります。
つまずきやすいところ
よくある質問
アクターとユーザーは同じですか
ユーザーは実際にシステムを使う人を指すことが多い言葉です。アクターは設計上の役割なので、人ではない外部システムも含み、一人のユーザーが複数のアクター役を持つこともあります。
システム管理者はアクターですか
対象システムの外から管理機能を使う役割ならアクターです。ただし「管理画面」や「管理機能」はシステム内部のため、アクターではなくユースケースや部品として扱います。
actorの英語の意味と関係がありますか
英語のactorには「行為者、役を演じるもの」という意味があります。UMLではシステムに対して特定の役割を演じるもの、アクターモデルではメッセージを受けて行動する実行単位、という共通イメージです。
覚え方
UMLなら「境界の外にいる役割」、並行処理なら「メールボックスを持つ実行単位」。まず周囲の文脈を見れば判別できます。