【エリクサー】

Elixir(エリクサー) とは?

💡 何百万もの処理を同時にさばく「不死身」の言語
📌 このページのポイント
Elixir → BEAM上の軽量プロセス並行処理 BEAM(Erlang VM) 軽量プロセス・ホットコードスワップ・耐障害性 スーパーバイザー(監視) プロセス A プロセス B プロセス C ✕ 障害 プロセス D プロセス E 自動再起動 正常 正常 障害→復旧 影響なし 影響なし
Elixir の軽量プロセスとスーパーバイザーによる耐障害性
ひよこ ひよこ

Elixir ってゲームのアイテムみたいな名前だね!どんな言語なの?

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

その名の通り「万能薬」のような言語だよ。特に並行処理、つまり大量の処理を同時にこなすのが得意なんだ。Erlang VM という電話交換機のために作られた超堅牢な仮想マシンの上で動くから、とにかく落ちにくいのが特徴だよ

ひよこ ひよこ

電話交換機のための仮想マシン?なんでそれがWebに使われてるの?

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

電話って何百万件もの通話を同時に処理しなきゃいけないし、一つの通話が切れても他に影響しちゃダメだよね。その要件がWebサーバーにピッタリなんだ。チャットアプリやリアルタイム通知など、大量の同時接続を扱うサービスに最適だよ

ひよこ ひよこ

Phoenix フレームワークってよく聞くけど、どういうもの?

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

Ruby on Rails に影響を受けたWebフレームワークで、LiveView という機能を使うとJavaScriptをほとんど書かずにリアルタイムなUIが作れるんだ。サーバー側で状態を管理してWebSocketで差分だけ送る仕組みで、開発体験がとてもいいよ

ひよこ ひよこ

関数型って聞くと難しそうだけど、書きやすいの?

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

Elixir は Ruby に似た文法を採用してるから、他の関数型言語よりずっと読みやすいよ。パイプ演算子(|>)でデータの変換を順番につなげて書けるのが特徴的で、処理の流れが左から右に読めるからとても直感的なんだ

ひよこ ひよこ

どんな企業が使ってるの?

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

Discord が数百万人の同時接続を Elixir でさばいてるのが有名だね。他にも Pinterest や Pepsi など大手企業での採用実績があるよ。日本でも注目度が上がっていて、特にIoTやリアルタイム通信の分野で採用が増えてきてるんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Elixir」って出てきたら「並行処理に強くて落ちにくい関数型Web言語」と思えればだいたいOK!
📖 おまけ:英語の意味
「Elixir」 = 万能薬・錬金術の霊薬
💬 ゲームでおなじみの「エリクサー」と同じ単語だよ。並行処理の難しさを「癒してくれる」万能薬というニュアンスが込められてるんだ
← 用語集にもどる