FastlaneはiOSおよびAndroidアプリのビルド、テスト、公開を自動化するオープンソースツールです。コード署名、ビルド、ストアへのアップロードのために10数のコマンドを手動で実行する代わりに、開発者はFastfileに全プロセスを記述し、卒のコマンドで実行します。Fastlane Docs, 2025によると、このツールは世界中で150万以上のプロジェクトで使用されています。Fastlaneは、App Store Connect、Google Play Console、およびコード署名システムを扱うユーティリティを統合しています。
ポイント
Fastlaneは、Rubyで書かれMITライセンスで配布されるモバイルビルド自動化ツールです。モバイル開発者の常來任務——アプリのビルド、テスト実行、スクリーンショット作成、コード署名、App StoreやGoogle Playへのバイナリアップロードを自動化します。15〜20の手動コマンドの代わりに、開発者はシナリオ名を指定した卒のfastlaneコマンドを実行するだけです。
Fastlaneは、Xcodeのユーティリティ(xcodebuild、xcrun)およびAndroid SDK(gradlew、apksigner、bundletool)のラッパーとして動作し、両プラットフォームに統一インターフェースを提供します。これは、同じアプリのiOSとAndroidバージョンをメンテナンスするチームにとって特に価値があります——同じFastfileで両プラットフォームのビルドをパラメータの小さな違いだけで記述できます。
GitHubによると、Fastlaneは39,000以上のスターを持ち、モバイル開発における自動化の標準となっています。このツールはコミュニティとGoogleがメンテナンスしており、AndroidアプリをGoogle Play Consoleに配信する推奨方法としてFirebaseに統合されています。
Fastlaneのアーキテクチャは3つのレベルで構築されています: actions(基本コマンド)、lanes(シナリオ)、およびツール(専門ユーティリティ)。ActionsはFastlaneの個々の機能で、それぞれが特定の動作を実行します: スクリーンショット作成、IPAビルド、TestFlightへのアップロード。Lanesは複数のactionsをFastfileに記述された順序シナリオに組み合わせます。
ActionsはFastlaneの構造ブロックです。各actionはパラメータを受け取り、1つのタスクを実行します。例えば、gym actionはiOSアプリをビルドし、scanはテストを実行し、pilotはビルドをTestFlightにアップロードします。Fastlaneには200以上の組み込みactionsがあり、各actionのドキュメントはfastlane action [名前]コマンドで利用できます。
組み込みactionsで不十分な場合、開発者はRubyでcustom actionを作成し、Fastfileに組み込むことができます。Custom actionsはFastlaneプラグインを通じて配布され、Rubygemsに公開され、プロジェクトルーツのFastfilePluginファイルを通じてインストールされます。
Laneは、複数のactionsを論理的な順序に組み合わせた名前付き自動化シナリオです。Laneは他のライン(private lanes)を呼び出し、パラメータを渡し、エラーを処理できます。これにより、シナリオの階層構造を構築できます: 基本ビルドライン、デプロイライン、完全なCI/CDサイクルライン。
Fastlaneには、モバイル自動化の特定の任務を解決する専門ツールが用意されています。これらのツールは、lanes内のactionとして、またはコマンドラインから直接実行できます。iOSおよびAndroidのCI/CDの主要なニーズをカバーする4つの主要ツールを見ていきましょう。
| ツール | 用途 | コマンド |
|---|---|---|
| scan | iOSシミュレータでのUnitテストおよびUIテストの実行 | fastlane scan |
| gym | iOS用IPAまたはAPPファイルのビルド | fastlane gym |
| match | Gitを介した証明書とプロビジョニングプロファイルの同期 | fastlane match |
| deliver | App Store Connectへのバイナリとメタデータのアップロード | fastlane deliver |
| snapshot | 異なるデバイスでのスクリーンショットの自動生成 | fastlane snapshot |
ScanはXcodeテストの実行を簡潔にし、適切なシミュレータを自動選択し、レポートをフォーマットします。Gymは最適なコンパイルフラグでアプリをビルドし、異なるビルドタイプ(development、adhoc、appstore)に対するexportOptions.plistをサポートします。Deliverでは、バイナリだけでなく、スクリーンショット、説明文、バージョン、価格を卒のメタデータファイルでアップロードできます。
Matchツールは別注です——チーム内のiOS証明書の保管と同期の問題を解決します。Matchは証明書とプロビジョニングプロファイルをGitリポジトリに暗号化して保管し、開発者はfastlane matchを実行するだけで自動取得できます。これにより、各作業環境の手動設定が不要になります。
Snapshotは、異なるデバイスおよび言語でモバイルアプリのスクリーンショットを自動作成するツールです。SnapshotはiOSシミュレータでUIテストを実行し、テストの各ステップで画面をキャプチャします。結果はfastlane/screenshotsディレクトリに保存され、deliverを通じてApp Store Connectにアップロードできます。
AndroidではscreengrabがAndroidエミュレータで同様の機能を提供します。両ツールともローカライゼーションをサポートしており、各言語のスクリーンショットが作成されるため、多言語アプリストア用の素材を簡単に準備できます。
iOSプロジェクトでは、FastlaneはGemfile(fastlane gemのインストール)とfastlaneディレクトリのFastfileを通じて設定します。初期設定はfastlane initコマンドで実行され、基本ディレクトリ構造を作成し、App Store Connectのデータを設問し、主要なlanesを含むFastfileテンプレートを生成します。
iOSの場合、最初に実行すべき主要コマンドはfastlane matchです。証明書とプロビジョニングプロファイルを取得した後、Fastlaneでアプリのビルド(gym)、テスト実行(scan)、バイナリアップロード(pilotまたはdeliver)が可能になります。
# iOSアプリ用Fastfile
default_platform(:ios)
lane :build do
cocoapods
scan(scheme: 'App', devices: ['iPhone 15'])
gym(scheme: 'App', export_method: 'app-store')
end
lane :deploy do
match(type: 'appstore')
build
pilot(skip_waiting_for_build_processing: true)
slack(message: '新バージョンがTestFlightにアップロードされました')
end
TestFlightを使用する場合は、pilot actionを使います——IPAをアップロードし、テストャーを管理します。Fastlaneはupload_to_testflight(pilotのシノニム)をサポートし、Appleがビルドを処理するまでの待ち時間(5〜30分)を自動処理します。
Androidプロジェクトでは、Fastlaneは同様に設定されますが、Xcodeツールの代わりにGradleとAndroid SDKが使用されます。Android用FastlaneはAPKおよびAABのビルド、apksignerまたはjarsignerによる署名、インスツルメンテッドテストの実行、Supply actionを通じたGoogle Play Consoleへのアップロードをサポートしています。
主な違いは、Androidビルドでは、matchを通じた証明書管理が不要なことです(Androidの署名は別途保管されるKeystoreで管理されます)。Android用Fastlaneはgradle actionを使って任意のGradleタスクを実行し、supply actionを使ってGoogle Playと連携します。
# Androidアプリ用Fastfile
default_platform(:android)
lane :build do
gradle(task: 'clean assembleRelease')
gradle(task: 'testReleaseUnitTest')
end
lane :deploy do
build
supply(
track: 'internal',
aab: 'app/build/outputs/bundle/release/app-release.aab'
)
end
Google Play Consoleを使用するには、Google Play APIへのアクセスを持つGoogle Cloudサービスアカウントが必要です。Fastlaneは、SUPPLY_JSON_KEY環境変数またはsupply actionのjson_keyパラメータを通じてサービスアカウントのJSONキーを受け付けます。公開トラックは、internal、alpha、beta、productionから選択できます。
Fastlaneは、Rubyスクリプトを実行できる任意のCI/CDシステムと統合できます: Jenkins、Travis CI、GitHub Actions、GitLab CI、Bitrise、CircleCI。統合は、fastlane gemをインストールし、パイプラインのスクリプトステージでfastlane [lane_name]コマンドを実行するだけです。
CI/CDでは、機密データを保管する環境変数の設定が重要です: MATCH_PASSWORD(証明書暗号化パスワード)、FASTLANE_USER(Apple ID)、FASTLANE_PASSWORD(Apple IDパスワード)。Travis CIでは環境変数がtravis encryptで暗号化され、GitHub ActionsではリポジトリのSecretsを通じて管理されます。
推奨される方法は、CI/CDでfastlane matchをreadonlyフラグ付きで使用し、証明書リポジトリへの意外な変更を防ぐことです。Androidでは、Base64エンコードされ環境変数に保存されたKeystoreを使用し、before_installステージで復号して一時ファイルに保存します。
Fastlane Matchは、iOS証明書とプロビジョニングプロファイルの管理を自動化するツールで、チームにとって最も価値のあるFastlane機能の一つです。Matchは暗号化されたGitリポジトリを作成し(または既存のものを使用し)、すべての証明書とプロファイルを保管し、開発者とCI/CDサーバー間で同期します。
Matchは5つのプロファイルタイプをサポートしています: development、adhoc、appstore、enterprise、developer_id。各タイプはリポジトリ内の独立したディレクトリに保管されます。fastlane match developmentコマンドは開発証明書をローカルマシンにインストールし、fastlane match appstoreはCIビルド用のApp Storeプロファイルをインストールします。
# FastfileでのMatchの使用
lane :setup_signing do
match(
type: 'appstore',
readonly: true,
git_branch: 'main'
)
end
lane :update_profiles do
match(
type: 'development',
force: true,
app_identifier: ['com.example.app', 'com.example.app.watchkitapp']
)
end
Matchのセキュリティは、Gitコミット前にすべてのファイルを暗号化することで確保されます。暗号化パスワードはMATCH_PASSWORD環境変数で設定され、チーム全員で共有される必要があります。MatchはOpenSSLを使用して暗号化を行い、パスワードをリポジトリ内に明文で保管しません。
よくある質問
FastlaneはiOSおよびAndroidアプリ用のOpen Source自動化ツールです。卒の構成ファイルFastfileおよび組み込みツールセットを通じて、ビルド、テスト、コード署名、App StoreやGoogle Playへの配信を自動化します。
Fastlaneの主要ツール: scan(テスト)、gym(iOSビルド)、match(証明書)、deliver(App Store)、pilot(TestFlight)、snapshot(スクリーンショット)、supply(Google Play)、frameit(スクリーンショットのフレーム)。各ツールは、lane内のactionまたはコマンドラインから利用できます。
gem fastlaneをインストールし、プロジェクトルーツでfastlane initを実行します。Fastfileにビルド(gym)やテスト(scan)のlanesを設定します。iOSの場合はMatchを設定し、デプロイラインにはpilotまたはdeliverを追加します。
fastlane initをパッケージ名を指定して実行します。gradle actionを使ってGradleタスク(assembleRelease、testReleaseUnitTest)を実行します。Keystoreを環境変数で設定し、supply actionを使ってAABまたはAPKをGoogle Play Consoleの必要なトラックにアップロードします。
CI/CDサーバーにgem fastlaneをインストールし、パイプラインのスクリプトステージでfastlane [lane_name]コマンドを追加します。FASTLANE_USER、FASTLANE_PASSWORD、MATCH_PASSWORDをCI/CDのシークレット変数に設定します。CIでは、証明書の意外な変更を防ぐためにmatch readonlyを使用します。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。