【エリクサー】

Elixir(エリクサー) とは?

最終更新:
💡 小さな仕事役が、メッセージで協力する言語

Erlangの仮想マシンBEAM上で動くプログラミング言語。軽量なプロセスとメッセージのやり取りを使い、並行処理や障害からの復旧を設計できる。ウェブ以外にも使う。

📌 このページのポイント
Elixir:小さな仕事役が協力するSupervisor(監督役)復旧の方針を決める仕事役A軽量プロセス仕事役B軽量プロセス仕事役C軽量プロセスメッセージを送って連携失敗したときの再起動は方針と設定によって変わるOSのプロセスとは別の実行単位
監督役と軽量プロセスの関係の例。監督の線と、メッセージの矢印を分けています。
ひよこ ひよこ
Elixirは、どんな言語?
ペンギン先生 ペンギン先生
Erlangの仮想マシンBEAM上で動く言語だよ。軽量なプロセスに仕事を分け、メッセージを送り合って協力させられる。ここでいうプロセスは、OSのプロセスとは別の実行単位なんだ。
ひよこ ひよこ
処理は、全部同時に走る?
ペンギン先生 ペンギン先生
並行して進められるように設計するよ。どれだけ同時に実行できるかは、CPUや実行環境、処理の内容による。プロセスの数だけCPUが増えるわけではないんだ。
ひよこ ひよこ
一つ失敗しても、絶対に大丈夫?
ペンギン先生 ペンギン先生
プロセスは標準では状態を共有しないので、障害を分けて考えやすいよ。ただしリンクされたプロセスには終了が伝わり得る。Supervisorという監督役で、再起動する条件や範囲を設計するんだ。何もしなくても全体が無停止になる、という意味ではないよ。
ひよこ ひよこ
どんな場面で使う?
ペンギン先生 ペンギン先生
Phoenixを使うウェブ開発や、Nervesを使う組み込み開発などがあるよ。ウェブ専用の言語ではない。データの変換をパイプ演算子でつなぐ書き方も特徴で、公式サイトにもその例が載っているんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Elixir」って出てきたら「軽量プロセスとメッセージで、並行処理を組み立てる言語」と思えばだいたいOK!
📖 おまけ:英語の意味
「Elixir」 = プログラミング言語の名前
💬 「万能薬だから絶対に落ちない」という意味ではないよ。Erlangの実行環境を使い、障害への備えも設計していくんだ。

参考資料

← 用語集にもどる