Swift・iOS

Swiftを中心に学んだことを記録に残すブログです。技術に関係ない記事もたまに書いています。

【fastlane】導入手順の説明 ※公式ドキュメントの手順でわからない箇所がある方向け

 

はじめに

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"を開いた状態で「移動」 > 「ホーム」を選択。

f:id:hfoasi8fje3:20201118151437p:plain

 

"command"と"shift"を押しながら"."を押して、隠しファイルを表示。

f:id:hfoasi8fje3:20201118152107p:plain

 

デフォルトのシェルがbashの場合は"bashrc"で検索。zshの場合は"zshrc"で検索。

f:id:hfoasi8fje3:20201118152343p:plain

 

デフォルトのシェルがbashの場合は"bashrc"ファイルを開く。zshの場合は"zshrc"ファイルを開く。

※今回はVisual Studio Codeでファイルを開いています。

f:id:hfoasi8fje3:20201118152821p:plain

 

公式ドキュメント通りの設定を追加したい場合は、ファイルに以下を追加して上書き保存。

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

 

以下の表示が出た場合は「上書き」を選択。

f:id:hfoasi8fje3:20201118153552p:plain

 

以下の表示が出た場合は「Sudo 権限で上書き...」を選択。

f:id:hfoasi8fje3:20201118153656p:plain

 

ターミナルを開いて以下コマンドを実行。

※設定変更時にターミナルが開いていた場合は、一度ターミナルを閉じて再度開いてください。

$ 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への投稿方法に関して記事にしました。

www.hfoasi8fje3.work

 

参考

Setup - fastlane docs

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

「ロケール環境変数」の種類と優先順位まとめ【LC_ALL・LC_*・LANG・LANGUAGE】 | LFI