【アーラン】

Erlang(アーラン) とは?

最終更新:
💡 小さな仕事を分けて、メッセージで連携

多数の処理を独立したプロセスとして動かし、メッセージで連携させるプログラミング言語。通信システムの研究から生まれ、OTPの監視・再起動の仕組みと合わせて、障害に対応するシステムを設計できる。

📌 このページのポイント
Erlang:仕事を分けて連携するスーパーバイザー設定に従い監視・再起動受付の仕事プロセスA計算の仕事プロセスB監視依頼 →← 結果再起動後のデータや仕事の復旧も設計
監視の線と、メッセージの矢印を分けた例。自動再起動には設定と上限があり、以前の状態が必ず戻るとは限りません。
ひよこ ひよこ
Erlangって、どんな言語なの?
ペンギン先生 ペンギン先生
通信システムを作りやすくする研究から、エリクソンで生まれた言語だよ。多数の仕事を小さなプロセスに分け、同時に進める仕組みが特徴なんだ。関数型の言語で、プロセス同士はメッセージを送って連携するよ。
ひよこ ひよこ
プロセスって、OSのプロセスと同じ?
ペンギン先生 ペンギン先生
Erlangの実行環境が管理するプロセスだよ。OSのプロセスを仕事ごとに作るわけではない。たとえば受け付けと計算を別のプロセスにし、依頼や結果をメッセージで渡す。各プロセスが受信したメッセージを処理するので、仕事の役割を分けやすいんだ。
ひよこ ひよこ
どうして「Let it crash」って言うの?
ペンギン先生 ペンギン先生
一部のプロセスが失敗することを前提に、監視と復旧を設計する考え方だよ。OTPのスーパーバイザーは、子プロセスを起動・監視し、設定に従って再起動する。でも「エラーを無視していい」という意味ではない。原因の調査や、再実行してよい仕事かどうかの設計も必要なんだ。
ひよこ ひよこ
使えば、システムが絶対に止まらなくなる?
ペンギン先生 ペンギン先生
そこは保証できないよ。繰り返し同じ理由で失敗したら、再起動の上限を超えてスーパーバイザー自体が停止することもある。再起動しただけでは以前の状態や途中の処理が戻らない場合もあるので、データの保存、再送、機器の故障への対応なども別に考えるんだ。
ひよこ ひよこ
Elixirと、どういう関係があるの?
ペンギン先生 ペンギン先生
ElixirはErlangの実行環境で動き、OTPの仕組みも使う別の言語だよ。Erlangのプロセスや監視の考え方を知ると、共通する実行環境の理解にも役立つ。どちらを選ぶかは文法だけでなく、使いたいライブラリやチームの経験も含めて考えよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Erlang」って出てきたら「小さな仕事を分けて、メッセージで連携させる言語」と思えばだいたいOK!
📖 おまけ:英語の意味
「Erlang」 = 数学者Agner Erlangにちなむ名前
💬 数学者Agner Erlangにちなむ名前だよ。公式FAQでは「Ericsson Language」に似た響きも認めているんだ。

参考資料

← 用語集にもどる