CI/CD(Continuous Integration / Continuous Delivery)とは、コード変更のたびにアプリケーションを自動的にビルド、テスト、デリバリーするプラクティスです。Statista(2025)によると、モバイル開発チームの80%がCI/CDを利用しています。この記事では、人気のCIツール、モバイルビルド自動化のためのFastlane、さらにCanary ReleaseとFeature Flagsについて解説します。
重要ポイント
Continuous Integrationは、モバイルアプリのCI/CD自動化の基盤です。各開発者が1日に複数回、コードを共有リポジトリにマージするプラクティスです。プッシュのたびにCIサーバーが自動的にプロジェクトをビルドし、テストを実行します。テストが失敗した場合、ビルドは破損とみなされ、チームはすぐに問題を修正します。CIは「自分のマシンでは動く」という状況を防止し、ある開発者のコードが他の開発者のコードを壊すのを防ぎます。
Build Pipeline — プッシュごとに実行される一連のステップ:コードリンティング → 単体テスト → debug APK/IPAビルド → 統合テスト → リリースビルド。各ステップは前のステップが成功した後にのみ実行されます。ビルド成果物(APK、IPA、AAB、テストレポート)は保存され、ダウンロード可能です。
Continuous Delivery — コードは自動的にビルド・テストされますが、本番リリースの判断は人間が行います。Continuous Deployment — 成功したビルドはすべて自動的に本番リリースされます。モバイルアプリでは、TestFlightやInternal Testingを介したCD(ストアへの配信)が一般的で、公開の最終判断は開発者やマネージャーが行います。Staging — 本番に可能な限り近い環境で、リリース前にビルドをテストするために使用されます。
GitHub Actionsは、GitHub上でモバイルアプリを自動化するための組み込みCI/CDシステムです。ActionsはYAML設定(.github/workflows)を使用してパイプラインを定義します。モバイル開発向けの既製アクションが利用可能:actions/setup-java、Android用gradle-build-action、iOS用xcodebuild-action。GitHub Actionsはプライベートリポジトリに月2000分の無料枠を提供します。
例:Androidワークフローには、コードチェックアウト、JDK 17セットアップ、Gradle依存関係のキャッシング、lintと単体テストの実行、APKビルド、成果物のアップロードが含まれます。iOSの場合 — チェックアウト、Xcodeセットアップ、pod install、XCTest実行、アーカイブ、IPAエクスポート。GitHub Actionsは通知のためにGitHub Releases、Slack、Telegramと連携します。
GitLab CIは、.gitlab-ci.ymlで設定するGitLabの組み込みCI/CDシステムです。GitLab CIはランナー(ジョブを実行するエージェント)を使用します。モバイル開発では、共有ランナー(Android用Linux)または独自ランナー(iOS用macOS)を使用できます。GitLab CIは並列ジョブ、成果物、環境、本番リリースの手動承認をサポートしています。
Bitriseはモバイルアプリ自動化に特化したCI/CDプラットフォームです。BitriseはAndroid、iOS、Flutter、React Native向けの既製Stepsを提供:Gradle Runner、Xcode Archive、Flutter Test、CocoaPods Install。BitriseはiOSのコード署名を自動設定し(Codesigndoc経由)、Xcode、Android SDK、Flutterなどのツールがプリインストールされた仮想マシンを提供します。
Bitriseの利点:ビジュアルWorkflowエディターによる簡単設定、並列ビルドのサポート、Firebase Test Lab、App Store Connect、Google Play Consoleとの連携。Bitriseは個人プロジェクトに月90分の無料枠を提供します。IT SectrではすべてのモバイルプロジェクトにBitriseを使用しています — GitHub Actionsの手動設定と比較してCI/CDを大幅に簡素化します。
| 基準 | GitHub Actions | GitLab CI | Bitrise | CircleCI |
|---|---|---|---|---|
| 専門性 | 汎用 | 汎用 | モバイル | 汎用 |
| iOS用macOS | あり(macOSランナー) | 独自ランナー | あり(組み込み) | あり(macOS) |
| 無料枠 | 2000分/月 | 400分/月 | 90分/月 | 6000分/月 |
| Fastlane連携 | run script経由 | run script経由 | 既製Step | run script経由 |
| コード署名 | 手動設定 | 手動設定 | 自動 | Fastlane経由 |
| 並列ビルド | あり | あり | あり | あり |
Fastlaneは、iOSとAndroid向けのモバイルアプリ自動化ツールで、Rubyで書かれています。Fastlaneは200以上の既製アクションと、Fastfileを介してシナリオを記述するDSLで構成されています。Fastlaneはすべてのモバイル開発者が手動で行うタスク(コード署名、スクリーンショット生成、TestFlightやGoogle Playへのアップロード、証明書とプロビジョニングプロファイルの管理)を解決します。
Lane — Fastfile内の名前付きシナリオ。例:lane :release do — リリース公開のためのアクション連鎖。Match — 暗号化されたGitリポジトリを介して証明書とプロビジョニングプロファイルを安全に保存・同期するツール。Gym — iOSアプリのビルドとアーカイブ(xcodebuildのラッパー)。Pilot — TestFlightでのビルドアップロードと管理。Deliver — App Store Connectへのアプリとメタデータのアップロード。Snapshot — 全言語での自動スクリーンショット生成。Screengrab — Android向け自動スクリーンショット生成。
AndroidのFastfile例:lane :betaはgradle(assembleRelease)を呼び出し、次にテスターへの配布のためにfirebase_app_distributionを呼び出します。iOSの場合:lane :betaはmatch(証明書ダウンロード)、gym(アーカイブ)、pilot(TestFlightへのアップロード)を呼び出します。FastlaneはローカルでもCIサーバーでも実行可能で、あらゆるモバイルプロジェクトで汎用的なツールとなります。
Canary Releaseは、完全リリース前にアプリの新バージョンを少数のユーザー(1〜5%)に展開するCI/CD自動化戦略です。Google Play ConsoleではStaged Rolloutを通じて実装:5%のユーザーにアップデートを公開し、クラッシュとメトリクスを監視し、問題がなければ割合を増やします。App Store ConnectではPhased Release for Automatic Updatesを通じて行います。
A/B Testing — ランダムなユーザーグループで1つの機能の2つのバージョンを比較します。モバイル開発では、Feature Flags、Firebase Remote Config、またはサーバーサイドロジックを通じてA/Bテストが実施されます。Canary ReleaseとA/Bテストは、新機能展開時のリスクを最小限に抑えます。
Feature Flag(Feature Toggle) — 新しいコードをデプロイせずに関数を条件付きで有効化します。Feature Flagはコード内のチェックです:if (featureFlag.isEnabled()) { /* 新しいコード */ } else { /* 古いコード */ }。フラグはLaunchDarkly、Split.io、Firebase Remote Configなどのサービスを通じて管理されます。Feature Flagsにより、機能がユーザーに公開準備できていなくても、開発者はコードをmainにマージできます。
LaunchDarkly — 最も人気のあるFeature Flags管理プラットフォーム。LaunchDarklyはiOS、Android、Flutter、React Native向けのSDKを提供します。特定のユーザー、セグメント、地域、または視聴者の割合に対して機能を有効にできます。Feature Flagsはkill switchとしても使用され、アプリの新バージョンをリリースせずに問題のある機能を即座に無効化できます。
よくある質問
コードがGitHubにある場合はGitHub Actionsから始めましょう。Actionsはパブリックリポジトリでは無料で、AndroidとiOS(macOSランナー)の組み込みサポートがあり、既製アクションの豊富なエコシステムがあります。モバイル特化の場合はBitriseを選びましょう。
いいえ、CIサービス(GitHub Actions、Bitrise、CircleCI)はmacOSランナーを提供します。使用時間に応じて課金されます。ローカルでのFastlaneデバッグにはMacが必要ですが、CIはクラウドで実行できます。
Canary Release — 安定性確認のために一部のユーザーに新バージョンを展開。A/Bテスト — 1つの機能の2つのバリアントを比較して最適な方を選択。Canaryは信頼性、A/Bはコンバージョンに関するものです。
Fastlaneは必須ではありませんが、強く推奨されます。Fastlaneなしでは、手動でxcodebuildを実行し、証明書を管理し、Webインターフェースを介してビルドをアップロードする必要があります。Fastlaneはこれらすべてのタスクを1つのコマンドで自動化します。
Matchは、iOSのCode Signing証明書を管理するためのFastlaneツールです。Matchは証明書とプロビジョニングプロファイルを暗号化されたGitリポジトリに保存し、すべての開発者とCIサーバー間で同期します。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。