Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

[Elixir]をこれから学ぶ人に向けてPhoenix v1.3とv1.4を同時並行で触れる環境構築

More than 1 year has passed since last update.

この記事は、「fukuoka.ex Elixir/Phoenix Advent Calendar 2018」の20日目になります。

昨日は、@piacere_exさんのBASIC以来、35年間プログラミングしてないIT企業社長が、ElixirでWebアプリを作ったでした。
本日は、ElixirとErlangバージョン管理の話しです。

この記事の構成

  1. 記事を書いた動機という名のポエム
  2. 記事の対象OS
  3. asdfのインストール
  4. asdf Erlang & Elixir のプラグインをインストール
  5. バージョン違いの環境の準備
  6. ① Phoenix v1.3の環境準備
  7. HEXのインストール
  8. Phoenix Frameworkをインストール
  9. ② Phoenix v1.4の環境準備
  10. 最後に

記事を書いた動機という名のポエム

以下、しばらくはポエムになりますので、本題を早く見たい方は飛ばしてください。w

最近、ElixirにハマってるYOSUKENAKA.meです。

という事で、最近は知り合いのママさんや高校生にElixir良いぜ!一緒に学ぼうぜ!と焚き付けて、Elixirすげーとか興奮しながら勉強会してますw

そんな事を、Twitterで興奮気味につぶやいていたら、ご縁あって、fukuoka.exに参加させて頂いてます。来年は、Elixirの修行をしに、福岡行こうと思います。

そして、先日のfukuoka.ex#17:Elixir実践テクニック公開します② のトラックAで紹介されたWebサービスバックエンドライブラリー Materiaというライブラリーが、今ちょうど作っていた認証系を既に簡単に揃えているというので、これは開発の短縮化できるじゃない!

ゲームで言うなら、チートですね。では、早速導入しようと思いましたが、僕の環境では使えませんでした。(T T)どうやら、以下の環境ではまだ対応してないようです。

Hex:    0.18.2
Elixir: 1.7.4
OTP:    21.1.4

上記に加えて、Phoenixフレームワークもv1.4の状態
かといって、v1.4もbrunchからWebpackに変更という事もあって、こっちも学習したいしなぁ。

という状況です。そこで、バージョン違いを混在させて、Phoenix Framework v1.3とv1.4をPCに混在した形で準備したいと思います。

記事の対象OS

mac OSX環境での構築について書いてます。

asdfのインストール

asdfの初期導入は、こちらの記事が参考になりました。
Elixirのバージョン管理環境をasdfを使って作った

そのため、解説は上記の記事を参考にください。
ここでは、簡単に手順だけ、記載したいと思います。

  1. 既にElixirをインストールして環境構築済みの方は、一度削除します。これから始める方は、この作業は不要になります。
$ brew uninstall --force erlang elixir
  1. ここからは、asdfのgithubのREADME通りに進めます。
$ brew install automake autoconf openssl libyaml readline libxslt libtool unixodbc

$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf

$ echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bash_profile
$ echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bash_profile

asdf Erlang & Elixir のプラグインをインストール

ターミナルを再起動して、次のコマンドを打ちます。

$ asdf plugin-add erlang
$ asdf plugin-add elixir

asdf plugin-listと打って、elixirやerlangが表示されれば成功です。

$ asdf plugin-list
elixir
erlang

バージョン違いの環境の準備

さて、いよいよ、erlangとelixirの2つの環境を準備したいと思います。
今回は、Materiaを導入できるバージョンの環境(Phoenix v1.3)と、新しいPhoenix v1.4が動く環境を2つ準備したいと思います。

Materiaの環境はこちらの記事を見ると以下のバージョンが前提のようですので、その構成を準備します。

Hex:    0.18.2
Elixir: 1.6.1
OTP:    20.2.4

まず、初めにフォルダ別で管理したいので、次のフォルダを作成しました。
※フォルダ名は、自分の管理しやすい名前で準備して大丈夫です。僕は以下のようにしました。

$ mkdir v1.6.1elixir
$ mkdir v1.7.4elixir

① Phoenix v1.3の環境準備

まず始めに、v1.6.1elixirフォルダから環境を作ります。

$ cd v1.6.1elixir
$ asdf list-all erlang
... 略
20.2.2
20.2.3
20.2.4
20.3
20.3.1
20.3.2
... 略

asdf list-all [名称]で バージョンの情報が列挙されます。
今回は、OTPが20.2.4のバージョンとなっているので、erlangは20.2.4をインストールします。

Elixirも同じようにlist-allで調べる事ができます。今回は、Materiaの環境に合わせてelixir 1.6.1にします。

asdf install erlang 20.2.4
asdf install elixir 1.6.1

インストールしたerlangとelixirはこのフォルダ内で有効にしたいので、次のコマンドを打ちます。

asdf local erlang 20.2.4
asdf local elixir 1.6.1

インストール状況を確認して見ましょう。asdf currentを入れて、set by ~となる.tool-versionsファイルがちゃんと、v1.6.1elixirにできてる事を確認しましょう。

$ asdf current
elixir         1.6.1   (set by /Users/username/v1.6.1elixir/.tool-versions)
erlang         20.2.4  (set by /Users/username/v1.6.1elixir/.tool-versions)

HEXのインストール

Elixir,Erlangのパッケージ管理ツールHexをインストールします。フォルダはv1.6.1elixirのままです。

$ mix local.hex

PhoenixFrameworkをインストール

HEXをインストールしたら、次にPhoenixFrameworkをインストールしましょう。

mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez

ここまで出来れば、Phoenix v1.3の環境構築は無事終了です。
最後に環境がちゃんとできてるか確認します。mix hex.infoのコマンドで以下が表示される事を確認してください。

$ mix hex.info
Hex:    0.18.2
Elixir: 1.6.1
OTP:    20.2.4

② Phoenix v1.4の環境準備

基本的に① Phoenix v1.3の環境準備と同じ手順で進めます。が、最後にちょっと付け足しの作業があります。
フォルダはv1.7.4elixirに移動し、下記のバージョンでインストールしました。

Hex:    0.18.2
Elixir: 1.7.4
OTP:    21.1.4

Phoenixフレームワークのインストール手順まで進めた後、追加で以下の事を行います。

asdf current.tool-versionsv1.7.4elixir/のフォルダにできてる事を確認します。

問題なければ、最後に以下のコマンドを実行します。

mix archive.install hex phx_new 1.4.0

これで、無事にPhoenix v1.3と v1.4の環境が作れました。

早速、それぞれのフォルダ内でプロジェクトを作って確認して見てください。

$ mix phx.new hello
$ cd hello
$ mix ecto.create
$ mix phx.server

無事にlocalhost:4000でサーバーが起動して入れば成功です。
※ ちなみに、Phoenix v1.3では少し、作業をしないとサーバーが起動せずにエラーになります。
解決方法はPhoenix 最初の第一歩 Mix phx.serverでerrorの解決方法に記載したので、コチラを確認ください。

最後に

Elixirで開発を楽しみたい仲間募集してます。また、毎週火曜日にオンラインやオフライン混在で勉強会してるので、
参加したい方、気軽にご連絡ください。

fukuokaex
エンジニア/企業向けにElixirプロダクト開発・SI案件開発を支援する福岡のコミュニティ
https://fukuokaex.fun/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away