アクターモデル
[Wikipedia|▼Menu]

アクターモデル(: actor model)とは、1973年カール・ヒューイット、Peter Bishop、Richard Steiger が発表した並行計算の数学的モデルの一種[1]。アクターモデルでは、並行デジタル計算の汎用的基本要素として「アクター」という概念を導入している。アクターモデルは並行性の理論的理解のフレームワークとして使われるほか、並行システムの実装の理論的基礎としても利用されてきた。
歴史

アクターモデルはそれ以前の計算モデルとは異なり、物理法則を発想の基本としている。他にも、LISP言語、Simula言語、ケーパビリティ・システムパケット通信、初期のSmalltalkなどの影響を受けている。アクターモデルは「数百・数千のマイクロプロセッサから構成され、個々にローカルメモリを持ち、高性能通信ネットワークで通信を行う並列コンピュータが近い将来登場するとの予測」から開発された[2]。その後、Webサービスメニイコアアーキテクチャを活用した超並行性にも範囲を広げてきた。

ヒューイットの1973年の論文に続いて、Irene Greif はアクターモデルの操作的意味論を開発した[3]。2年後、Henry Baker とヒューイットはアクターシステムの公理的法則群を発表した[4]。1981年、William Clinger は Power Domains に基づいたアクターモデルの表示的意味論を発表[2]。1985年、Gul Agha は Clinger の意味論に基づいた遷移ベースの意味論モデルを構築した[5]。これらにより、アクターモデル理論(英語版)が完成した。

アクターモデルをソフトウェアとして実装する作業は MIT の Message Passing Semantics Group で行われた。また、カリフォルニア工科大学の Chuck Seitz と MIT の Bill Dally に率いられたチームはアクターモデルに基づくメッセージパッシングを使用したコンピュータアーキテクチャを構築した。

日本では、米澤明憲らの研究が有名である。
基本概念

アクターモデルの基本は「全てのものはアクターである」という哲学である。これはオブジェクト指向プログラミングにおける「全てのものはオブジェクトである」という考え方と似ているが、オブジェクト指向ソフトウェアでは基本的に逐次的に実行するのに対して、アクターモデルでは本質的に並行性を備えている点が異なる。

アクターは並行的に受信するメッセージに対応した以下のような振る舞いを備えた計算実体(Computational Entity)である:

(他の)アクターに有限個のメッセージを送信する。

有限個の新たなアクターを生成する。

次に受信するメッセージに対する動作を指定する。

これらの振る舞いには逐次性は前提とされておらず、並列的にこれらを実行する。

他のアクターとの通信は非同期に発生する(すなわち、送信側アクターはメッセージが受信されるのを待たずに次の計算に移行する)。

メッセージを送信する相手のアクターはアドレスによって指定される(これをアクターの「メールアドレス」とも呼ぶ)。結果として、アクターはアドレスのあるアクターとのみ通信可能であり、他のアクターのアドレスは以下のような方法で獲得される:
受信したメッセージ内にアドレスが書いてある。

そのアクターが何らかの方法で既に相手のアドレスを知っている。

そのアクターは生成したアクターである。

アクターモデルは、アクター自体およびアクター間の計算の本質的並行性を特徴とし、メッセージ内にアクターのアドレスを含め、相互のやりとりは到着順が保証されない直接的非同期メッセージパッシングのみである。
形式体系

長年にわたり、アクターモデルを理解するための形式体系が開発されてきた。以下のようなものがある:

アクターシステムの法則
[4]

遷移意味論[5]

アクターモデルのメッセージパッシング機能を完全には形式化していない点でアクターモデルそのものには対応していない形式体系として、以下のようなものがある:

いくつかのアクター代数系[6][7][8]

応用

アクターモデルは、各種並行システムのモデリングや理解のフレームワークとして利用可能である。以下のような例がある:

TTCN(Testing and Test Control Notation)はアクターモデルにある程度基づいている。TTCN では、アクターとはテスト部品であり、パラレルテスト部品(PTC) と主要テスト部品(MTC)がある。テスト部品は(他のテスト部品やテストシステムと)メッセージを送受信し、通信相手をアドレスで識別する。各テスト部品は固有の動作ツリーを持ち、並行的に動作し、他のテスト部品を動的に生成する。組み込み言語機能により受信したメッセージの種類に対応した動作を記述できる。

アクターモデル以前

アクターモデルは、それ以前の以下のような計算モデルの上に構築された。
ラムダ計算
計算可能性を論じるときに使われる計算モデル
Simula
最初のオブジェクト指向言語。ただし、真の並行性はなく、コルーチンを使用している。
Smalltalk
アラン・ケイはヒューイットのPlannerに影響を受けてSmalltalk-71を考案したが、それとは別にSimulaLispLogoの要素と自分のメッセージパッシングのアイデアを組み合わせたSmalltalk-72をダン・インガルスらとともに開発していた。ヒューイットはAltoで動くSmalltalk-72のデモを見てそのアイデアに興味を引かれたが、メッセージパッシング方式の複雑さは気に入らなかった。メッセージパッシングに基づいた並行計算の数学的モデルはSmalltalk-72よりも単純化すべきであるとの考えが生まれた。なお、Smalltalk-72やそれ以降の-76、-80には、Simulaになかった特徴として、整数などの基本的データ型もメッセージの受け手とした点が挙げられる。
ペトリネット
アクターモデル以前に広く使われていた並行計算用モデル。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:38 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef