後発での失敗は再起不能と思え
Advent Calendar 2022 39日目1の記事です。
I'm looking forward to 12/25,2022
私のAdvent Calendar 2022 一覧。
はじめに
Elixirを楽しんでいますか
本日は、Mix.install/2のサンプル集をご紹介します。
Another day, another Mix.install example: ExDoc! https://t.co/GCAvJfEnHu
— Wojtek Mach (@wojtekmach) February 8, 2022
This one might eventually be useful for submitting bug reports. It uses private APIs so not quite yet though.
Elixirの作者、José Valimさんがリツイートしています。
HTTP Clientのチョ〜新星! Reqの作者、Wojtek Machさんの責任編集です。
リポジトリは、mix_install_examplesです。
以下、紹介をいたします。
What's Mix.install/2 ?
Elixir 1.12から追加されました。
Elixirでライブラリ(Hex)を追加するのは、1.11まではmix new
でプロジェクトを作らないといけないなど、ひと手間必要でした。
Mix.install/2を使うことで、ちょっとした1ファイルで収まるようなスクリプトを書く際に.exs
のみで完遂できるようになりました。
具体例
具体例です。
私の記事をよく読んでくださる方には食傷気味かもしれません。
いつものサンプルです。
Qiita APIを使わせていただいて、Elixir
タグがついた最新の記事を20件取得しています
Mix.install [{:req, "~> 0.2.1"}]
"https://qiita.com/api/v2/items?query=tag:Elixir"
|> URI.encode()
|> Req.get!(finch_options: [pool_timeout: 50000, receive_timeout: 50000])
|> Map.get(:body)
|> Enum.map(& Map.take(&1, ["title", "url"]))
Qiitaさん、いつもありがとうございます!!!
mix_install_examples
2022/02/09 04:01現在、20個の.exs
があります。
それぞれおもしろそうです2。
今日は直感でおもしろそうだとおもったものを動かしてみることにします。
ファイル数のカウント
ちなみに、.exs
の数は以下のようにして数えました。
$ iex
iex> File.ls! |> Enum.count(&String.ends_with?(&1, ".exs"))
20
いつでもElixirを
$\huge{Enjoyします!!!}$
単に、私に芸がないだけでもあります。
-
ls -1 | wc -l
を私が覚えられない - 拡張子でFilterするやり方がわからないし、調べる気がない
phoenix.exs
おもしろそうなサンプルってことで、今日はPhoenixを選びます。
以下、そのまま掲載します。
# https://gist.github.com/Gazler/b4e92e9ab7527c7e326f19856f8a974a
Application.put_env(:phoenix, :json_library, Jason)
Application.put_env(:sample, SamplePhoenix.Endpoint,
http: [ip: {127, 0, 0, 1}, port: 5001],
server: true,
secret_key_base: String.duplicate("a", 64)
)
Mix.install([
{:plug_cowboy, "~> 2.5"},
{:jason, "~> 1.0"},
{:phoenix, "~> 1.6"}
])
defmodule SamplePhoenix.SampleController do
use Phoenix.Controller
def index(conn, _) do
send_resp(conn, 200, "Hello, World!")
end
end
defmodule Router do
use Phoenix.Router
pipeline :browser do
plug(:accepts, ["html"])
end
scope "/", SamplePhoenix do
pipe_through(:browser)
get("/", SampleController, :index)
# Prevent a horrible error because ErrorView is missing
get("/favicon.ico", SampleController, :index)
end
end
defmodule SamplePhoenix.Endpoint do
use Phoenix.Endpoint, otp_app: :sample
plug(Router)
end
{:ok, _} = Supervisor.start_link([SamplePhoenix.Endpoint], strategy: :one_for_one)
Process.sleep(:infinity)
これを動かしてみます。
$ elixir phoenix.exs
Visit: http://localhost:5001
おー、これが最小限のPhoenixアプリということかー!!!
Phoenixアプリの毛をむしり取って、丸裸にしたときに最後に残るものがコレだと言えそうです!!!
Wrapping up 



