ElixirDesktop Androidを動かす - Windows11に環境構築失敗編

こんにちは！
プログラミング未経験文系出身、Elixirの国に迷い込んだ？！見習いアルケミストのaliceと申します。
今回は[ElixirDesktop android-example-app](https://github.com/elixir-desktop/android-example-app)をWindows11で実際に動かすための環境構築をしましたので、備忘録としてまとめたいと思います。
#### こちらはWindowsネイティブに環境構築をしようとした失敗編です。ちゃんと動いたやり方は[★こちらから★](https://qiita.com/Alicesky2127/private/5f9a1c6496b1c083720f)

## 実行環境
Windows 11 Home(バージョン 21H2, OS ビルド 22000.1219)

# ビルドに必要な条件
・Android Studioがインストールされていること。
・NDK（※Native Development Kitの略、Android で C や C++ のコードを使用できるようにするツールセット)がインストールされていること。
・git、npm、~~asdf~~ がインストールされていること。
　└asdfはWindowsに対応していないので、localのElixirとErlangをアンインストール＆インストールしなおしてバージョンを合わせようとしました→【結局うまくいきませんでした】


# 実際に環境構築してみた！
## Android Studioのインストール

https://developer.android.com/studio/install?hl=ja

Windows用の手順に沿ってインストールを実施。


## NDKのインストール

https://developer.android.com/ndk/guides?hl=ja

[NDK と CMake のインストールと設定](https://developer.android.com/studio/projects/install-ndk?hl=ja)から、『NDK と CMake をインストールする』の手順に沿ってインストールを実施。

プロジェクトは立ち上げなくても起動時の画面からSDK Managerに飛ぶこともできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/af9816e7-692a-aec8-7856-3ea6de822bb2.png)

SDK Tools タブから[NDK (Side by side)] と [CMake] のチェックボックスをオンにして、Applyを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/5e3cfe99-fe76-1d62-908f-7a61922dd6ed.png)


## gitのインストール

https://gitforwindows.org/

こちらからインストーラをダウンロードしてインストールを実施。
(私は既にインストール済のためスキップしました)


## npmのインストール

https://nodejs.org/en/download/

Windows64ビット用のインストーラをダウンロードしてインストールを実施。


https://mebee.info/2022/02/08/post-56385/

詳細な実施手順はこちらの記事を参考にしました。



## ~~asdfのインストール~~ →ElixirとErlangのバージョンを合わせる

https://elixir-lang.org/install.html

asdfがなぜ必要かというと、以下の画像の通り、[How to build & run の手順3](https://github.com/elixir-desktop/android-example-app#how-to-build--run) でElixirおよびErlangのパッケージマネージャとしてバージョン齟齬を無くすために必要だから。

言い換えれば、asdfが無くともErlang 25.0.4 かつ Elixir 1.13.4-otp-25を満たせばビルドできるはずと考え、localのElixirとErlangをアンインストール＆インストールしなおしてバージョンを合わせました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/5e580041-c694-02ed-e581-181e2846b0e4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/b7a0a247-7c21-be67-f238-fb169e38630f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/edc478e5-6efd-3023-8060-919ce6feadb7.png)


## (ダメだった)  Erlang, Elixir, git, npmのバージョン確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/5850a189-9db7-552a-bc52-1c60b14493bf.png)
ElixirのインストーラにはOTP25.0としか書かれていなかったので不安でしたが、[こちら](https://stackoverflow.com/a/27431173/20725651)を参考にErlangのバージョンを確認しました。
OTP25.0.4が入っているのに、 compiled with Erlang/OTP 22になるのはなぜなんでしょう？
結局この方法では、Phoenixが起動できず解決できませんでした...
```
C:\Users\ai_ni\code\practice>elixir --version
Erlang/OTP 25 [erts-13.0.4] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit:ns]

Elixir 1.13.4 (compiled with Erlang/OTP 22)

mix phx.new sample --database sqlite3

12:27:06.296 [error] Loading of c:/Program Files (x86)/Elixir/lib/elixir/ebin/Elixir.Code.Formatter.beam failed: :badfile


12:27:06.296 [error] beam\beam_load.c(86): Error loading module 'Elixir.Code.Formatter':
  lambda already defined for label 749. To fix this, please recompile this module with an OTP 25 compiler.
```

### (余談) Elixirの日本語公式サイトのリンク先がエラーになっていた

[こちら](https://elixir-lang.jp/install.html)のElixirの日本語公式サイトからインストーラをダウンロードしようとすると、以下のエラーメッセージがでてダウンロードが始まりません...（こういうのってどこに申し出たらいいんでしょう？)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/86b69c6c-4d4e-c548-037a-e6f326feef26.png)


一方、[こちら](https://elixir-lang.org/install.html)の英語公式サイトのインストーラを使うと...インストーラがダウンロードされました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/743d1726-fde3-2a83-2e3e-545b6d2aac2b.png)


というわけでElixirのインストールは英語公式サイトを参考にしましょう。日本語公式サイトは情報が古い場合があります。





# ～Elixirの国のご案内～
※Elixirって何ぞや？と思ったらこちらもどぞ。未来がぎゅっと詰まった、Elixirは今年で生まれて10周年です:laughing::sparkles::sparkles:

https://qiita.com/piacerex/items/7bf8f9f4f5f576e597f5



[We Are The Alchemists, my friends!:bouquet:](https://qiita.com/torifukukaiou/items/6bcd5bbb80df9e594e9e "Awesome-san's Awesome article")[^1]
Elixirコミュニティは本当に優しくて温かい人たちばかり！
私が挫折せずにいられるのもこの恵まれた環境のおかげです。


まずは気軽に話しかけてみてください。[^10]


https://speakerdeck.com/elijo/elixirkomiyunitei-falsebu-kifang-guo-nei-onrainbian




[^1]: @torifukukaiouさんのAwesomeな名言をお借りしました。Elixirコミュニティを一言で表すと、これに尽きます。


[^10]: @kn339264さんの素敵なスライドをお借りしました。Elixirコミュニティはいろんな形で活動中！