はじめに
最初はcarthageなんて全く導入する気がなかったのですが、今ではこんなに便利なツールがあるんだなととても関心しています。せっかく導入したので手順を記録しておきます。
なぜ導入する必要があったか
きっかけはXcodeを11.2にアップデートしたことでした。
今までビルドできていたRealmを使っているプロジェクトがビルドできなくなりました。
エラーメッセージは「Module compiled with Swift 5.1 cannot be imported by the Swift 5.1.2 compiler」との表示でした。
xcodeやswiftに詳しくない私は全く意味が理解できませんでしたが、よくよく調べてみるとswiftはimportしているフレームワークをビルドしたコンパイラーとxcodeで使用しているコンパイラのバージョンが少しでも異なると動かないとのことでした。
それなら最新のrealmを使えばいいのだと思い、realm公式サイトから最新のバイナリをダウンロードしてきてframeworkファイルを入れ替えましたが未だバージョンが違うようでエラーは消えませんでした。
どうしたらいいのか色々考えていた結果、githubに上がってるrealmのソースを最新のコンパイラでビルドしてやればいいとやっと気づきました。基本中の基本だと思いますが今までオープンソースの世界で育ってない私には理解するまでかなり時間がかかってしまいました。
そんな理解のまま色々探っているとcarthageにたどり着きました。
carthageはrealmのソースをgithubからダウンロードしてきてビルドまでをコマンド一つでやってくれます。なんて便利なんでしょうか。
導入手順
まずはbrewのパッケージを最新化します。
brew update
carthageをインストール
brew install carthage
realmを使ってるプロジェクトのパスに移動して、Cartfileファイルを作る
cd 〜〜〜〜〜〜〜
touch Cartfile
viで「github "realm/realm-cocoa"」を書き込んで保存
vi Cartfile
updateでgithubからソースを落としてきてビルドまでしてくれます。
platformでビルドする対象を指定できます。
carthage update --platform ios
私の環境ではupdate中に「error: unable to find utility "xcodebuild", not a developer tool or in PATH」のような内容が表示されてエラーになりました。が下記のようなコマンドを流すとうまくいきました。どんな意味なのか詳しく理解していませんが、コマンドライン上でxcodeを使う場合のxcodeのパスを指定しているようです。
sudo xcode-select -switch /Applications/Xcode11.2.app/Contents/Developer
何分か経ってから処理が完了し「/プロジェクトのフォルダ/Carthage/Build/iOS」の下に「Realm.framework」「RealmSwift.framework」がビルドされました。
ビルドされたファイルの使い方は下記の記事の通りで特に変わりなさそうです。
SwiftでRealmを動かしてみる
さいごに
まだまだ知らない便利なものが世の中にあるんだなと感激した内容でした。