Phoenix は、ElixirおよびErlang BEAMランタイム上に構築された、高生産性・高信頼性を誇るWebフレームワークです。
クイックスタート(Quickstart)
# HexパッケージマネージャーとPhoenixインストーラーの導入
mix local.hex
mix archive.install hex phx_new
# PostgreSQL対応の新規Phoenixアプリの生成
mix phx.new my_app
# 開発サーバーの起動
mix phx.server
ディレクトリ構成(Application Directory Layout)
my_app/
├── assets/ # フロントエンドアセット(esbuild, Tailwind CSS)
├── config/ # 環境別設定ファイル(dev, test, prod)
├── lib/
│ ├── my_app/ # コアビジネスロジックとEctoスキーマ
│ ├── my_app.ex
│ └── my_app_web/ # Webプレゼンテーション層(コントローラー、ビュー、ルーター)
│ ├── controllers/
│ ├── router.ex
│ └── endpoint.ex
├── priv/
│ └── repo/ # データベースマイグレーションおよびシードデータ
└── test/ # ExUnitテストスイート
コントローラーとパイプライン(Controllers & Pipelines)
PhoenixはHTTPリクエスト変換の基盤構造体として Plug.Conn を使用します:
defmodule MyAppWeb.UserController do
use MyAppWeb, :controller
def show(conn, %{"id" => id}) do
user = MyApp.Accounts.get_user!(id)
conn
|> put_status(200)
|> render("show.html", user: user)
end
def api_index(conn, _params) do
users = MyApp.Accounts.list_users()
json(conn, %{data: users})
end
end
ジェネレーターとコンテキスト(Generators & Contexts)
# 完全なHTML CRUDコンテキスト、スキーマ、コントローラーの生成
mix phx.gen.html Accounts User users name:string email:string:unique
# JSON APIリソースの生成
mix phx.gen.json Catalog Product products title:string price:decimal
# データベースマイグレーションの実行
mix ecto.migrate