nikkie-ftnextの日記

イベントレポートや読書メモを発信

WEB+DB PRESS Vol.127の「作って学ぶPhoenix」で手を動かすために、Elixirの環境を構築する(macOS) #wdpress

はじめに

毎年少なくとも言語を1つ学習する。(『達人プログラマー 第2版』第1章 6 より)

Python大好き、nikkieです。

達人プログラマーのこの一節はよく引かれますよね。
私は「とにかくPythonのことをどこまでも知りたい!」という感じなのですが、このたび訳あってElixirの環境構築をしました。
もう一度やるときに参照して楽できるよう、自分用のメモとしてアウトプットします。

目次

WEB+DB PRESS Vol.127

2022年2月発売の号です(執筆時点の最新はVol.128)。

ここで取り上げるPhoenixの特集の他、

  • 実践リファクタリング 凝集度と結合度を学び,保守性と生産性を高める
  • 入社した会社にすばやく適応する 事業構造,カルチャー,コードの把握

といった特集があります。
また、連載「現場のPython」は komo_fr さんによる「データサイエンスのためのテスト入門」1でした2

特集2 Elixirによる高速なWeb開発! 作って学ぶPhoenix

本特集では,ElixirとPhoenixでWebアプリケーションを開発する方法を解説します。

ちょうどPhoenixというWebアプリケーションフレームワーク気になっていたタイミングで、直近のWEB+DB PRESSで取り上げられているのに気づき、読んでみることにしました。

特集ではrealworld3を題材に、PhoenixでWebアプリを作ります!

ソースコードはこちら:

環境構築!

Elixirのインストールからスタートです。
※ちなみに、Elixirの文法もよく分かっていません。

特集によると

asdfのようなパッケージマネージャを用いてインストールすることをお勧めします。(p.136)

とのことなので、オススメにならって環境構築しました。
初めてのasdf、ワクワクです!

手順

  1. asdfのインストール
  2. asdfのpluginのインストール(erlang, elixir)
  3. asdferlang, elixirをインストール

環境構築コマンド覚書

開発環境情報

  • macOS 10.14.6 (古いOSとなっています)
  • Homebrew 3.4.6

1. asdfのインストール

Getting Started | asdf (☆)に沿って進めます。

macOSではHomebrewを使うと

brew install asdf

でインストールできます(リンク先の1,2の部分)。

リンク先3の部分にある、シェル起動時に読み込ませる設定も実施します。
Bash & Homebrew (macOS)」に沿って、~/.bash_profileを編集しました。

これでasdfコマンドが使えるようになりました!

$ asdf --version
v0.10.0

2. asdfのpluginのインストール

(☆)の4に該当します。

elixirだけでなくerlangプラグインインストールします。

asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git
asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git

asdf plugin listでインストールされたことを確認できました。

3. asdferlang, elixirをインストール

(☆)の5, 6に相当します。

環境構築時(2022/04時点)の最新バージョンを指定しました。

asdf install erlang 24.3.3
asdf install elixir 1.13.4

asdf list elixir allのようにして、インストール可能なバージョンを確認できます。

最後に、使うelixirのバージョンを指定します。
localで作業ディレクトリごとに違うバージョンも指定できますが、やりたいことは特集を体験するだけなのでglobalで十分そうと判断しました。

asdf global elixir 1.13.4

Elixirがインストールされています!🙌

$ elixir --version
Erlang/OTP 24 [erts-12.3.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit]

Elixir 1.13.4 (compiled with Erlang/OTP 22)

終わりに

asdfを使って、Elixirのインストールができました。
これでPhoenixの特集をバリバリ進められます!

asdfは初めて触りましたが、なかなか好感触です。
「Manage multiple runtime versions with a single CLI tool, extendable via plugins」を謳うだけあり、「pyenvよりもasdfを使ってみたいな」と思いました。
pyenvだとPythonの管理しかできないですが、asdfだとPythonだけでなくElixirも他の言語も管理できると思っていて、それが魅力的です。

この環境構築の伸びしろポイントとしては、Pythonでいうvenv的なものを知りたいですね。
Elixirを使った開発が全然分かっていないのですが、いまのままだと、Elixir 1.13.4で複数のPhoenixのバージョンを使い分けられないんじゃないかと思っています。

ここで共有した手順で開発環境は構築できました。
近いうちにmix releaseの成果物を動かすまでの手順4を共有予定です。


  1. PyCon JP 2020の「NumPy/pandas使いのためのテスト自動化入門」のアップデート版という印象です。

  2. Medium.com のクローンアプリをバックエンド・フロントエンドの多様な組合せで作るための作り方のリポジトリのようです。