9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Phoenixガイドラインを読んでみた(1) - Up And Running -

Last updated at Posted at 2016-04-18

はじめに

前回、Ubuntu16.04にPhoenixをセットアップしてみました。
今回は、Phoenixの公式ガイドラインを見ながら、構成などを確認していきます。
次回はガイドラインAdding Pagesです。

上、および、走ること

PhoenixフレームワークのUp And Runningの内容を確認していきます。
確認すると言っても、前回セットアップが終わってますので、以下の手順で最初のページ(localhost:4000)が表示されるようになるはずです。

なお、一部Adding Pagesの内容も先取りしてます。

$ mix phoenix.new hello_phoenix
$ cd hello_phoenix
$ mix ecto.create
$ mix phoenix.server

概念

  • Endpoint リクエストを処理するための入り口。Plugの管理や、Routerへのディスパッチを行う
  • Router リクエストを解析して、適切なController/Actionにディスパッチする。パスやURL生成などのヘルパー提供。リクエストを処理するPipelineを定義する
  • Pipeline Plugをグループ化して、ルートのセット毎に適用できる
  • Controller リクエストを処理するAction関数を提供する
  • Action データを準備してViewに渡す。Viewを介してレンダリングする。リダイレクトを行う
  • View Templateをレンダリングする。表示レイヤ。表示のためのヘルパ関数提供
  • Template その名の通り。事前のコンパイルされているので早い
  • Channel 双方向通信のためのソケット管理。Controllerに同様の役割
  • PubSub PubSub用の仮想レイヤーを提供

その他ライブラリ

  • Plug

  • WebApplicationを作るためのモジュール群

  • 単純で軽量なので、Pipelineにおいて複数を階層的に配置することが可能

  • 認証、パラメータの前処理、レンダリングまでいろいろ書くことができる

  • 現在はCowboy専用

  • Ecto いわゆるDBラッパー

  • Repo DBへの接続を表す

  • Model データモデル

  • Query ModelとRepoをつなぐquery

  • Changeset Modelのデータをアプリケーションで使う前に加工するための定義。型変換やバリデーションなど

ソースツリー

ディレクトリhello_pheonix直下は、次のようになっています。

├── README.md
├── _build/
├── brunch-config.js
├── config/
├── deps/
├── lib/
    ├── hello_phoenix
    │   ├── endpoint.ex
    │   └── repo.ex
    └── hello_phoenix.ex
├── mix.exs
├── mix.lock
├── node_modules/
├── package.json
├── priv/
    ├── gettext/
    │   ├── en/
    │   └── errors.pot
    ├── repo/
    │   ├── migrations/
    │   └── seeds.exs
    └── static/
        ├── css/
        ├── favicon.ico
        ├── images/
        ├── js/
        └── robots.txt
├── test/
└── web/
  • _build/ ビルドした結果の出力先
  • brunch-config.js brunch.ioのconfigファイル
  • config/ アプリケーションの環境(devとかprod)共通設定と、環境別設定の配置先
  • deps/ erlang/elixirの依存ライブラリの展開先
  • lib/ Endpointなどを提供。web/が更新を検知すると自動的にビルドするのに対して、libは更新を自動的には検知しない
  • mix.exsmix.lock mix用ファイル
  • node_modules/ Node.js用ファイル
  • package.json npm用ファイル
  • priv/ 静的リソースの配置場所。ビルド時に必要であればweb/以下にコピーされる
  • test/ unittest用
  • web/ メインとなる作業場所。下記参照

ソースツリー(web)

hello_phoenix/web/
├── channels/
│   └── user_socket.ex
├── controllers/
│   └── page_controller.ex
├── gettext.ex
├── models/
├── router.ex
├── static/
│   ├── assets/
│   ├── css/
│   ├── js/
│   └── vendor/
├── templates/
│   ├── layout/
│   └── page/
├── views/
│   ├── error_helpers.ex
│   ├── error_view.ex
│   ├── layout_view.ex
│   └── page_view.ex
└── web.ex
  • channels/ Channel用ファイルを格納
  • controllers/ Controller用ファイルを格納。開発(dev)環境では、リクエスト時に更新があれば自動的に再ビルドされる(template, viewも同様)
  • gettext.ex I18N用
  • models/ Model用ファイル
  • router.ex Routerファイル
  • static/ privディレクトリからビルド時に必要なファイルがコピーされる
  • template/ Template用ファイル。自動再ビルドの対象
  • view/ View用ファイル。自動再ビルドの対象
  • web.ex ControllerやViewといったモジュールの定義を行うファイル。use HelloPhoenix.Web, :controllerのように使用する

とりあえず間違いがあれば後で修正・追記する

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?