Enjoy Elixir
$\huge{Enjoy\ Elixir🚀}$
今回は、mix_install_examplesのご紹介をしました。
今後も他のサンプルをご紹介していきます。
また、シンプルでいい例をおもいついたら、プルリクを送ってみるのはいいかもしれません。
私は、おもいついた場合には、プルリクを送ってみる気でいます
以上です。
付録
以下、付録です。
Elixirの誕生日は、2012年5月24日です。
そのため、今年の2022年5月24日は10周年を迎えます。
iex> Date.diff(~D[2022-05-24], ~D[2022-02-08])
105
そうそう!
2月24日発売予定のWEB+DB PRESSで、ElixirとPhoenixの特集がでますよ〜
Elixir、Phoenixをはじめられたばかりの方も、腕におぼえがある方も、どんなものなのかなあと様子見をきめこんでいる方も、
つまりは
$\huge{全人類のみなみなさま!!!}$
お手にとって、お楽しみください!!!
We, @tamanugi @torifukukaiou @the_haigo @mokichi_s12m including me, wrote featured articles for WEB+DB PRESS Vol.127 about Elixir and Phoenix! It's being published on 24, Feb.https://t.co/UPNiVU1zG9
— 栗林健太郎 (@kentaro) February 4, 2022
Elixir
最後の最後に、Elixirについて紹介します。
- |>でスイスイ、プログラミングしていくことができる素敵なプログラミング言語です
- さっそくプログラムの例を示します
-
Qiita APIを使わせていただいて、
Elixir
タグがついた最新の記事を20件取得しています - ここでは雰囲気をつかんでいただければ大丈夫です
Mix.install [{:req, "~> 0.2.1"}]
"https://qiita.com/api/v2/items?query=tag:Elixir"
|> URI.encode()
|> Req.get!(finch_options: [pool_timeout: 50000, receive_timeout: 50000])
|> Map.get(:body)
|> Enum.map(& Map.take(&1, ["title", "url"]))
Webアプリケーションを楽しむなら
IoTを楽しむなら
AIを楽しむなら
もっとElixirのことを知りたい方へオススメの書籍
- プログラミングElixir(第2版) -- オーム社
- Elixir実践ガイド -- インプレス
- アルケミスト − 夢を旅した少年 -- KADOKAWA
コミュニティ
-
elixir.jp Slack workspaceに参加してみてください
- マヂ、やさしい人ばっかりのコミュニティ
- あなたの困ったをきっと解決してくれるでしょう
-
NervesJP Slack workspaceでは、NervesやIoTが好きな愉快なfolksたちがあなたの訪れを歓迎します
- たくさんのコミュニティがあります
(EDI/fukuoka.ex/kokura.ex & LiveView JP の @piacerex さん作)
Elixirコミュニティに初めて接する方は下記がオススメです
Elixirコミュニティ の歩き方 -国内オンライン編-
https://speakerdeck.com/elijo/elixirkomiyunitei-falsebu-kifang-guo-nei-onrainbian
(piyopiyo.ex & エリジョ の nakoさん(@kn339264) 作、素敵な資料)
Elixirのイベント情報
@koga1020 さんが作成されたイベントカレンダーがあります。
https://elixir-jp-calendar.fly.dev/
気になるイベントにはぜひ参加してみましょう!!!
上記サイトの解説記事はこちらです。
I organize autoracex.
And I take part in NervesJP, fukuoka.ex, EDI, tokyo.ex, Pelemay.
I hope someday you'll join us.
We Are The Alchemists, my friends!
-
@kaizen_nagoya さんの「「@e99h2121 アドベントカレンダーではありますまいか Advent Calendar 2020」の改訂版ではありますまいか Advent Calendar 2022 1日目 Most Breakthrough Generator」から着想を得て、模倣いたしました。 ↩
-
mix_install_examplesのサンプルひとつずつで記事が1本書けそうです
。困ったらそうしよう。 ↩