Phoenix と Elixir をインストールして ブログを作りはじめます

Tsukasa OISHI

ElixirErlangのVM上で動くプログラミング言語です。
確か5年くらい前に一度Erlangを勉強したことがあるのですが、関数型言語自体にはじめて触れたということや文法がちょっと馴染みのない感じだったこともあって、途中で挫折しました。
Elixirの作者の José Valim さんはRailsのコミッタでもあるので、Elixirの文法はRubyに似ています。また、このElixirで動くwebアプリケーションフレームワークが Phoenix になります。

まずはとっかかりとして、このブログ(kaeruspoon) 自体を Phoenix で実装していこうと思います。今日のところは素のPhoenixを起動してデフォルトのページをブラウザで見られるところまで進めてみました。

1. Elixir のインストール

まずは Elixir をインストールします。Macでは homebrew を使って簡単にインストールできます。

$ brew install elixir

これで Elixir がインストールできました。現時点のバージョンは1.0.5のようです。

$ elixir -v
Elixir 1.0.5

Rubyのirbと同様なものが iex という名前で用意されています。

$ iex
iex(1)> 1 + 1
2

Elixir自体はErlangのVM上で動作するので、もちろんErlangもインストールされています。

$ erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 7.0.2

2. Hex のインストール

Hex とは、ElixirErlang で使うパッケージ管理ツールです。Rubyでいうところのrubygemsですね。

$ mix local.hex

これでインスールできました。mix というのは Rubyの rake みたいなもののようです。
確認してみます。

$ mix hex
Hex v0.8.3
Hex is a package manager for the Erlang ecosystem.

Further information can be found here: https://hex.pm/docs/tasks

3. Phoenix のインストール

最新バージョンは Github上のPhoenix ( https://github.com/phoenixframework/phoenix )を確認してみてください。
現時点では0.16.1のようです。

Phoenix をインストールします。

$ mix archive.install https://github.com/phoenixframework/phoenix/releases/download/v0.16.1/phoenix_new-0.16.1.ez

4. node のインストール

Phoenixはアセット(javascriptとかcss)を扱うために brunch.io を使っています。このため、nodeもインストールしておきます。brunch.io を使わないのなら不要です。

$ brew install node

5. アプリケーションの作成

これで準備が完了しました。いよいよ、ブログを作るために Phoenixアプリを作成します。
ちなみにPhoenixはデフォルトで DBにPostgreSQLを使用します。今回はMySQLを使いたいので、以下のようにしてPhoenixアプリを作成します。
アプリの名前は kaeru_phoenix にします。

$ mix phoenix.new kaeru_phoenix --database mysql 

* creating kaeru_phoenix/config/config.exs
* creating kaeru_phoenix/config/dev.exs
* creating kaeru_phoenix/config/prod.exs
* creating kaeru_phoenix/config/prod.secret.exs
* creating kaeru_phoenix/config/test.exs
* creating kaeru_phoenix/lib/kaeru_phoenix.ex
* creating kaeru_phoenix/lib/kaeru_phoenix/endpoint.ex
* creating kaeru_phoenix/test/controllers/page_controller_test.exs
* creating kaeru_phoenix/test/views/error_view_test.exs
* creating kaeru_phoenix/test/views/page_view_test.exs
* creating kaeru_phoenix/test/views/layout_view_test.exs
* creating kaeru_phoenix/test/support/conn_case.ex
* creating kaeru_phoenix/test/support/channel_case.ex
* creating kaeru_phoenix/test/test_helper.exs
* creating kaeru_phoenix/web/channels/user_socket.ex
* creating kaeru_phoenix/web/controllers/page_controller.ex
* creating kaeru_phoenix/web/templates/layout/app.html.eex
* creating kaeru_phoenix/web/templates/page/index.html.eex
* creating kaeru_phoenix/web/views/error_view.ex
* creating kaeru_phoenix/web/views/layout_view.ex
* creating kaeru_phoenix/web/views/page_view.ex
* creating kaeru_phoenix/web/router.ex
* creating kaeru_phoenix/web/web.ex
* creating kaeru_phoenix/mix.exs
* creating kaeru_phoenix/README.md
* creating kaeru_phoenix/lib/kaeru_phoenix/repo.ex
* creating kaeru_phoenix/test/support/model_case.ex
* creating kaeru_phoenix/priv/repo/seeds.exs
* creating kaeru_phoenix/.gitignore
* creating kaeru_phoenix/brunch-config.js
* creating kaeru_phoenix/package.json
* creating kaeru_phoenix/web/static/css/app.css
* creating kaeru_phoenix/web/static/js/app.js
* creating kaeru_phoenix/web/static/js/socket.js
* creating kaeru_phoenix/web/static/assets/robots.txt
* creating kaeru_phoenix/web/static/assets/images/phoenix.png
* creating kaeru_phoenix/web/static/assets/favicon.ico

Fetch and install dependencies? [Yn] y
* running npm install && node node_modules/brunch/bin/brunch build
* running mix deps.get

We are all set! Run your Phoenix application:

    $ cd kaeru_phoenix
    $ mix ecto.create
    $ mix phoenix.server

You can also run your app inside IEx (Interactive Elixir) as:

    $ iex -S mix phoenix.server

いろいろファイルが用意されました。ファイル構成やそれぞれの意味については後日まとめてみます。
とりあえずデフォルトのページを表示してみましょう。
以下でサーバを起動できます。最初はいろいろとコンパイル処理が実施されます。

$ mix phoenix.server

ブラウザで http://localhost:4000 にアクセスしてみます。
Large

これで今回はおわりです。kaeru_phoenix はここで管理していきます。