【フェニックス】

Phoenix とは?

最終更新:
💡 ElixirでWebを作り、画面の変化を届ける

Elixirで書かれたWebフレームワーク。通常のWebアプリの開発に加え、Channelsによるリアルタイム通信や、LiveViewによるサーバー主体の画面更新を提供する。

📌 このページのポイント
Phoenix LiveView:状態はサーバー側に最初はHTTPでHTMLを返すブラウザー画面表示を更新JavaScriptクライアントサーバーLiveView状態・描画差分を計算ElixirErlang VM操作イベント接続後のやり取り画面の差分ブラウザー側にもJavaScriptが動く性能や障害からの復旧は、処理・構成によって変わる。
LiveViewの概略。初回のHTML表示と接続後の画面更新を分けた。Erlang VMはサーバー側の実行環境で、ブラウザーを含まない。
ひよこ ひよこ
PhoenixってRuby on Railsみたいなもの?
ペンギン先生 ペンギン先生
Webアプリを作るフレームワークで、MVCなどRailsを知っていると馴染みやすい考え方もあるよ。PhoenixはElixirで書かれていて、ElixirはErlang VMの上で動くんだ。
ひよこ ひよこ
LiveViewって何?
ペンギン先生 ペンギン先生
画面の状態をサーバー側で持ち、操作に応じて変わった部分をブラウザーへ送る仕組みだよ。最初はHTTPでHTMLを返し、その後の接続では操作を受けて更新を届けるんだ。
ひよこ ひよこ
JavaScriptは全く使わないの?
ペンギン先生 ペンギン先生
ブラウザーではLiveViewのJavaScriptクライアントが動くよ。サーバー側のコードを中心に画面を作れるけれど、独自のブラウザー処理にはJavaScriptのフックなども使えるんだ。
ひよこ ひよこ
ペンギン先生 ペンギン先生
リアルタイムのやり取りを作る選択肢になるよ。PhoenixにはChannelsもあり、用途に応じて使える。図はLiveViewの操作と差分更新の向きを示しているんだ。
ひよこ ひよこ
たくさん接続しても絶対に落ちない?
ペンギン先生 ペンギン先生
接続数や応答性能は、処理内容、機器、構成によって変わるよ。LiveViewも通信が切れたり処理が失敗したりすると再接続する仕組みがある。特定の接続数や障害の影響ゼロを名前だけで保証はできないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Phoenix」って出てきたら「ElixirでWebアプリやリアルタイム機能を作るフレームワーク」と思えばだいたいOK!
📖 おまけ:英語の意味
「Phoenix」 = フェニックス(製品名)
💬 英語のphoenixは不死鳥を表す言葉だよ。ただし名前から、アプリが落ちないことや無条件に復旧することを保証するものではないんだ。

参考資料

← 用語集にもどる