第1部:アプリケーションデリバリープロセスの最適化 — 少人数モバイルチームによるCI/CD導入の取り組み

Jul 9, 2025 | 第1部:アプリケーションデリバリープロセスの最適化 — 少人数モバイルチームによるCI/CD導入の取り組み

小規模なモバイルチームにおけるCI/CD導入の取り組み:GitHub ActionsとFastlaneを活用したiOSビルドの自動化、TestFlightによる効率的な配信、そして開発ワークフローの最適化。

アプリケーションデリバリープロセスの最適化:少人数モバイルチームによるCI/CD導入の道のり


I. なぜCI/CDの導入が必要なのか?


私たちのモバイルチームは少人数構成で、すべての業務をインハウスで対応しています。開発、テスト、リリースまでのすべてを、チームメンバー間で直接議論し、実行してきました。アプリのビルドはローカルマシンで行い、テスターにはケーブル経由でインストールしていました。
しかし、プロジェクトの規模が拡大するにつれ、複数の地域にいるテスターとのビルド共有や、リリース前にクライアントへ確認用に送付する必要性が高まってきました。ローカル環境でビルドし、都度手動でインストールする運用では、バージョン管理が不明瞭となり、コード品質の保証も難しく、工数がかかるのが実情です。
そこで、CI/CDを導入することで、ビルドを素早く・同期的に配信し、バージョンを明確に管理しながら、テスターやクライアントに簡単に届けられる体制の構築が不可欠だと判断しました。

 

II. 現状と導入ソリューション

1. 現在のチーム体制

Ảnh màn hình 2025-06-11 lúc 13.28.37

2. 人気のあるCI/CDツールの比較

Ảnh màn hình 2025-06-11 lúc 13.30.07

3. GitHub Actions + Fastlane を選んだ理由
● セルフホスト/ホスト型のいずれにも対応しており、将来的なスケーラビリティに柔軟に対応可能です。
● インターフェースがわかりやすく、公式ドキュメントも充実しています。
● 詳細なワークフロー設計に対応しており、カスタマイズ性が高いです。
● Fastlaneとの統合性が高く、証明書の同期、ビルド、TestFlightへのアップロードまで自動化できます。
● 無料プランでも十分なビルド時間が確保されており、初期段階の小規模チームでも安心して利用可能です。

4. 導入範囲
● iOS: TestFlight へのビルド配信
● Android: Firebase App Distribution へのビルド配信

 

III. iOS におけるアーキテクチャとワークフローの概要


GitHub Actions を活用した iOS 向け CI/CD ワークフロー

 

実装に必要な前提条件:
● Apple DeveloperアカウントのAdminまたはAccount Holder権限
● デプロイ対象のGitLab リポジトリにおけるMaintainer権限
● GitHubリポジトリ(ミラー用)におけるMaintainer権限
● GitHubリポジトリ(証明書保管用)におけるMaintainer権限

実装ステップの詳細:

1. GitLab にコードをプッシュします。
開発者は通常どおり GitLab(本番ソース管理リポジトリ)にコードをプッシュします。これは CI/CD の最初のステップであり、チームの開発習慣を変更する必要はありません。

2. GitLab から GitHub へコードをミラーリングします。
GitLab は、新しいコミットがあるたびに GitHub リポジトリへソースコードを自動ミラーするように設定します。

➔GitHub 側でミラープロジェクトを作成します。
◆ GitHub 上に空のリポジトリ(README なし)を作成します。この記事では以下のリポジトリを作成しています。
https://github.com/thevx-sanan/cicd.git
◆ GitHubでPersonal Access Tokenを発行します。
● アクセス: https://github.com/settings/tokens
● 「Generate new token」→「Generate new token (classic)」を選択し、repo とworkflow の権限を付与してトークンを作成します。

 


● 作成したトークンをコピーします。
*このトークンは一度しか表示されないため、必ず安全な場所に保存してください。

