iOS開発において、パッケージ作成とリリースは最も時間がかかり、開発者の負担になりやすい工程です。ローカルでのビルドは開発マシンのリソースを占有し、発熱や動作の重さの原因にもなります。リモートのMac miniにGitLab Runnerを立ててCI/CDの自動化パイプラインを構築すれば、こうした悩みを大幅に軽減できます。本記事では、その手順をやさしく解説します。
なぜリモートMac miniで構築するのか
iOSの自動ビルド方式には、ローカルで手動実行する方法、クラウドの共有Runnerを使う方法、そして専用のリモートMacを用意する方法があります。どの方式にも向き・不向きがあります。
| 観点 | ローカル手動ビルド | リモートMac mini(CI/CD) |
|---|---|---|
| 開発効率 | 低い(作業が止まりやすい) | 高い(バックグラウンドで実行可能) |
| 環境の一貫性 | ばらつきが出やすい | 同じ環境で再現しやすい |
| ビルド速度 | 手元のマシン性能に依存 | 専用マシンで高速化しやすい |
| チームでの共有 | 個人環境に依存しがち | 誰でも同じ手順で実行できる |
使用場景:いつこの構成が役立つか
以下のような場面では、リモートMac mini+GitLab Runnerの組み合わせが特に有効です。
- 毎日・毎週のTestFlight配布: コミットやマージをトリガーに、自動でアーカイブ〜アップロードまで行いたい場合。
- 複数人での開発: メンバー全員が同じビルド手順・同じ証明書環境でアプリを出したい場合。
- ローカルマシンの負荷を抑えたい場合: ビルドはクラウドのMacに任せ、手元のPCではコード編集やデバッグに集中したい場合。
構築の流れ(手順の概要)
大まかには次の4ステップで、リモートMac mini上にGitLab RunnerとiOS自動ビルド環境を整えられます。
- VNCなどでリモートMac miniに接続する
- GitLab Runnerをインストールし、プロジェクトに登録する
- Fastlaneを導入し、ビルド・アップロードを自動化する
- リポジトリに
.gitlab-ci.ymlを追加し、CIの流れを定義する
ステップ1:VNCでリモートMac miniに接続する
まず、運用するリモートMacにアクセスできる必要があります。VNCMacなどのクラウドMacサービスでは、macOSの「画面共有」やVNCクライアントから、数秒で接続できます。ディスプレイのない「ヘッドレス」構成でも、通常のMacと同じように操作してセットアップできます。
ヒント:VNCMacのM4インスタンスでは、高解像度の画面同期と低遅延での操作が可能です。
ステップ2:GitLab Runnerのインストールと起動
リモートMacのターミナルで、次のコマンドを実行してください。
brew install gitlab-runner
gitlab-runner install
gitlab-runner start
install と start は、Runnerをサービスとして常時起動させるための手順です。ユーザー権限で実行する場合は sudo を使わないようにしてください。iOSシミュレーターを動かす場合、ユーザーでログインした状態で動かす必要があるためです。
GitLabの対象プロジェクトで、Settings > CI/CD > Runners を開き、表示される「Registration token」をコピーします。続いて、リモートMacのターミナルで次を実行します。
gitlab-runner register
対話形式で以下を入力します。
- GitLab instance URL: 利用しているGitLabのURL(例:
https://gitlab.com/) - Registration token: 先ほどコピーしたトークン
- Executor: shell を選んでください。iOSビルドでは、Xcodeや証明書に直接アクセスするため、shellが適しています。
- Tag: 例として
iosやxcodeを付けておくと、後でジョブごとに「このRunnerで実行」と指定しやすくなります。
ステップ3:Fastlaneで自動ビルド・アップロードを定義する
プロジェクトのルートで fastlane init を実行し、Fastfile を用意します。その中に、たとえば lane :beta を定義し、バージョン番号の更新、Archiveの作成、TestFlightへのアップロードまでを一連の処理として書きます。こうすることで、CIから bundle exec fastlane beta を呼び出すだけで、リリース用のビルドと配布が自動化されます。
ステップ4:.gitlab-ci.yml でパイプラインを定義する
リポジトリのルートに .gitlab-ci.yml を置き、どのブランチでどのジョブを動かすかを設定します。
stages:
- build
build_job:
stage: build
tags:
- ios
script:
- bundle install
- bundle exec fastlane beta
only:
- master
tags: - ios は、先ほど登録したRunnerのタグです。これにより、リモートMac miniのRunnerだけがこのジョブを実行するようになります。
証明書と署名まわりのポイント
自動ビルドで最もつまずきやすいのが、証明書とプロビジョニングプロファイルの管理です。Fastlane Match を使うと、専用のGitリポジトリに証明書とプロファイルをまとめて保管し、チーム全員やCI環境から同じセットを参照できます。リモートMac上で fastlane match readonly を実行すれば、ビルドに必要な署名まわりを一括で揃えられます。「証明書が見つからない」といったエラーを防ぐため、できるだけMatchの導入を検討することをおすすめします。
まとめ
リモートMac miniにGitLab Runnerを構築することで、開発マシンの負荷を減らしつつ、安定した・再現性の高い・高速な自動ビルド環境を手に入れられます。VNCMacのM4クラウドMacと組み合わせれば、これまで30分かかっていたパッケージ作成を数分に短縮することも可能です。
まだクラウド上でCI/CDを試していない方は、まずはリモート接続とRunnerの登録から始めてみてください。わずかな設定で、日々のリリース作業がぐっと楽になります。