はじめに
この記事は Elixirアドベントカレンダーのシリーズ4の2日目の記事です
ElixirDekstopのiOSアプリの開発環境の構築について解説し、
実際に以下のサンプルアプリをシミュレーターで動かします
検証環境
M1 Mac(Apple M1 Max)
Mac OS Sonoma(14.1.1)
Xcode 15.0.1
Elixirのインストール
最初にErlangとElixirのインストールを行います
Elixirのバージョンは最新でも問題なく動きますが、ElixirDesktopで使用されるErlangバイナリのバージョンが25.0.4となっているため、このバージョンのElrangでアプリケーションのビルドをしないと動かないので注意が必要です
asdf のセットアップ
様々な言語、ライブラリの管理・切替できるasdfでErlang/Elixirをインストールしていきます
ソースからビルドでも構いませんが、brewにあるのでそちらからインストールを行います
brew install asdf
インストールが完了いたら、環境変数に実行パスを通します、
この例はbashですので、zshを使用している方は公式のドキュメントを参考にしてください
echo -e "\n. \"$(brew --prefix asdf)/libexec/asdf.sh\"" >> ~/.bash_profile
echo -e "\n. \"$(brew --prefix asdf)/etc/bash_completion.d/asdf.bash\"" >> ~/.bash_profile
source ~/.bash_profile
asdfのプラグイン追加
asdfに各言語のプラグインを追加していきます
Erlangのプラグインはこちら
https://github.com/asdf-vm/asdf-erlang
以下のコマンドでプラグインを追加します
asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git
Elixirのプラグインはこちら
asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git
Erlangのインストールに必要なライブラリを追加
Erlangのインストールの前に必要なライブラリをインストールしていきます
brew install carthage git openssl@1.1 npm wxwidgets openjdk autoconf libxslt fop
echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
ErlangとElixirのインストール
Erlangのバージョンさえ気をつければいいので、 1.15.7-otp-25
や1.16.0-rc.0-otp25
でも問題なく動きます
※ Mac OS sonomaにerlangをインストールする場合は --disable-jitオプションをつけてください
export DED_LDFLAGS_CONFTEST="-bundle"
export KERL_CONFIGURE_OPTIONS="--without-javac --with-ssl=$(brew --prefix openssl@1.1) --disable-jit"
asdf install erlang 25.0.4
asdf install elixir 1.15.7-otp-25
※2023/11/27日現在 wxwidgetsを組み込んだErlangのインストールに失敗しますが、iOSのアプリケーションをビルド・実行する際には使用されないので問題なく動きます
動作確認
インストールが完了したらサンプルアプリを git cloneして動かしてみましょう
git clone https://github.com/elixir-desktop/ios-example-app.git
git cloneが完了したら、 carthage update で関連ライブラリをインストールします
インストールに失敗した場合はiOS,tvOS watchOSのライブラリが最新版ではないことが考えられるので、時間はかかりますがXcodeを起動してインストールを行ってください
iOSだけインストールしたい場合は
carthage update --platform iOS
とplatformオプションをつけましょう
cd ios-example-app && carthage update --use-xcframeworks
ライブラリのインストールが完了したら、言語のバージョンを指定している .tool-versions
を先程インストールしたelixirに書き換えましょう
erlang 25.0.4
- elixir 1.13.4-otp-25
+ elixir 1.15.7-otp-25
書き換えが終了したら以下のコマンドでXcodeを開きます
open todoapp.xcodeproj
Xcodeを開いたら一番上のtodoappフォルダをクリックし、
generalタブのFrameworks,Libraries, and Embedded Contentの
liberlang の Embedを Embed & Sign に変更します
xcodeの実行ボタンをクリックしてビルドが成功するとアプリが起動します
※ 2023/11/28現在 openssl由来のエラーがでていて起動はしますがアプリが、使えない状態です。制作者さんと連絡を取りながら問題を解消中です
ビルドが失敗する場合は ./run_mix
をコンソールから実行するとビルド時のエラーが出力されるので、そちらを確認しましょう
ビルドが成功して起動してからクラッシュした場合はXcodeの方にエラーメッセージがログに出力されているのでそちらを確認しましょう
最後に
OSのアップデート等によりうまく動かない状態ではありますが、次のステップで作成するプロジェクトだと動くのでひとまずおいておきましょう
クロスプラットフォームなアプリ開発はこのようにすぐ環境が壊れがちなので、安定するまでくじけず頑張りましょう
本記事は以上になりますありがとうございました
次はAndroidの環境構築になります