【あくたーもでる】

アクターモデル とは?

💡 メッセージを投げ合う独立した役者たち、共有メモリなしの並行処理
📌 このページのポイント
アクターモデル アクターA 状態 + 振る舞い アクターB 状態 + 振る舞い アクターC 状態 + 振る舞い メッセージ メッセージ 独立した状態 各アクターが 自分の状態を管理 メッセージ通信 共有メモリなし ロック不要 並行・分散 数百万アクターを 同時に稼働可能 代表例: Erlang/OTP、Akka
アクターモデルのイメージ
ひよこ ひよこ

アクターモデルってどんな仕組みなの?

ペンギン先生 ペンギン先生

独立した「アクター」がたくさんいて、それぞれがメールボックスを持ってるんだ。アクター同士はメッセージを送り合って通信する。直接データを共有しないのがポイントだよ

ひよこ ひよこ

共有しないって、不便じゃないの?

ペンギン先生 ペンギン先生

むしろ安全なんだ。共有メモリがあるとロックが必要で、デッドロックレースコンディションの温床になる。メッセージパッシングなら、そういう問題がそもそも起きにくいよ

ひよこ ひよこ

どんなところで使われてるの?

ペンギン先生 ペンギン先生

Erlangが代表格で、WhatsAppやRabbitMQの裏側で動いてる。数百万の同時接続を安定して処理できるのはアクターモデルのおかげだね。Javaの世界ではAkkaが有名だよ

ひよこ ひよこ

デメリットはないの?

ペンギン先生 ペンギン先生

メッセージの順序保証やデバッグが難しいのが課題だね。あと、単純な処理に対してはオーバーエンジニアリングになることもある。Erlang/OTPの「Let it crash」哲学は、障害を前提にした設計として今でも参考にされてるよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「アクターモデル」って出てきたら「メッセージのやり取りで並行処理するモデル」と思えればだいたいOK!
📖 おまけ:英語の意味
「Actor Model」 = 役者モデル
💬 Actor(役者)がそれぞれ独立して演技しながら、メッセージで連携するイメージだよ
← 用語集にもどる