I was born to love Elixir (2021/12/25)

https://qiita.com/advent-calendar/2021/shikou_poem

2021/12/25(日)の回です。
A very Merry Xmas :christmas_tree::christmas_tree::christmas_tree: :gift::santa::santa_tone1::santa_tone2::santa_tone3::santa_tone4::santa_tone5::gift::christmas_tree::christmas_tree::christmas_tree:

# はじめに

[Elixir](https://elixir-lang.org/)を楽しんでいますか:bangbang::bangbang::bangbang:

私は、[Elixir](https://elixir-lang.org/)が好きです。
**I was born to love [Elixir](https://elixir-lang.org/).** です。
これだけをQiitaに書き続けています。

どうして好きか？　と問われると、「好きだから好きです」
これ以外の理由はありません。
好きなものは仕方ありません。


# いただいたもの

[日本マイクロソフト④](https://qiita.com/chomado/items/7d1f757f18c5b442fadd#%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%BD%E3%83%95%E3%83%88%E8%B3%9E-%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96%E3%81%AE-aspnet-core-%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%A6%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%99%E3%82%8B-%E3%82%92%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B-torifukukaiou-%E3%81%95%E3%82%93) 受賞 :tada: 

https://www.youtube.com/watch?v=R3o8vR1A9ao

**虚仮の一念岩をも通す**
これです。



# 今年も25日間すべて書ききりました

2020年に続いて2度目です。
something x [Elixir](https://elixir-lang.org/)でいくらでも記事を書けます。
<font color="purple">$\huge{毎日が12月だったらいいのに！}$</font>
<font color="purple">$\huge{I\ hope\ every\ day\ was\ in\ December!!!}$</font>


![スクリーンショット 2021-12-25 8.11.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/bfcd3665-6373-1f38-2645-22eb0e3ec23a.png)

## 作品集

スプレッドシートにまとめました。

[Qiitaアドベントカレンダー2021](https://docs.google.com/spreadsheets/d/1HQvFjagQLRPjOYAjDVzWp9S4b8dKixxvvaz_TtbZWto/edit#gid=0)



# [Elixir](https://elixir-lang.org/) first

https://qiita.com/torifukukaiou/items/9802f2f26f15778679d7

たとえばこの記事なんて、[ROS 2](https://docs.ros.org/en/eloquent/index.html)が何なのかすらわからずに書いています。
いいんです、ありがたいんです、私にとっては。
私は入り方が[Elixir](https://elixir-lang.org/)からなんです。
とにかく**アドベントカレンダーを埋める、ネタをいただけて感謝の気持ち**でいっぱいです。
こうやって踏み出してみると、Serendipity的なことがあるかもしれません。
昨年は[Azure](https://azure.microsoft.com/ja-jp/)をとにかく触ってみたことが、[日本マイクロソフト④](https://qiita.com/chomado/items/7d1f757f18c5b442fadd#%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%BD%E3%83%95%E3%83%88%E8%B3%9E-%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96%E3%81%AE-aspnet-core-%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%A6%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%99%E3%82%8B-%E3%82%92%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B-torifukukaiou-%E3%81%95%E3%82%93)受賞につながっているとおもいます。


# about [Elixir](https://elixir-lang.org/)

ここからは、[Elixir](https://elixir-lang.org/)について説明をします。

## インストール

- ワクワクしてきたあなたはきっとよき<font color="purple">$\huge{Alchemist}$</font>になれるでしょう
    - [Elixir](https://elixir-lang.org/)は日本語に訳すと、**不老不死の霊薬**です
    - [Elixir](https://elixir-lang.org/)の使い手は**Alchemist**と尊称されます
    - Alchemistとは錬金術師のことです
- 早速、イゴかしてみましょう[^1]
- まずは[Elixir](https://elixir-lang.org/)のインストールが必要です
    - Windows
        - https://github.com/elixir-lang/elixir-windows-setup/releases/download/v2.1/elixir-websetup.exe
        - インストーラからインストールしてください
    - macOS
        - [Homebrew](https://brew.sh/index_ja)を使ったインストールがお手軽です
            - `brew install elixir`
        - 高みを目指していくにはバージョン切り替えができると便利でして、[asdf](https://asdf-vm.com/)をオススメします
- お節介がすぎるかもしれませんが、エディタは[Visual Studio Code](https://code.visualstudio.com/download)がオススメです
    - オススメのプラグインは[ElixirLS: Elixir support and debugger](https://marketplace.visualstudio.com/items?itemName=JakeBecker.elixir-ls)です

[^1]: 「動かしてみましょう」の意。おそらく西日本の方言、たぶん。[NervesJP](https://nerves-jp.connpass.com/)ではおなじみ。少し古いオートレースの映像ですが、実況アナウンサーが「針[^2]イゴきます」とはっきり言っています。https://autorace.jp/netstadium/SearchMovie/Movie/iizuka?date=2017-01-04&p=5&race_number=11&pg=

[^2]: 大時計の針のこと。針がイゴいてある地点まで到達すると選手はスタートを切って良い発走の合図。針がイゴきはじめると(おそらく)選手は緊張するし、スタートはその後のレース展開に大きく影響するので、車券を握りしめている観客たちがもっとも緊張する瞬間であるため、先の尖った鋭いものを連想させる針は緊張の暗喩としても言い得て妙。

## [|>](https://hexdocs.pm/elixir/1.12/Kernel.html#%7C%3E/2) ── パイプ演算子
- [|>](https://hexdocs.pm/elixir/1.12/Kernel.html#%7C%3E/2)はパイプ演算子と呼ばれるもので、前の計算結果を次の関数の第1引数にいれてくれます
- これがとっても便利なんです

```elixir
Mix.install([{:jason, "~> 1.2"}, {:httpoison, "~> 1.8"}])

"https://qiita.com/api/v2/items?query=tag:Elixir"
|> URI.encode()
|> HTTPoison.get!()
|> Map.get(:body)
|> Jason.decode!()
|> Enum.map(& Map.take(&1, ["title", "url"]))
```

[Elixir](https://elixir-lang.org/) 1.12 or laterをインストールして、`iex`コマンドを実行すると、IExと呼ばれるREPL (Read-Eval-Print Loop) が立ち上がりますので、上記のコードをコピペしてください。
きっとたくさんの良い記事にであえるでしょう:rocket:


- QiitaのAPIエンドポイントがありまして
  - |> GETするでしょ、**いつやるの？　今でしょ！**
  - |> bodyを取り出します、**いつやるの？　今でしょ！**
  - |> JSONデーコードするでしょ、**いつやるの？　今でしょ！**
  - |> そうすると各要素がマップのリストが得られるので、情報量が多いからとりあえずタイトルとURLだけにするでしょ、**いつやるの? 今でしょ！**

ってな感じの<font color="purple">$\huge{Awesome}$</font>なプログラムを書くことができます。
ちなみに[|>](https://hexdocs.pm/elixir/1.12/Kernel.html#%7C%3E/2)を使わずに書くとこんな感じになります。

```elixir
Enum.map(
  Jason.decode!(Map.get(
    HTTPoison.get!(
      URI.encode("https://qiita.com/api/v2/items?query=tag:Elixir")),
    :body)),
  & Map.take(&1, ["title", "url"]))
```

## オススメの書籍 :books: 
- [プログラミングElixir（第2版）](https://www.ohmsha.co.jp/book/9784274226373/) -- オーム社
- [Elixir実践ガイド](https://book.impress.co.jp/books/1120101021) -- インプレス

## Webアプリケーションを楽しむなら
- [Phoenix](https://www.phoenixframework.org/)

## IoTを楽しむなら
- [Nerves](https://www.nerves-project.org/)

## AIを楽しむなら
- [Nx](https://github.com/elixir-nx/nx) + [Livebook](https://github.com/livebook-dev/livebook)

## コミュニティ
-  [elixir.jp](https://join.slack.com/t/elixirjp/shared_invite/zt-ae8m5bad-WW69GH1w4iuafm1tKNgd~w) Slack workspaceに参加してみてください
    - マヂ、やさしい人ばっかりのコミュニティ
    - あなたの**困った**をきっと解決してくれるでしょう
- [NervesJP](https://join.slack.com/t/nerves-jp/shared_invite/zt-9vteokip-iVAqi8TkT0ID_uK9dSqVHA) Slack workspaceでは、[Nerves](https://www.nerves-project.org/)やIoTが好きな愉快なfolksたちがあなたの訪れを歓迎します :tada:
- たくさんのコミュニティがあります
    - @kn339264 さん作の素敵な資料をご紹介します
    - [Elixirコミュニティ の歩き方〜国内オンライン編〜](https://speakerdeck.com/elijo/elixirkomiyunitei-falsebu-kifang-guo-nei-onrainbian) :clap::clap_tone1::clap_tone2::clap_tone3::clap_tone4::clap_tone5:

![FCOvBkAUYAE6mL8.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/a277d0ea-2780-d9a3-4062-66d38b175125.jpeg)
@piacerex さん作 :pray::pray_tone1::pray_tone2::pray_tone3::pray_tone4::pray_tone5:

---

# Wrapping up :lgtm::lgtm::lgtm::lgtm: 


<font color="purple">$\huge{I\ was\ born\ to\ love\ Elixir}$</font>

カレンダーを作ってくださいました @j5c8k6m8 さん、ありがとうございました！


みなさーん、また来年もアドベントカレンダーにてお会いしましょう〜:tada: