はじめに
fastlaneの導入について書かれた記事はすでに数多くあるので、本記事ではプログラミングを始めたばかりで何も分からなかった頃の自分に説明するイメージで手順を細かく書いてみることにします。自分の場合は当時から、まずは一旦動かしてみて、なぜそれが動くのか調べるタイプだったので、「一旦手順に従えば設定が完了したり動かせる記事」の存在価値もきっとどこかしらあるはずだと信じたいです・・・笑
今回はfastlaneの公式ドキュメントである、Setup - fastlane docsに沿って導入手順を説明します。公式ドキュメントでわからない箇所のある方は参考にしてみてください。
※公式ドキュメントでは、Gemfile、RubyGems、Homebrewでのインストール方法が記載されていますが、今回はGemfileを使ってインストールします。
環境
・macOS Catalina 10.15.7
・bash 3.2.57
・bundler 2.1.4
・fastlane 2.167.0
・Visual Studio Code 1.50.1
手順
bundlerをインストール
ターミナルを開いて以下のコマンドを実行。
$ gem install bundler
Gemfileを生成
ターミナルでfastlaneを導入したいプロジェクトファイルがある階層に移動。
※プロジェクトファイルがある階層=以下のように.xcodeprojファイルがある階層のこと。
~ls FastlaneTest FastlaneTestTests FastlaneTest.xcodeproj FastlaneTestUITests
以下コマンドを実行してGemfileを生成。
$ bundle init
Gemfileを編集
Gemfileを開いて、以下を追加。
gem "fastlane"
追加後のGemfileが以下のようになっていればOK。
# frozen_string_literal: true source "https://rubygems.org" git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } # gem "rails" gem "fastlane"
fastlaneをインストール
ターミナルでfastlaneを導入したいプロジェクトファイルがある階層に移動して、以下コマンドを実行。求められるパスワードは、PC端末のパスワードを入力。
sudo bundle update
※sudoでのコマンド実行は慎重に!(ここまで書かなくていいか。。)
※公式ドキュメント通りに手順をまとめているため、本記事ではパス指定していませんが、調べてみると導入時にパス指定する記事もあります。パス指定の要不要に関しては以下の記事などで言及されているため、調べてみるとよいかもしれません。
bundle install時に--path vendor/bundleを付ける必要性は本当にあるのか、もう一度よく考えてみよう - Qiita
fastlaneの初期設定を進める
ターミナルを開き、プロジェクトファイルがある階層で以下コマンドを実行。
bundle exec fastlane init
fastlaneの用途を求めらるため、該当する番号を入力してEnter。
1. 📸 Automate screenshots 2. 👩✈️ Automate beta distribution to TestFlight 3. 🚀 Automate App Store distribution 4. 🛠 Manual setup - manually setup your project to automate your tasks
※本記事では手動設定である4を選びますが、1~3を選択する場合は以下を参考にしてください。
https://docs.fastlane.tools/getting-started/ios/setup/#whats-next
以下のようにfastlaneの構成が正常に生成されたら、メッセージ通りEnterを押下して続行。
------------------------------------------------------------ --- Setting up fastlane so you can manually configure it --- ------------------------------------------------------------ -------------------------------------------------------- --- ✅ Successfully generated fastlane configuration --- -------------------------------------------------------- Generated Fastfile at path `./fastlane/Fastfile` Generated Appfile at path `./fastlane/Appfile` Gemfile and Gemfile.lock at path `Gemfile` Please check the newly generated configuration files into git along with your project This way everyone in your team can benefit from your fastlane setup Continue by pressing Enter ⏎
以下の説明が表示されたら、メッセージ通りEnterを押下して続行。
fastlane uses a `Fastfile` to store the automation configuration Within that, you'll see different lanes. Each is there to automate a different task, like screenshots, code signing, or pushing new releases Continue by pressing Enter ⏎
以下も説明を確認したらEnterを押下して続行。
Use a text editor of your choice to open the newly created Fastfile and take a look You can now edit the available lanes and actions to customize the setup to fit your needs To get a list of all the available actions, open https://docs.fastlane.tools/actions Continue by pressing Enter ⏎
以下が表示されたら初期設定完了。
------------------------------ --- Where to go from here? --- ------------------------------ 📸 Learn more about how to automatically generate localized App Store screenshots: https://docs.fastlane.tools/getting-started/ios/screenshots/ 👩✈️ Learn more about distribution to beta testing services: https://docs.fastlane.tools/getting-started/ios/beta-deployment/ 🚀 Learn more about how to automate the App Store release process: https://docs.fastlane.tools/getting-started/ios/appstore-deployment/ 👩⚕️ Learn more about how to setup code signing with fastlane https://docs.fastlane.tools/codesigning/getting-started/ To try your new fastlane setup, just enter and run $ fastlane custom_lane
環境変数の確認
公式ドキュメントには、ロケールをUTF-8に設定しないとビルドとアップロードで問題が発生すると記載があるため、ロケール設定を確認。
※参考:https://docs.fastlane.tools/getting-started/ios/setup/#set-up-environment-variables
ターミナルで以下のコマンドを実行。
$ locale
UTF-8が設定されているか確認。
LANG="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_CTYPE="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_ALL=
公式ドキュメントでは、"LANG"と"LC_ALL"にUTF-8を設定していますが、上記では"LANG"にUTF-8で設定されているため問題はなさそうです。
※参考:「ロケール環境変数」の種類と優先順位まとめ【LC_ALL・LC_*・LANG・LANGUAGE】 | LFI
もし、以下の要因でビルドやアップロードで問題が発生している疑いがある場合は、次の「環境変数の設定」で対応してみてください。
・"LANG"にもUTF-8が設定されていない
・"LC_ALL"でUTF-8が設定されていない
環境変数の設定
"Finder"を開いた状態で「移動」 > 「ホーム」を選択。
"command"と"shift"を押しながら"."を押して、隠しファイルを表示。
デフォルトのシェルがbashの場合は"bashrc"で検索。zshの場合は"zshrc"で検索。
デフォルトのシェルがbashの場合は"bashrc"ファイルを開く。zshの場合は"zshrc"ファイルを開く。
※今回はVisual Studio Codeでファイルを開いています。
公式ドキュメント通りの設定を追加したい場合は、ファイルに以下を追加して上書き保存。
export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8
以下の表示が出た場合は「上書き」を選択。
以下の表示が出た場合は「Sudo 権限で上書き...」を選択。
ターミナルを開いて以下コマンドを実行。
※設定変更時にターミナルが開いていた場合は、一度ターミナルを閉じて再度開いてください。
$ locale
設定を変更できたことが確認できる。
LANG="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_CTYPE="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_ALL="en_US.UTF-8"
おわりに
細かい手順も含めてまとめるのは結構大変ではあるのですが、書いている自分も学びが多いので、機会があればまた記事にしたいと思います。
※2020/11/20追記
テストの実行とSlackへの投稿方法に関して記事にしました。
参考
・https://docs.fastlane.tools/getting-started/ios/setup/#whats-next
・https://docs.fastlane.tools/getting-started/ios/setup/#set-up-environment-variables
・[iOS] fastlaneを導入する手順について | Developers.IO
・fastlaneを導入してビルドを楽にする - Qiita
・bundle install時に--path vendor/bundleを付ける必要性は本当にあるのか、もう一度よく考えてみよう - Qiita