Elixir + Phonenix でWebアプリ作る時の基本まとめ:環境構築
Elixir + Phoenixとはなにか
ElixirはErlangランタイム上で動作するプログラミング言語。
PhoenixはElixirで記述するWebフレームワーク。
ちょうどRubyとRailsのようなもの。
すでにRuby on RailsやNode.js + React.js・Vue.jsのようなWebフレームワークがあるのに何故また新しいフレームワークが必要なのか。
理由はこの動画によくまとまっています。
つまり、Railsはサーバーサイドテンプレートが主になり、ユーザー環境がインタラクティブじゃない、一方でReact.jsを使ったSPAならインタラクティブなユーザーエクスペリエンスが実現できるが実装は複雑で一筋縄じゃいかない。
Elixir + Phoenixならその間を取って、複雑さを最小限にしつつユーザーにリッチなエクスペリエンスを提供できるそうな。
サイト構成はSPAではなく、Railsのようにリソースごとにコントローラを作ってページ切り替えをしつつ、各ページ内の情報更新はSPAのようにリアルタイムにやっていく。
PhoenixのLiveViewを使えば、サーバーサイドでデータの更新を記述すればJS書かずにブラウザ上の表示を更新できる。
だけど、今まで出てきた多くのものがそうであったように、前評判で言われてたことが実際に手を動かしたらそんなに簡単じゃないことに気付かされることもある。
なので、まずは自分で手を動かしてやっていこうと思う。
今回はPhoenixを動かす前段階の環境構築をやっていく。
Elixir環境のインストール
Macの場合は
$ brew install elixir
で終わり。
以下はソースコードからインストールする手順。
Erlang/OTPのインストール
各ディストリビューションのパッケージから入れる場合はよしなに。私は通常、ソースコードからインストールします。
- Erlang/OTP公式サイトからソースコードを落とす。
- 解凍してディレクトリに入る。
$ tar xvzf otp_src_24.0.tar.gz $ cd otp_src_24.0
- ビルドを実行(私は
/usr/local/erlang
以下にバージョン番号でディレクトリを創ってそこにインストールしています)。$ ./configure --prefix=/usr/local/erlang/24.0 --enable-threads --enable-kernel-poll --disable-hipe --enable-shared-zlib --with-ssl --without-javac $ make
- インストール
$ sudo make install
- パスの設定
$ echo "export PATH=/usr/local/erlang/24.0/bin:\$PATH" >> ~/.zshrc $ source ~/.zshrc
- 動作確認上の画面が立ち上がったらCtrl-Cを2回叩いて抜ける。
% erl Erlang/OTP 24 [erts-12.0] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [jit] Eshell V12.0 (abort with ^G) 1>
Elixirのインストール
- ダウンロード
$ git clone https://github.com/elixir-lang/elixir.git $ cd elixir
- 最新バージョン確認最新の安定版は
$ git tag v1.11.0 v1.11.0-rc.0 v1.11.1 v1.11.2 v1.11.3 v1.11.4 v1.12.0 v1.12.0-rc.0 v1.12.0-rc.1 v1.12.1
v1.12.1
のようだ。 - ビルドとテスト
$ git checkout v1.12.1 $ make clean test
- 私は
/usr/local/elixir
以下にバージョン番号でディレクトリを作ってインストールする。$ sudo make install PREFIX=/usr/local/elixir/1.12.1
- パスの設定
$ echo "export PATH=/usr/local/erlang/1.12.1/bin:\$PATH" >> ~/.zshrc $ source ~/.zshrc
- 動作確認上の画面が立ち上がったらCtrl-Cを2回叩いて抜ける。
% iex Erlang/OTP 24 [erts-12.0] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [jit] Interactive Elixir (1.12.1) - press Ctrl+C to exit (type h() ENTER for help) iex(1)>
Phoenixのインストール
-
Phoenix公式サイトの左上で最新の安定版のバージョン番号を確認する。
- 今回は
1.5.9
だった。
- 今回は
- Phoenixをインストールする。
$ mix archive.install hex phx_new 1.5.9
Node.jsのインストール(Ubuntuの場合)
- パッケージの更新
$ sudo apt update
- 一旦 nodejsとnpmをインストールする(ただしこの段階では古い可能性がある)。
$ sudo apt install nodejs npm
- n packegeをインストール
$ sudo npm install n -g
- 最新の安定版をインストール
$ sudo n stable
- 古いnodeとnpmをアンインストール
$ sudo apt purge -y nodejs npm
- 一度ログインし直す。
PostgreSQLのインストール(Ubuntuの場合)
$ sudo apt install postgresql
以上。
inotify-toolsのインストール
$ apt-get install inotify-tools
Ubuntu以外のディストリビューションでの入れ方は以下。
以上で環境構築は終了です。お疲れ様でした。
次回は基本的なWebアプリの作り方をまとめていきます。
Discussion