Closed12

Elixirで同時編集可能なマークダウンエディタを作ってみる

Kaikei EzakiKaikei Ezaki

Elixir入門と同時にPhoenixも入門。
Phoenixのお作法がわからず辛い。一度にまとめて始めすぎか。

Kaikei EzakiKaikei Ezaki

画像のように、templatesディレクトリにテンプレートを置いた場合には、

defmodule MacrophyllaWeb.Page.TheRoomView do
  use MacrophyllaWeb, :view
end

lib/macrophylla_web/templates/page/the_room

としなければならない。
あと、/views, /templates, /controller では同一のページではMVC各ファイルの名前を共通にしつつ、モジュールはキャメルケース、ファイル名はスネークケースにしてやる必要がある。

Kaikei EzakiKaikei Ezaki

templatesディレクトリの中はディレクトリ自体をネストさせてはいけないっぽい
設計として、うまく使いまわせるテンプレートを分割して作成し、それを組み合わせるのが基本?

Kaikei EzakiKaikei Ezaki
defmodule MacrophyllaWeb.TheRoomController do
  use MacrophyllaWeb, :controller

  def show(conn, _params) do
    {ok, list} = :inet.getif
    IO.inspect Map.fetch(list, :ok)
    render(conn, "the_room.html")
  end
end

Erlangの:inet.getifの返り値がどんな型かわからず詰まっている。
マップやリストの操作を理解していない。

Kaikei EzakiKaikei Ezaki
defmodule MacrophyllaWeb.TheRoomController do
  use MacrophyllaWeb, :controller

  def show(conn, _params) do
    {:ok, list} = :inet.getif
    IO.inspect Enum.at(list, 0)
    render(conn, "the_room.html")
  end
end

できた。GitHubのソースを最初から漁れば良かった…

Kaikei EzakiKaikei Ezaki

良さげな本というか定番の入門書籍を見つけた。

まずはElixir自体に慣れることから始める。Phoenixhは自分にとって大きすぎるので、まずは基礎から。

Kaikei EzakiKaikei Ezaki

Elixirをやり始めて衝撃的だったこと。
この左辺と右辺の構造を比較し同じであれば値をセットする処理を、パターンマッチと呼ぶらしい。
今までのやり方(主にGo)と全く異なるので驚いた。

list = [1, 2, 3]
[a, b, c] = list
a
b
c

[1, 2, 3]
[1, 2, 3]
1
2
3

Kaikei EzakiKaikei Ezaki

Tailwind CSSでゴリゴリ好みのスタイルにしていけることがわかったので、捗っている。

このスクラップは2022/04/27にクローズされました