どうも、靖宗です。
前回まではElixir入門ということでやっていましたが、今回からはElixirで書かれているPhoenixを学習していきたいと思います。
まだ触ってないのでなんとも言えませんが、基本的にはElixirがざっくりと分かっている想定で記事を書いていきます。
Phoenixとは
PhoenixはElixirで書かれたMVCパターンを用いたフレームワークです。いわゆるRuby on RailsやPythonのDjangoにあたるものです。
一応公式ドキュメントのうたい文句としては「高い生産性と高いパフォーマンス」を両立するものだそうです。
Phoenixを構成するもの
- Endpoint
- Router
- Controlles
- Views
- Templates
- Channels
- PubSub
だそうです。大体名前で想像はつきますが、各々はチュートリアルを進めて行くにあたって詳しく見ていきましょう。
Phoenix Layers
Phoenixはいろんな既存モジュールも組み合わせて機能を実装しています。
Coboy
ウェブサーバーだそうです。
Plug
たぶん各モジュールの機能をうまいこと構成してくれる便利ツール。よく分からないのでこれも追々。
Ecto
データベースラッパーだそうです。コレのおかげでSQLとか書かなくてもよくなるはず。
Phoenixのインストール
早速利用できるようにインストールしていきます。
Elixirは既にインストール済みとします。
Hexをインストールするように書かれていましたが、多分最新のElixir(記事を記載している時点では1.8)以上だと既に入ってると思います。
なので早速Phoenixをインストールします。
PS > mix archive.install hex phx_new 1.4.1 # 2019/02現在でPhoenixはv1.4.1 Resolving Hex dependencies... Dependency resolution completed: New: [32m phx_new 1.4.1[0m * Getting phx_new (Hex package) All dependencies are up to date Compiling 10 files (.ex) Generated phx_new app Generated archive "phx_new-1.4.1.ez" with MIX_ENV=prod Are you sure you want to install "phx_new-1.4.1.ez"? [Yn] Y * creating /.mix/archives/phx_new-1.4.1
これでインストール完了です。早い!
Plug,Cowboy,Ectoなどは勝手に入るようです。
PostgreSQLのセットアップも必要ですが、Dockerで立てておくことにします。
ユーザー名とパスワードは省略して、ユーザー名postgres
、パスワード無しでログインできるコンテナを作成します。
PS > docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES PS > docker run --name ph_psql -p 5432:5432 -e POSTGRES_PASSWORD=postgres -d postgres 49c57a5bb7f40366888e1a57efddc761c3a1c6b2b91794af5711e62bdb95edb2 PS > docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 49c57a5bb7f4 postgres "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 0.0.0.0:5432->5432/tcp ph_psql
2019/02/25 コマンド修正
一応ちゃんとPostgreSQLに入れるか試しておきます。
PS > docker exec -it ph_psql psql -U postgres psql (10.5 (Debian 10.5-1.pgdg90+1)) Type "help" for help. postgres=#
問題無さそうです。
嘘です、ユーザー名とパスワードが両方postgres
じゃないといけないのでパスワードも設定する必要があります。
というか折角なので独自のユーザー名とパスワード(両方ともelixir
)を試してみます。
docker run --name ph_psql -p 5432:5432 -e POSTGRES_USER=elixir -e POSTGRES_PASSWORD=elixir -d postgres
ひとまずこれでPhoenixを動かす準備はできてるようです。
次回はHelloWorldを実行したいと思います。