できない理由はできることの証拠だ。できない理由を解決すればよい。
Advent Calendar 2022 34日目1の記事です。
I'm looking forward to 12/25,2022
私のAdvent Calendar 2022 一覧。
はじめに
Elixirを楽しんでいますか
$\huge{私が悪い}$
のです。
さきに謝っておきます。
先日参加した「tokyo.ex #15 ハンズオン回」で、私は苦戦したことがありました。
それは、ローカルで動いているmix dialyzer
が、CircleCIで動かそうとすると、動かないのです。
もう一度いいます。
$\huge{悪いのは私め}$
でございます。
申し訳ありません。
なにが原因だったのかを記録しておきます。
そして私の記憶に定着させます。
「tokyo.ex #15 ハンズオン回」のレポートは以下に書いております。
資料がとても充実しています!
失敗例
Mixタスクがみつからないですと〜〜〜
関連するファイル
https://github.com/jeremyjh/dialyxir/blob/a1438f7810d7506485747194e6ac9ea358793e09/README.md の記載をそのままコピペしました
defp deps do
[
{:dialyxir, "~> 1.0", only: [:dev], runtime: false}
]
end
version: 2
jobs:
build:
docker:
- image: circleci/elixir:1.13-node
environment:
MIX_ENV: test
MIX_TEST_DB_HOST: localhost
- image: circleci/postgres:9.6
environment:
POSTGRES_USER: postgres
POSTGRES_DB: demo_test
POSTGRES_PASSWORD: postgres
working_directory: ~/app
steps:
- checkout
- run: mix local.hex --force
- run: mix local.rebar --force
- run: mix archive.install --force hex phx_new
- run: mix do deps.get, compile
- run: mix test
- run: mix dialyzer
これだと、** (Mix) The task "dialyzer" could not be found
なわけです。
正解例 

:test
を追加しています。
defp deps do
[
{:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false}
]
end
だって、MIX_ENV: test
なのですから。
.circleci/config.yml
は、さきほどと変わっていません。
version: 2
jobs:
build:
docker:
- image: circleci/elixir:1.13-node
environment:
MIX_ENV: test
MIX_TEST_DB_HOST: localhost
- image: circleci/postgres:9.6
environment:
POSTGRES_USER: postgres
POSTGRES_DB: demo_test
POSTGRES_PASSWORD: postgres
working_directory: ~/app
steps:
- checkout
- run: mix local.hex --force
- run: mix local.rebar --force
- run: mix archive.install --force hex phx_new
- run: mix do deps.get, compile
- run: mix test
- run: mix dialyzer
そうすると、test/
配下も対象になっちゃうからまあ外しておいてもいいかな。
ignoreかな〜
[
~r/test\/.+\.ex/,
]
「tokyo.ex #15 ハンズオン回」での成果
成果物は
です。
Wrapping up 



Enjoy Elixir
$\huge{Enjoy\ Elixir🚀}$
ローカルで動いたはずなのにCIでmix dialyzer
などのMixタスクが通らない場合には、以下を確認してみてください。
- CIでのMIX_ENVは何にして動かしていますでしょうか
-
mix.exs
のHexの追加の仕方をみなおすか、CIの設定ファイルの方を変えるかしてみましょう
以上です。
付録
以下、付録です。
Elixirの誕生日は、2012年5月24日です。
そのため、今年の2022年5月24日は10周年を迎えます。
iex> Date.diff(~D[2022-05-24], ~D[2022-02-03])
110
そうそう!
2月24日発売予定のWEB+DB PRESSで、ElixirとPhoenixの特集がでますよ〜
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) 作、素敵な資料)
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!