LoginSignup
16
2

はじめに

この記事は Elixirアドベントカレンダーのシリーズ4の2日目の記事です

ElixirDekstopのiOSアプリの開発環境の構築について解説し、
実際に以下のサンプルアプリをシミュレーターで動かします

スクリーンショット 2023-11-27 19.57.53.png

検証環境

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-251.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に書き換えましょう

.tool-versions
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 に変更します

スクリーンショット 2023-11-08 0.51.33.png

xcodeの実行ボタンをクリックしてビルドが成功するとアプリが起動します

※ 2023/11/28現在 openssl由来のエラーがでていて起動はしますがアプリが、使えない状態です。制作者さんと連絡を取りながら問題を解消中です

スクリーンショット 2023-11-28 1.34.45.png

ビルドが失敗する場合は ./run_mixをコンソールから実行するとビルド時のエラーが出力されるので、そちらを確認しましょう

ビルドが成功して起動してからクラッシュした場合はXcodeの方にエラーメッセージがログに出力されているのでそちらを確認しましょう

最後に

OSのアップデート等によりうまく動かない状態ではありますが、次のステップで作成するプロジェクトだと動くのでひとまずおいておきましょう

クロスプラットフォームなアプリ開発はこのようにすぐ環境が壊れがちなので、安定するまでくじけず頑張りましょう

本記事は以上になりますありがとうございました

次はAndroidの環境構築になります

16
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
2