◆ 次に、GITHUB_TOKEN を GitLab の CI/CD 変数に追加します。
● CI/CD を設定したい GitLab リポジトリにアクセスします。
● Select Settings -> CI/CD -> Variablesの順に進みます。
● 変数を以下のように追加します。
Key: GITHUB_TOKEN - Value: 先ほど GitHubで生成したトークン - マスクを選択します。
➔ 続いて、.gitlab-ci.yml を設定します。

◆ .gitlab-ci.yml ファイルを作成します。

Ảnh màn hình 2025-06-11 lúc 13.44.15

➔ 最後に、ミラー処理を実行するためのランナーを設定します。
◆ GitLab Runnerをインストールします(未導入の場合)。
◆ GitLab にランナーを登録します。
サーバーまたはローカル環境(macOS、Linux、Windows いずれも可)で動作可能です。

Ảnh màn hình 2025-06-11 lúc 13.47.35

 

以下の情報を入力するよう求められます。

Ảnh màn hình 2025-06-11 lúc 13.48.52

メモ:
● mirrorは重要なタグであり、.gitlab-ci.yml 内のジョブでこのタグを使ってランナーを絞り 込んでいます。
● 複数のランナーを使用している場合、このタグによってどのランナーでジョブを実行する かを指定できます。

設定が完了したら、GitLab にコードをプッシュして動作をテストし、GitHub に更新が反映されて いるか確認してください。

3. Fastlane を使った iOS アプリのテスト実行とビルド。
GitLabからGitHubへのコードミラーリングが成功すると、GitHub ActionsのワークフローがFastlaneを通じてiOS アプリをビルドし、TestFlight にアップロードします。この一連の流れは以下のステップに分かれます。
➔ 証明書を保管するGitHub/GitLabリポジトリの作成
◆ ios-certificatesのような名前でプライベートリポジトリを作成します。
この例では以下のリポジトリを作成しました:git@github.com:thevx-sanan/ios-certificates.git

Ảnh màn hình 2025-06-11 lúc 13.51.20

◆ このリポジトリは Fastlane の match で以下の管理に使用します:
● 配布用証明書
● プロビジョニングプロファイル
➔ Bundle ID とアプリの作成(App Store Connect)
◆ アクセス:https://developer.apple.com/account/resources/identifiers/list
◆ 「Identifiers」からテスト用のバンドルIDを作成します。

 例:com.sanan.setup.cicd

Ảnh màn hình 2025-06-11 lúc 13.57.31

◆ アクセス:https://appstoreconnect.apple.com/apps
◆ App Store Connect上で対応するアプリを作成し、先ほどのバンドルIDを入力します。

Ảnh màn hình 2025-06-11 lúc 14.01.58

 

➔ App Store ConnectのAPIキーを作成します。
◆ アクセス:https://appstoreconnect.apple.com/access/integrations/api
◆ APIキーを作成し、以下の情報を保存します。
● Issuer ID
● Key ID
● APIキーのファイル(ダウンロード)は一度しか取得できないため、必ず大切に保存してください。

Ảnh màn hình 2025-06-11 lúc 14.03.43

 

4. テスターへのビルド配布
➔ プロジェクトに Fastlane をインストール(macOS)
◆ まだ Fastlaneをインストールしていない場合は、ターミナルを開いて以下を実行します:brew install fastlane
◆ 次に、GitLab リポジトリのフォルダを開き、ターミナルで以下を実行してFastlaneを初期化します:
fastlane init
◆ Fastlaneの初期化が完了したら、matchの設定を行います:
fastlane match init
◆ 次に表示される選択肢から「1(git)」を選び、設定を保存するリポジトリのGit
URL(SSH形式でコピーしたもの)を入力します:
git@github.com:thevx-sanan/ios-certificates.git

Ảnh màn hình 2025-06-11 lúc 14.05.39

◆ 次に、プロジェクトのフォルダ内にfastlaneフォルダと、Gemfile、Gemfile.lockファイルを作成します。続いて、fastlaneフォルダを開き、その中のFastfileを開きます。

