私はiOSアプリではほとんどR.swiftを使用しています。今まではCocoapodsによる導入がほとんどでした。Xcode11からSPM(Swift Package Manager)でR.swiftを導入することが増えてきました。
R.swiftとは?
多くの記事で書かれていますので、割愛します。
https://github.com/mac-cain13/R.swift
R.swiftの導入方法
大きく分けて3つのパートになります。
- rswiftコマンドのインストール
- R.generated.swiftの生成
- R.swift.Libraryのインストール
rswiftコマンドのインストール
rswiftコマンドはR.generated.swiftファイルを生成するためのCLIです。インストールするためには、HomebrewとMintの2通りがあります。
- Homebrewで:簡単だが、バージョン指定が出来ない
- Mint:バージョン指定ができるが、ビルド時間がかかり、特にCI環境で影響があります。
Homebrewでインストール
Homebrewで最新版のrswiftをインストールするためには
$ brew install rswift
だけです。簡単ですね。しかし、バージョンの指定は出来ないことに注意します。
Mintでインストール
Mintでバージョンを指定してインストールするためには、
$ mint install mac-cain13/R.swift@5.2.2
です。最新版をインストールする場合は、@以降を省略します。もし、Mintfileを使用してインストールしているのであれば、"mac-cain13/R.swift"をファイルに追加します。
R.generated.swiftの生成
次にR.generated.swiftを生成するためのスクリプトを書きます。Xcodeプロジェクト>Targets>[Target Name]>Build Phase>+ボタンで"New Run Script"を選択します。スクリプト名は"R.swift"、場所は"Dependencies"の直後にします。
if which rswift >/dev/null; then
rswift generate "$SRCROOT/generated/R.generated.swift"
else
echo "warning: rswift not installed"
fi
また、Input Filesには$TEMP_DIR/rswift-lastrun
、Output Filesには$SRCROOT/generated/R.generated.swift
を指定します。R.generated.swiftの書き出し先は変更可能です。
ここまでの設定で一度ビルドすると、R.generated.swiftが生成されていることがわかります。このファイルをプロジェクトに追加します。
R.generated.swiftはgitignoreでコミットしないようにします。
R.swift.Libraryのインストール
最後にR.generated.swiftを使うためのR.swift.LibraryをSPMで導入します。
上部メニュー>File>Swift Packages>Add Package Dependencyを選択し、
https://github.com/mac-cain13/R.swift.Library
と入力してNextを選択します。バージョンはそのままでNextを選択します。"Rswift"と"RswiftDyamic"が選択できますが、"Rswift"を選択してFinishを押します。
もう一度ビルドを行い、"Build Succesed"となることを確認します。これで導入が完了です。