【iOS/Xcode】Fastlaneの導入方法!ビルドや証明書周りの自動化ツールとCI/CD

【iOS/Xcode】Fastlaneの導入方法!ビルドや証明書周りの自動化ツールとCI/CD

この記事からわかること

  • iOS/Xcode自動化ツールFastlane導入方法使い方
  • Homebrew/rbenv/bundlerインストール手順
  • セットアップ方法
  • AppfileFastfileとは?

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

Fastlaneとは?

公式リファレンス:Fastlane

Fastlane」とはiOSまたはAndroidアプリの配布やテスト周りの作業を自動化するためのCI/CDツールです。できることは大きく分けて以下の4つになります。

仕組みとしてはFastfileというRubyで記述した設定ファイルを用意し、ターミナルなどからコマンドを実行するだけで特定の作業を自動で行ってくれるものになります。

CI/CDとは?

CI/CDとは「Continuous Integration(継続的インテグレーション)/ Continuous Delivery(継続的デリバリー)」の略称で、ざっくり言うとソースコードの統合(Integration)と配布(Delivery)を自動化する手法のことを指します。

Fastlaneの導入方法

Fastlaneを使用するにはまず導入作業が必要になります。今回はFastlaneを導入するためにHomebrewrbenvbundlerの3つがインストールしていきます。Homebrewから直接Fastlaneをインストールすることもできますが、macOSのシステムRubyをそのまま活用すると依存関係の問題が多発するので、それぞれを管理できるツールを使用して導入まで進みます。

それぞれのツールのインストールはターミナルを起動させたままのカレントディレクトリで行っていきます。

1.Homebrewの導入

Homebrewは以下コマンド実行して導入できます。詳細な方法は以下の記事を参考にしてください。

おすすめ記事:Homebrew(ホームブルー)のインストール方法

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

環境変数パスを通します。

$ vi ~/.zshrc
// viで開いた中に記述
export PATH=/opt/homebrew/bin:$PATH

// 保存して閉じる
:wq

// 現在開いているターミナルに反映
$ source ~/.zshrc

バージョンが適切に返ってこれば成功です。

$ brew -v
Homebrew 4.1.18

2.rbenvの導入

Homebrewを使ってrbenvを導入します。

$ brew install ruby-build rbenv

環境変数パスを通します。

$ vi ~/.zshrc
// viで開いた中に記述
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

// 保存して閉じる
:wq

// 現在開いているターミナルに反映
$ source ~/.zshrc

バージョンが適切に返ってこれば成功です。

$ rbenv --version
rbenv 1.2.0

3. Rubyの導入

続いてRubyをインストールしていきます。まずはインストール可能なバージョンを確認するために-lまたは--listオプションを実行します。

$ rbenv install --list

--listオプションでインストール可能なRubyの最新安定版が表示されるのでそこからインストールしたいバージョンを決めてインストールしていきます。

$ rbenv install 3.1.4 // Rubyのインストール
$ rbenv global 3.1.4  // globalにインストールしたRubyのバージョンを指定
$ rbenv init          // 反映

バージョンが適切に返ってきて、rbenvのgemが動作していれば成功です。

$ rbenv versions
* system
3.1.4

$ which gem
/Users/<UserName>/.rbenv/shims/gem // ○
/usr/bin/gem // ×

4. bundlerの導入

bundlergemを使用して導入していきます。

$ gem install bundler

バージョンが適切に返ってこれば成功です。

bundler -v
Bundler version 2.5.13

ここまででPCへの導入作業が完了しました。一度作業すれば後はXcodeのプロジェクトに対してこれから説明する手順を実行してするだけになります。

XcodeプロジェクトにFastlaneを組み込む

XcodeプロジェクトにFastlaneを組み込んでいきます。ターミナルを起動しカレントディレクトリをXcodeプロジェクトに合わせてbundle initコマンドを実行します。

$ bundle init

実行するとプロジェクトルートに「Gemfile」が生成されます。GemFileGemとツールのバージョンを指定するためのテキストファイルです。


# frozen_string_literal: true

source "https://rubygems.org"

# gem "rails"

この中にgem "fastlane"を追加してbundle installコマンドを実行します。するとfastlaneを動作させるために必要なライブラリなどがインストールされていきます。いろいろインストールされますがこれはfastlane依存関係を多く持っているためです。


# frozen_string_literal: true

source "https://rubygems.org"

# gem "rails"

gem "fastlane"

bundle installコマンドが完了すると「Gemfile.lock」がプロジェクトルートに生成されます。このファイルにはインストールされたGemのバージョンと依存関係が記録されています。同じGemfile.lockを使用する他の開発者や環境でも、バージョンの齟齬がないように環境構築することができるようになります。

$ bundle install

Fastlaneのセットアップ

bundle exec fastlane initコマンドを実行してFastlaneを使用するための設定ファイルを生成していきます。実行すると「ファストレーンを何に使いたいですか?」と問われるので該当の番号を指定します。今回は4:手動セットアップを選択したいので4を入力してEnterを押し、その後も3回Enterを叩きます。

$ bundle exec fastlane init

What would you like to use fastlane for?
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

完了するとプロジェクトルートに「fastlane」ディレクトリが生成されその中に「Appfile」と「Fastfile」ファイルが生成されます。

AppFileとは?

公式リファレンス:AppFile

Appfileはアプリケーションに関する基本的な情報を設定するためのファイルです。Apple IDやBundle ID、チームIDなどを定義する際に使用します。


# app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app
# apple_id("[[APPLE_ID]]") # Your Apple Developer Portal username

# アプリのバンドルIDを定義
app_identifier "com.XXX.XXX"

# Apple ID 
apple_id "sample@sample.com"

# Apple Developer PortalのチームID
team_id "XXXXXXX"

# App Store ConnectのチームID
itc_team_id "XXXXXXX"
# itc_team_id("XXXXXXX") # 括弧付きでも可

「Fastfile」内で 「Appfile」で定義している値を使用したい場合CredentialsManager::AppfileConfig.try_fetch_value(:キー名)を使用します。


team_id = CredentialsManager::AppfileConfig.try_fetch_value(:team_id)

Fastfileとは?

Fastfileはfastlaneで実行するアクションやワークフロー(レーン)を定義するファイルです。ここには、テストの実行、ビルドの作成、配布など自動化したいタスクを記述します。レーンや各アクションの記述方法は以下の公式リファレンスを参考にしてください。

公式リファレンス:Fastfile

中には以下のようにlaneを追加して処理を実装していきます。laneは複数記述することができ$ bundle exec fastlane レーン名というコマンドをターミナルから実行することで処理を走らせることができます。


default_platform(:ios)

platform :ios do
  desc "レーンの説明"
  lane :レーン名 do
    # 実行したい処理 
  end

  desc "レーン2の説明"
  lane :レーン2名 do
    # 実行したい処理2 
  end
end

今回はFastlaneの導入とXcodeプロジェクトへのセットアップまでをまとめました。次は実際にFastlaneを使用して自動化していく記事を作成したいと思います。

.envファイルを用意する

Fastfile内で値をそのままハードコードするのではなく.envファイルを用意し、そこに秘密にしたい値(IDやKeyなど)を定義しておき、Fastfileから読み込ませることも可能です。

.envファイルはプロジェクト直下に作成したいので以下コマンドで空のファイルを生成し、中にキー名=値の形式で記述します。

$ touch .env

USER_ID=XXXXXX

Fastfile内で参照したい場合はENV['キー名']形式で取得することができます。


ENV['TEAM_ID']

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index