手作業のベータ配信が奪う時間
アーカイブして、アップロードして、テスターを招待する。iOSアプリのベータ配信でこの手作業を毎回繰り返していると、思いのほか時間を取られ、招待漏れやビルド番号の付け間違いといった小さなミスも起きやすくなります。TestFlight は優れた仕組みですが、そこへ至る道のりには自動化の余地が大きく残っています。
この記事を読み終えると、次のことができるようになります。
- Fastlane を Antigravity の支援で素早くセットアップする
- GitHub Actions でプッシュするたびに TestFlight へ自動アップロードする
- ベータテスター管理・通知も自動化して、開発に集中できる環境を整える
対象読者: iOSアプリ開発の経験があり、CI/CD の基礎知識をお持ちの方。Antigravity の基本操作に慣れている方を想定しています。
前提条件・環境準備
作業を始める前に、以下の環境を整えてください。
- macOS(Xcode 16 以降インストール済み)
- Apple Developer アカウント(有料)
- App Store Connect へのアプリ登録済み
- Antigravity IDE(最新版)インストール済み
- Ruby 3.0 以降(Fastlane の実行に必要)
- GitHub アカウントとリポジトリ
環境が整ったら、Antigravity でプロジェクトを開いてください。まずは全体の流れを把握することが大切です。
TestFlight 自動配信パイプラインの全体像
自動配信パイプラインは、次の流れで動作します。
- 開発者がコードを
mainまたはreleaseブランチにプッシュ - GitHub Actions がトリガーされ、macOS ランナー上でビルド開始
- Fastlane の
betaレーンがアーカイブ・コード署名・アップロードを実行 - TestFlight にビルドがアップロードされ、テスターへ自動通知
この仕組みを Antigravity のエージェントが補助し、設定ファイルの生成・エラー診断・改善提案を自動で行います。手動作業が大幅に減り、リリースサイクルを加速できます。
Step 1: Fastlane のセットアップ
Fastlane のインストール
Antigravity のターミナルパネルで次を実行します。
# Gemfile を使って Fastlane をインストール
bundle init
echo 'gem "fastlane"' >> Gemfile
bundle install
# Fastlane の初期化
bundle exec fastlane initインストール後、Antigravity のチャット欄に次のように依頼すると、Fastfile を自動生成できます。
Antigravity へのプロンプト例:
「TestFlight 自動配信用の Fastfile を作成してください。
対象アプリ名: MyApp、バンドルID: com.example.myapp、チームID: ABC12345」
Antigravity が生成した Fastfile の例を示します。
# fastlane/Fastfile
default_platform(:ios)
platform :ios do
desc "TestFlight にベータ版をアップロードする"
lane :beta do
# 証明書とプロビジョニングプロファイルを同期
match(type: "appstore")
# ビルド番号を自動インクリメント
increment_build_number(
build_number: latest_testflight_build_number + 1
)
# アーカイブ・エクスポート
gym(
scheme: "MyApp",
export_method: "app-store",
output_directory: "./build"
)
# TestFlight へアップロード(処理待ちはスキップして高速化)
upload_to_testflight(
skip_waiting_for_build_processing: true,
changelog: "自動ビルド: #{Time.now.strftime('%Y-%m-%d %H:%M')}"
)
end
endApp Store Connect API キーの設定
TestFlight への自動アップロードには API キーが必要です。
- App Store Connect →「ユーザーとアクセス」→「キー」で新規 API キーを発行する
AuthKey_XXXXXXXXXX.p8ファイルをダウンロードするAppfileに API キー情報を設定する
# fastlane/Appfile
app_identifier("com.example.myapp")
apple_id("your@email.com")
# App Store Connect API キーのパス
api_key_path("./fastlane/AuthKey_XXXXXXXXXX.p8")API キーは .gitignore に追加し、絶対にリポジトリにコミットしないよう注意してください。GitHub Secrets に保管するのがベストプラクティスです。
Step 2: GitHub Actions ワークフローの設定
Antigravity に次のプロンプトでワークフローファイルを生成してもらいます。
「GitHub Actions で iOS アプリを TestFlight に自動配信する
.github/workflows/testflight.yml を作成してください。
トリガー条件: release/* ブランチへの push」
生成されたワークフローの例を示します。
# .github/workflows/testflight.yml
name: TestFlight Deploy
on:
push:
branches:
- 'release/*'
jobs:
deploy:
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- name: Ruby のセットアップ
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: App Store Connect API キーを復元
env:
ASC_API_KEY: ${{ secrets.ASC_API_KEY_CONTENT }}
run: |
mkdir -p fastlane
echo "$ASC_API_KEY" > fastlane/AuthKey.p8
- name: Fastlane beta レーンを実行
env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: "120"
run: bundle exec fastlane betaGitHub Secrets には以下の2つを設定します。Antigravity のエージェントが設定手順を案内してくれます。
ASC_API_KEY_CONTENT:.p8ファイルの内容(そのままペースト)MATCH_PASSWORD: Fastlane Match の暗号化パスワード
Step 3: Antigravity でエラー診断・修正を効率化
CI/CD 環境でのビルドエラーは原因が複雑なことがあります。Antigravity のチャットにエラーログを貼り付けると、原因と解決策を即座に提示してくれます。
コード署名関連でよくあるエラーと、Antigravity の診断例です。
ビルドログ(一部):
error: No certificate found matching 'iPhone Distribution: Example Inc.'
Antigravity の応答例:
「コード署名エラーを検出しました。
原因: Distribution 証明書がローカルに見つかりません。
解決策:
1. bundle exec fastlane match appstore を実行して証明書を同期
2. Keychain でのアクセス許可を確認する
3. Bundle ID が App Store Connect と一致しているかチェック」
Antigravity を活用すれば、複雑なコード署名エラーも数分で解決に向かえます。GitHub Actions のさらに高度な設定については、GitHub Actions で iOS/Android の CI/CD パイプラインを構築する完全ガイドもあわせてご覧ください。
Step 4: ベータテスター管理の自動化
Fastlane の pilot コマンドを使えば、テスターの追加・グループ管理も自動化できます。
# fastlane/Fastfile に追加するレーン例
lane :add_testers do
add_new_testers(
testers_file_path: "./testers.csv",
groups: ["Internal QA", "Beta Users"]
)
endtesters.csv はスプレッドシートから書き出した形式で問題ありません。Antigravity に「CSV からテスターを一括追加するスクリプトを書いて」と依頼すれば、パース処理も自動で生成してもらえます。
テスターへの通知メッセージも changelog パラメーターでカスタマイズでき、「今回追加された機能・修正された不具合」をわかりやすく伝えることで、フィードバックの質が上がります。
よくあるエラーと対処法
エラー 1: "No certificate found" が出る
古い証明書が競合している場合に起きやすいエラーです。
# 古い証明書を削除して再生成する
bundle exec fastlane match nuke distribution
bundle exec fastlane match appstoreエラー 2: "Build number already exists" でアップロードが失敗する
TestFlight は同一ビルド番号のアップロードを拒否します。Fastfile に increment_build_number を必ず含め、毎回ビルド番号が増えるようにしてください。
エラー 3: GitHub Actions の macOS ランナーがタイムアウトする
Xcode のビルド設定取得に時間がかかる場合があります。FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT を 120(秒)以上に設定すると改善します。
まとめ
ここではAntigravity × Fastlane × GitHub Actions を組み合わせて、TestFlight ベータ配信を完全自動化する方法を解説しました。
自動化のポイントをまとめると次の通りです。
- Fastlane でコード署名・ビルド・アップロードを一元管理する
- GitHub Actions でブランチへのプッシュをトリガーに自動実行する
- Antigravity がエラー診断・設定ファイル生成をリアルタイムでサポートする
手動作業をなくすことで、開発者はコードを書くことに集中でき、品質の高いベータ版をより高い頻度でテスターに届けられるようになります。ぜひ、まずは Fastlane のセットアップから始めてみてください。
ビルド・テスト・デプロイ自動化の原則を体系的に学べる一冊です。