Gym(Fastlane)は、コマンドラインを介してiOSアプリケーションをIPA形式にビルドおよび署名するためのツールです。手動でスキーマとプロファイルを選択する必要があるXcodeとは異なり、Gymはエクスポートとパッケージングのプロセス全体を自動化します。Fastlane公式ドキュメント(2026)によると、Gymはxcodebuildパラメータの最適化と並列リソース処理により、ビルド時間を30%短縮します。
重要なポイント
Gym(Fastlane)は、Fastlaneエコシステムのコンポーネントであり、単一のターミナルコマンドでiOSアプリケーションをIPA形式にビルドします。数十ものフラグを指定してxcodebuildを呼び出す複雑なプロセスを抽象化し、開発者に適切なデフォルト値を持つシンプルなインターフェースを提供します。
XcodeでIPAをビルドするには、プロジェクトを開き、スキーマを選択し、ArchiveとExportを設定し、配布方法を指定して完了を待つ必要があります。Gymによるビルド自動化は手動の手順を排除し、すべてのビルドが同一のパラメータで実行されることを保証します — これは予測可能なCI/CDパイプラインにとって極めて重要です。
SwiftLee(2024)によると、Gymを使用してビルドするチームは、Xcode Organizerを介した手動エクスポートと比較して、リリースプロセスの設定に40%少ない時間を費やしています。Gymはまた、各xcodebuildステップの詳細なビルドログを生成し、失敗したビルドのデバッグとコンパイルエラー分析を簡素化します。
テストや公開のために定期的なIPAビルドが必要なiOSプロジェクトでは、Gymを使用してください — チーム内のすべてのマシンで同一のビルド設定を保証する唯一の方法です。
GymによるIPAビルドは、3つの連続した段階で構成されます:xcodebuildによるプロジェクトのアーカイブ、アーカイブのバイナリパッケージへのエクスポート、および署名付きIPA形式へのパッケージング。Gymはプロジェクトのタイプ(単一ターゲットまたはワークスペース)を自動的に検出し、正しいビルド方法を選択します。
アーカイブ段階では、Gymはプロジェクトで指定されたスキーマと設定パラメータでxcodebuild archiveを実行します。アーカイブ(.xcarchive)の作成に成功すると、Gymは選択されたエクスポート方法でxcodebuild -exportArchiveを実行します。IPAエクスポートは、.xcarchiveを必要なすべてのリソースと署名を含むインストール可能な.ipaファイルに変換するプロセスです。
エクスポート方法は、IPA署名に使用されるProvisioning Profileのタイプを決定します。Gymは4つの方法をサポートしています:development(開発者デバイスでのデバッグ用)、app-store(App Store公開用)、ad-hoc(限られたデバイスでのベータテスト用)、enterprise(企業内配布用)。
追加パラメータには、詳細なエクスポート設定のためのexport_options_plistの指定、IPAサイズ削減のためのSwift overlayの抑制、ビットコード管理が含まれます。Gymは--skip_package_ipaフラグによるシミュレータビルドもサポートしており、完全なエクスポートなしでの迅速なコード検証に役立ちます。
# Gymを使用した基本的なIPAビルド
fastlane gym --workspace "MyApp.xcworkspace" --scheme "MyApp"
# エクスポート方法を指定したビルド
fastlane gym --export_method app-store
# IPAエクスポートなしのアーカイブのみビルド
fastlane gym --skip_package_ipa
Gymfileは、すべてのビルドパラメータを構造化されたRuby形式で保存するFastlane設定ファイルです。コマンドラインでフラグを渡すのとは異なり、Gymfileを使用すると設定をリポジトリにコミットし、すべての開発者とCIが同一のビルド設定を使用することを保証できます。
# Gymfile — ビルド設定
workspace("MyApp.xcworkspace")
scheme("MyApp")
export_method(:app-store)
configuration("Release")
output_directory("./build")
output_name("MyApp.ipa")
include_symbols(true)
include_bitcode(false)
Gymfileのexport_methodパラメータは、Apple Developer Portalのプロファイルタイプに対応します。App Storeリリースには:app-storeを、テストには:developmentまたは:ad-hocを使用します。configurationパラメータはビルド設定を定義します:リリース用のReleaseまたはデバッグビルド用のDebug。
include_bitcodeパラメータは、IPAへのビットコードの組み込みを制御します。AppleはwatchOSおよびtvOSアプリケーションにビットコードを要求していましたが、iOSではバイナリサイズを削減するためにこのパラメータを無効にできます。include_symbolsは.dSYMシンボルデバッグファイルを含め、App Store Connectまたはサードパーティの監視サービスからのクラッシュログのシンボル化に必要です。
追加のGymfileパラメータには、カスタムplistエクスポートファイル用のexport_options_plist、過剰なログ出力を抑制するsilent、一時ビルドディレクトリを指定するbuild_pathが含まれます。これらのパラメータは、特定のアーティファクト要件を持つ複雑なCI/CDパイプラインにGymを統合する際に役立ちます。
コマンドインターフェースGymには、典型的なビルドシナリオのための基本パラメータと、動作を精密に調整するための拡張フラグが含まれています。ほとんどのパラメータはコマンドラインとGymfileの両方を介して渡すことができ、コマンドライン引数が設定ファイルより優先されます。
パラメータなしのfastlane gymコマンドは、Gymfileの設定を使用するか、カレントディレクトリのプロジェクトを自動的に検出します。複数のターゲットを持つプロジェクトの場合、正しいターゲットビルド設定を選択するために--schemeと--workspaceを指定する必要があります。
迅速なデバッグビルドには、fastlane gym --export_method developmentを使用します — DevelopmentプロファイルでIPAをビルドし、開発者デバイスにインストールします。App Store用のIPAビルドには、--export_method app-storeフラグとDistribution証明書が必要で、これらはMatchまたはKeychainで事前に設定しておく必要があります。
# カスタム名でのApp Store向けビルド
fastlane gym --export_method app-store --output_name "Release_1.0.ipa"
# アーカイブ前にクリーンするビルド
fastlane gym --clean --configuration Debug
# IPAなしのシミュレーター用ビルド
fastlane gym --skip_package_ipa --destination "generic/platform=iOS Simulator"
--cleanフラグは、開始前に以前のビルドの一時ファイルを削除し、古いキャッシュの使用を防ぎ、クリーンなビルドを保証します。--destinationフラグは、ターゲットプラットフォーム(iOS Simulator、iOS Device、macOS Catalyst)を指定できます。
| Gymパラメータ | 目的 | 値の例 |
|---|---|---|
| --scheme | ビルドするXcodeスキーマを選択 | MyApp |
| --export_method | プロファイルのエクスポート方法 | app-store, ad-hoc |
| --configuration | ビルド設定 | Release, Debug |
| --clean | ビルド前にクリーニング | フラグ |
| --output_name | 出力IPAファイル名 | App_1.0.ipa |
GymのCI/CD統合は、継続的デリバリーを目指すiOS開発チームにとって標準的なプラクティスです。Gymは、テストフェーズの後、TestFlightまたはApp Storeへの提出前に、GitHub Actions、GitLab CI、Bitrise、Jenkinsのパイプラインで実行されます。
典型的なiOS CI/CDパイプラインには以下が含まれます:リポジトリのクローン、CocoaPodsまたはSPMによる依存関係のインストール、Matchによる証明書の設定、GymによるIPAビルド、PilotまたはDeliverによるアップロード。GitLab CIはGitLabの継続的インテグレーションシステムで、リポジトリへのプッシュごとにビルドを実行します。
# GitLab CIでのビルドステップの例
fastlane gym --scheme "MyApp" \
--export_method app-store \
--output_directory "$CI_PROJECT_DIR/build"
# IPAをビルドアーティファクトとして保存
cp "build/MyApp.ipa" "$CI_PROJECT_DIR/artifacts/"
CIでGymを正しく動作させるには、xcodebuildが証明書を含むKeychainにアクセスできる必要があります。これはGymを実行する前にsecurity unlock-keychainコマンドで行います。Matchを使用する場合、証明書は自動的にインストールされ、個別のKeychain設定は不要です — Matchがビルド用の一時的なキーチェーンを作成します。
IPAビルドが成功した後、それは後続のパイプラインステップに渡すことができます:Pilotを介したTestFlightへのアップロード、またはDeliverを介したApp Store Connectへの送信。CIシステムの環境変数を設定して、FASTLANE_APPLE_API_KEYやMATCH_PASSWORDを含むApple Developerの認証情報を保存し、すべてのパイプラインステージがインタラクティブな入力なしで動作するようにします。
Gymを使用する際、開発者はしばしばxcodebuildの設定ミス、証明書の欠落、またはXcodeバージョンの非互換性に関連するエラーに遭遇します。エラー診断は、各コマンドの完了後にコンソールに出力される完全なビルドログの分析から始まります。
エラー「error: No matching provisioning profiles found」は、選択されたエクスポート方法に適切なProvisioning Profileがないことを示します。解決策:MatchまたはKeychainに指定されたexport_methodの有効なプロファイルが含まれていることを確認してください。Provisioning Profileは、IPA署名を成功させるために、アプリケーション識別子と証明書タイプ(DevelopmentまたはDistribution)に一致する必要があります。
エラー「error: Signing for requires a development team」は、プロジェクトに開発チームが指定されていない場合に発生します。解決策:プロジェクトのビルド設定にDEVELOPMENT_TEAMを追加するか、export_team_idパラメータを介してGymfileでteam_idを指定します。これは特に複数のApple Developerアカウントで動作するプロジェクトに関連します。
エラー「error: Multiple commands produce...」の場合、ワークスペース内の異なるターゲット間で出力ファイルの競合が発生します。解決策:XcodeプロジェクトのBuild Settingsで各ターゲットに一意の出力パスを設定するか、Xcode 14以降でデフォルトで有効になっている新しいビルドシステムを使用します。Gymは--use_legacy_build_systemフラグを介して両方のオプションをサポートしています。
よくある質問
Gymはxcodebuildプロセスを自動化し、手動のArchiveおよびExport手順を排除します。Xcodeとは異なり、Gymはすべてのマシンで同一のビルドパラメータを保証し、詳細なログを生成し、グラフィカルインターフェースを開く必要なしにCI/CDパイプラインに統合します。
Gymは4つの方法をサポートしています:development(デバッグ用)、app-store(公開用)、ad-hoc(限られたデバイスでのベータテスト用)、enterprise(企業内In-House配布用)。方法は--export_methodパラメータまたはGymfileのexport_methodで設定します。
IPAサイズを減らすには、ユニバーサルバイナリ生成のためにthinningパラメータを指定した--export_options_plistを使用し、include_bitcode(false)でビットコードを無効にし、クラッシュログが不要な場合は--include_symbols falseでシンボルストリッピングを設定します。
CIでのCode Signingエラーは通常、Keychain内の証明書の不足が原因です。解決策:自動証明書インストールのためにMatchを設定するか、Gymを実行する前にsecurity unlock-keychainコマンドを追加します。MATCH_PASSWORD変数がCI環境に渡されていることを確認してください。
はい、GymはiOSだけでなく、macOS、tvOS、watchOSアプリケーションのビルドもサポートしています。macOSの場合は、--platform macosパラメータでプラットフォームを指定するか、Xcodeで対応するスキーマを設定します。Gymはターゲットプラットフォームに応じて正しいアーカイブ形式を自動的に選択します。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。