Build Serverとは、ソースコードを自動的にコンパイルし、テストを実行し、デプロイ可能なアーティファクトを作成する専用サーバーまたは仮想マシンです。CI/CDインフラストラクチャの中央ノードとして機能し、ビルドタスクを引き受けて開発者のローカルマシンを解放します。GitLab Global DevSecOps Report, 2025によると、67%のチームが安定性とビルド速度を向上させるために専用ビルドサーバーを利用しています。
重要ポイント
Build Server(ビルドサーバー)は、コードのコンパイルとリリース準備に関連するタスクを自動的に実行するために設計された特殊なコンピューティングシステムです。開発者のマシンでのローカルビルドとは異なり、サーバーはリポジトリのコピーを操作し、クリーンな環境と固定された依存関係バージョンを使用します。
ビルドサーバーは継続的インテグレーション実践の重要なコンポーネントです。すべてのコミットが、誰が行ったかに関係なく同じ検証プロセスを通過することを保証します。これにより“自分のマシンでは動く”問題が解消され、統一された品質基準が確保されます。
Google DORA, 2025によると、専用ビルドサーバーを使用するチームは、変更確認時間を数時間から数分に短縮しています。これは、エンドユーザーへの機能や修正の提供速度に直接影響します。
モバイルアプリケーションのビルドには多大なリソースが必要です。KotlinやSwiftのコンパイルには5分から40分かかる場合があります。開発者のローカルマシンでビルドを実行すると、完了するまで生産的に作業できません。ビルドサーバーは開発者を他のタスクに解放することでこの問題を解決します。
実際には、これらの用語は同義語として使用されることがよくありますが、ニュアンスの違いがあります。CIサーバー(Jenkins、CircleCI)はパイプラインを管理するシステムであり、ビルドサーバーはそれらのパイプラインが実行される物理的または仮想ホストです。1つのCIサーバーで複数のビルドエージェント(build slaves)を管理できます。
典型的なビルドサーバーは複数のコンポーネントで構成され、それぞれがプロセスの特定の段階を担当します。アーキテクチャを理解することで、チームの負荷に応じてインフラストラクチャを適切にスケールできます。
実行コア(エグゼキュータ) — ビルドタスクを実行します。Dockerコンテナ、仮想マシン、またはホスト上で直接動作します。ジョブキューは並列ビルドの優先順位を管理します。アーティファクトストレージは結果(APK、IPA、AAB)を後で公開するために保存します。
作業を高速化するために、ビルドサーバーはエージェントのプールを管理できます。各エージェントはビルドを実行できる独立したマシンまたはコンテナです。負荷が増加すると、自動スケーリング(auto-scaling)によってクラウドに新しいエージェントが追加されます。たとえば、Kubernetesプラグインを使用したJenkinsは、ビルドごとに動的にpodを作成できます。
pipeline {
agent {
kubernetes {
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: android-sdk
image: openjdk:17-jdk
command: ['sleep','infinity']
"""
}
}
stages {
stage('Build') {
steps {
sh './gradlew assembleDebug'
}
}
}
}
ビルドサーバーは、デプロイ方法とターゲットスタックによっていくつかのカテゴリに分類されます。特定のソリューションの選択は、チームサイズ、予算、セキュリティ要件によって異なります。
Jenkins、TeamCity、Bamboo、GitLab Runner(self-hosted)— 自社のサーバーまたはVPSにインストールします。利点:構成を完全に制御でき、任意のソフトウェアを使用でき、データが社内インフラストラクチャから外部に出ることはありません。欠点:管理、アップデート、スケーリングのコスト。
GitHub Actions、CircleCI、Bitrise、Codemagic、GitLab SaaS — サーバー管理は不要です。ビルド時間またはサブスクリプションに応じて支払います。小規模チームにとっては、これが最適なスタートです。ビルド量の多い大規模プロジェクトでは、コストがセルフホスト型ソリューションを超える可能性があります。
| ソリューション | タイプ | プラットフォーム | 初期価格 |
|---|---|---|---|
| Jenkins | セルフホスト | 任意 | 無料(オープンソース) |
| GitHub Actions | クラウド | Linux、macOS、Windows | 月2000分まで無料 |
| Bitrise | クラウド | iOS、Android、Flutter、React Native | $0(月90分) |
| TeamCity | セルフホスト | 任意 | 無料(100ビルド) |
iOSの特性として、ビルドはmacOSでのみ可能です。選択肢:ラック内のMac mini、MacStadium(Macのレンタル)、macOSランナーを使用したGitHub Actions、独自のMacエージェントを持つBitrise。セルフホストのMacビルドサーバーには、高価なハードウェアの購入とそのメンテナンスが必要です。
AndroidとiOSの両方のビルドを行うモバイルプロジェクト向けに、ビルドサーバーの段階的なセットアップを見ていきましょう。ベースとして、iOS用のセルフホストランナーとAndroid用のクラウドランナーを備えたGitHub Actionsを使用します。
管理プラットフォーム(Jenkins、GitLab、GitHub Actions)を選択します。マスターノードをインストールし、SSHまたは個人アクセストークンを使用してリポジトリへのアクセスを構成します。リポジトリへのプッシュイベントで自動的にビルドを開始するWebhookを設定します。
1台以上のマシンをエージェント(slaves/runners)として登録します。Androidビルドの場合、JDK、Android SDK、GradleをインストールしたLinuxまたはWindowsでエージェントを実行できます。iOSの場合は、Xcode Command Line ToolsとCocoaPodsをインストールしたmacOSで実行します。
ステージを定義します:チェックアウト、依存関係のインストール、ビルド、テスト、アーティファクトの公開。高速化するには、依存関係のキャッシュ(Gradleキャッシュ、CocoaPodsキャッシュ、Dockerイメージレイヤー)を使用します。
name: Android Build
on:
push:
branches: [main, develop]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Cache Gradle
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
- name: Build Release APK
run: ./gradlew assembleRelease
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: app-release.apk
path: app/build/outputs/apk/release/app-release.apk
セルフホスト型とクラウド型のビルドサーバーの選択は、技術的な決定であるだけでなく、財務的な決定でもあります。コストは、ビルド量、必要な実行時間、iOS用のmacOSの必要性によって大きく異なります。
セルフホストサーバーには資本的支出(CAPEX)が必要です:機器の購入(Mac mini $699〜、サーバーラック、ネットワーク機器)、セットアップとメンテナンス。クラウドソリューションは運用的支出(OPEX)です:ビルド時間ごとの支払い。小規模チームにはOPEXが有利で、1日あたり数百のビルドがある大規模プロジェクトでは、CAPEXは6〜12ヶ月で投資回収できます。
| パラメータ | セルフホスト(Jenkins) | クラウド(GitHub Actions) | 特化型(Bitrise) |
|---|---|---|---|
| 初期費用 | $1000〜$5000 | $0 | $0 |
| 月額料金 | $50〜$200(ホスティング) | $0〜$500(時間制限) | $0〜$300(サブスクリプション) |
| macOSサポート | Mac mini + CI設定が必要 | 内蔵(macOSランナー) | 内蔵 |
| 管理 | 月5〜10時間 | 月1〜2時間 | 月1〜2時間 |
予算を立てる際には、隠れたコストを考慮してください:ソフトウェア更新、トラブルシューティング、構成バックアップ、ネットワークアーティファクトストレージの時間。セルフホスト型ソリューションの場合、基本メンテナンスコストに20〜30%を追加します。クラウドソリューションの場合、特にリリース前に、時間制限がピーク負荷をカバーしていることを確認してください。
ビルドサーバーのコストはいくつかの方法で削減できます:クラウドでスポットインスタンスを使用する(最大70%割安)、ビルド間で依存関係をキャッシュする、失敗したパイプラインの実行時間を制限する、非稼働時間中に非アクティブなセルフホストエージェントを自動シャットダウンするよう構成する。
効果的なビルドサーバーの運用には、いくつかの原則に従う必要があります。ビルド速度の最適化とインフラストラクチャの安定性は、開発チームの生産性に直接影響します。
Gradle Build Cache、C/C++用のCCache、KotlinとSwift用のインクリメンタルコンパイラ — 利用可能なすべてのキャッシュメカニズムを有効にします。リモートビルドキャッシュ(HTTPまたはS3経由)を設定して、異なる開発者やエージェントがコンパイル結果を共有できるようにします。
各ビルドはクリーンな環境で実行する必要があります。Dockerコンテナまたは一時的な仮想マシンを使用して、以前のビルドが現在のビルドに影響を与えるのを防ぎます。これにより、状態汚染の問題が解消されます。
ビルドサーバーはソースコード、署名キー、シークレットにアクセスできます。攻撃対象領域を最小限に抑え、異なるプロジェクトには分離されたエージェントを使用し、マスターノードへのアクセスを制限し、署名付きコミットを使用し、脆弱性について依存関係をチェックします。
よくある質問
小規模チームには、クラウドソリューションが最適です:GitHub Actions(月2000分まで無料)またはモバイルプロジェクト向けのBitrise。管理が不要ですぐにセットアップできます。
はい、ただし2種類のエージェントが必要です:iOS用にmacOS上、Android用にLinux/Windows上。CIサーバー(Jenkins、GitLab)は単一のインターフェースから両方のタイプのエージェントを管理できます。
Androidビルドの場合 — 最低8 GBのRAM、16 GBを推奨。iOSの場合 — 8 GBから。パイプラインが複数の並列ビルドを実行する場合、メモリは直線的にスケールします:Nビルド x 8 GB。
セルフホストサーバーは構成を完全に制御でき、ビルド時間の制限がなく(大量ビルドで投資回収)、データの分離を保証します。クラウドソリューションは中小規模のチームにとってよりコスト効果が高くなります。
はい、Flutterプロジェクトも異なるプラットフォーム向けのビルドが必要です。CodemagicはFlutter専用のCI/CDで、単一のリポジトリからAndroid、iOS、Web、Desktopビルドを同時にサポートします。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。