Ảnh màn hình 2025-06-11 lúc 14.07.02

Ảnh màn hình 2025-06-11 lúc 14.15.45

◆ 次は、Appfileを開きます。

Ảnh màn hình 2025-06-11 lúc 14.20.59

◆ 次に、Matchfileを開き、git_urlとusernameを自分の環境に合わせて編集します。

Ảnh màn hình 2025-06-11 lúc 14.22.19

➔ macOSのローカル環境でFastlaneをテストします。
◆ 該当する値を置き換えた上で、setupフォルダ内でターミナルを開いてください。
export ASC_KEY_ID="<key_id_appstore_connect_api>"
export ASC_ISSUER_ID="<isuer_id_appstore_connect_api>"
export ASC_KEY_CONTENT="<content_appstore_connect_api>"
export MATCH_PASSWORD="<your_setup>"
export FASTLANE_APPLE_ID="<your_apple_id>"
export DEVELOPER_PORTAL_TEAM_ID="<your_apple_developer_account_id>"
export TEMP_KEYCHAIN_USER="<your_setup>"
export TEMP_KEYCHAIN_PASSWORD="<your_setup>"
 
◆ bundle exec fastlane beta_prodを実行します。
成功した実行結果の表示例:
Successfully uploaded the new binary to App Store Connect

➔ GitHub に必要な変数を設定します。
◆ 「Settings → Secrets and variables → Actions」に進み、上記の変数を設定してください。
1. ACTIONS_DEPLOY_KEY
2. ASC_KEY_ID
3. ASC_ISSUER_ID
4. ASC_KEY_CONTENT
5. MATCH_PASSWORD
6. FASTLANE_APPLE_ID
7. DEVELOPER_PORTAL_TEAM_ID
8. TEMP_KEYCHAIN_USER
9. TEMP_KEYCHAIN_PASSWORD
Note: ACTIONS_DEPLOY_KEYios certificatesリポジトリに通常のSSH を設定した際に使用する秘密鍵です。

Ảnh màn hình 2025-06-11 lúc 14.23.58

➔ GitHub Actions ワークフローの作成手順。
◆ GitHub 上で直接作成するか、またはローカルのリポジトリフォルダ内で以下のように作成します。
● .githubフォルダを作成 → workflowsフォルダを作成 → workflowsフォルダでター   ミナルを新しく開きます→ fastlane.yml

Ảnh màn hình 2025-06-11 lúc 14.25.04

Ảnh màn hình 2025-06-11 lúc 14.25.50

Ảnh màn hình 2025-06-11 lúc 14.26.12

➔ 最後に、コードをプッシュして動作をテストします。GitHubの「Actions」タブに移動してく ださい。

Ảnh màn hình 2025-06-11 lúc 14.27.05

 

IV. 第1部のまとめ

上記の詳細な手順により、小規模チームの実際の状況からiOSプロジェクトのCI/CDプロセスを段階的に実装しました。
● 開発者の習慣を変えずにGitLab上の既存ワークフローを維持します。
● GitHub Actionsを通じてTestFlightのビルドおよび配布を自動化します。
● Fastlaneを活用して証明書管理、ビルド、アプリの安全かつ効率的なアップロードを実現します。
● テスターや顧客に手動操作なしで迅速にビルドを届けます。
CI/CDの導入は、時間の節約だけでなく、メンバー数やテスト環境が増加する中で配布の安定性と管理性の向上にもつながります。

______________________________________________________________________

次の第2部では、同様のプロセスをAndroidに拡張し、Firebase App DistributionとFastlane、GitHub Actionsを組み合わせてAndroidアプリの配布を自動化する方法を解説します。
これまでCI/CDを導入したことがない方は、まずiOSパートを個人プロジェクトやステージング環境で試してみることをおすすめします。日々の開発フローに明確な違いが感じられるはずです。

📢 ベトナムオフショア開発に関するご相談は、以下のリンクよりお気軽にお問い合わせください!

🔗 無料相談・お見積もりはこちら

Written By: SanAn